Аллокация памяти разрешена только на этапе инициализации, в процессе работы динамическое выделение памяти строго запрещено.
А зачем при таких вводных выделять память динамически на этапе инициализации, когда её можно ровно также выделить статически на этапе компиляции (и забить на пляски с динамическим аллокатором)?
Сейчас сижу с телефона, когда окажусь перед своим стационарным компьютером, попробую приложить симуляции типовых схем триггера Шмитта, где такой эффект был.
Чёёёрт! ))))) Реально по промту "Напиши статью характерным для Хабра языком о том как я справился с дребезгом контактов от кнопки." DeepSeek написал заметно более интересную и живую статью!
У вас, неактуальная или нерелевантная информация. Как раз наоборот, микроконтроллеры (а тут упомянут stm32) обычно итак имеют на входе триггер Шмитта.
У триггера Шмитта та же базовая проблема. Да, он не переключится в лог.1, если вы не доведёте уровень напряжения от лог.0 до напряжения переключения. Но у него также в большинстве случаев есть такое входное напряжение, при котором приоткрывается и верх и низ.
И эту статью автор скорее всего сам писал, ибо чат-гпт выдал бы что-то на порядок лучше.
Сейчас попробую предложить DeepSeek "написать статью на Хабр про дребезг контактов и способ борьбы с ним".
Значительная часть входных буферов любых цифровых устройств представляет из себя нечто очень похожее на инвертор из двух транзисторов. Проблема в том, что если напряжение на входе этого инвертора равно примерно половине напряжения логической единицы, то (при)открытыми оказываются оба транзистора и через буфер начинает течь т.н. сквозной ток. Если фронт достаточно короткий по длительности, то это неприятное промежуточное состояние проходит быстро. Если же фронт делать пологим (как в методе, описанном автором), то возможны различные неприятные эффекты.
По этой причине, а также чтобы не городить кучу RC-цепочек с непонятным разбросом параметров, в реальности, когда требуется избавить от дребезга сразу несколько кнопок, применяют специальные микросхемы подавления дребезга вроде MC14490. Которые после первого фронта на входе, отсчитывают N тактов и лишь затем выдают значение на выходе.
Да, кстати, я уверен, что автор сгенерил в LLM эту и все предыдущие свои статьи. Но учитывая сколько танцующих с волками говорящих с копипастой читателей набежало в его первую статью, я бы сказал, что это не так уж и плохо. Надеюсь, такие статьи (я имею ввиду конкретно "как избавиться от дребезга контактов") через год-другой будут выходить на Хабре каждый день или даже каждый час. Самому автору я желаю поскорей написать статью "как подключить лампочку накаливания к батарейке", пока это не стало мейнстримом.
Дуглас Энгельбарт и Алан Кей создали первый графический интерфейс (WIMP - Windows Icoan Menu Pointer) в 1981 в Xerox PARC
Дуглас Энгельбарт никогда не работал с Аланом Кеем и никогда не работал в Xerox PARC (кроме того, сам Кей в 1981 году уже работал в Atari). В PARC в 1970 свалила половина команды Энгельбарта из его ARC. Про работу PARC сам Энгельбарт говорил так:
У меня очень сильное впечатление, что клан Xerox полностью отверг всю суть. Они брали части архитектуры, они взяли мышь, они взяли идею окон — всё это. Но бóльшую часть концепции NLS они просто отвергли.
Графический же интерфейс с окошками и рабочим столом был придуман не в 1981, а в середине 1970-х, в ходе работ над ПО для ПК Alto. Сам Xerox Alto был выпущен в 1972 году и именно он в этой статье на фото, с вертикальным монитором. В 1981 Xerox в рамках попытки монетизации решил переработать его и назвать Xerox Star (у него уже монитор выглядел классическим).
В 19 лет можно вкатиться в ембеддед только как студент-стажер.
В теории, каждый отдельный фрагмент текста, где-то с натяжкой, где-то без, можно было бы соотнести с реальностью.
Но всё полотно вместе получается как горка пазлов, где из 2-3 картинок взяли по пригрошне фрагментов.
Вот например про вкатывание в 19 лет в ембед. В теории - возможно. Если ваш папа - электронщик, учил вас программировать МК с 11 лет. И на работу в 19 вас взял ваш дядюшка.
Да, это возможно. Но! Сама история была бы принципиально иной. Типа "я ещё со школьных лет..." и т.д. Её части просто не подходят друг к другу.
Как-то оно всё подозрительно выхолощено, пустовато но при этом помпезно ))))
Меня зовут Данила, мне 21 год
По возрасту ВУЗ ещё не закончен.
Всё началось довольно банально — с книги «Электроника для начинающих»...
Бла-бла-бла, много про, в общем-то, попсовые книги. И ни слова про ВУЗ.
Даже если вы «только кодите», понимание базовых принципов схемотехники обязательно. Как минимум, чтобы не делать глупых ошибок при взаимодействии с периферией или при чтении даташитов, для изучения схемотехники могу порекомендовать известное творение - «Искусство схемотехники»
И как? Сильно помогло знание устройства токового зеркала при изучении флагов в регистрах STM32? )))) Если инженер не схемотехник с упором на аналоговую и/или силовую технику, ХиХ, вообще говоря, тоже для него - попса. Чисто, покивать, что читал, когда на кофебрейке на конференции за вашим столиком скажут "ну, хех, все мы начинали с ХиХ".
STM32 не балует новичков, в ней меньше «магии» и больше реального взаимодействия с железом на низком уровне. Многие вещи приходилось гуглить по крупицам.
Какие такие вещи в 2020...2025 году об STM32 пришлось в задачах детского кружка "гуглить по крупицам"? На текущий момент модели микроконтроллеров STM32 примерно 20 лет. Да, 20 лет активнейшего пиара. Это самый известный 32-разрядный МК в СНГ.
В 19 лет я устроился инженером-программистом. Это случилось случайно: наткнулся на вакансию, отправил резюме — и меня позвали.
Без высшего образования?
На следующий день после выхода на работу мне выдали первую задачу — написать программу для PLC-модуля...
Где STM32 с Си, HAL-ом и всем таким, а где PLC - со своими языками и своей кухней?
На следующий день после выхода на работу мне выдали первую задачу — написать программу для PLC-модуля, которая проверяет работу I2C, UART, SPI и других интерфейсов.
Каких других? PCIe-gen4? )))) И что значит "Проверяет"?
И списки-списки-списочки... :)
P.S. Пока писал пост, автор выпустил вторую за день статью "Интеграция ChatGPT в Java: распознаём автомобиль по фото". Мда, инженерно-техническая публицистика уже никогда не будет такой же, как прежде. Готовьтесь, @Exosphere, скоро такое будет каждый день час. Хотя с другой стороны - ачётакова, людям-то нравится )))))))
Ну. И чтоб без эвфемизмов: по моему мнению статья сгенерирована от и до.
Суть динамической аллокации - наскрести память там, где её недостаточно, за счёт отказа от гарантий её своевременного предоставления. Залить систему памятью с избытком, чтобы применить механизм экономии памяти и при этом не столкнуться с его ограничениями? А не проще ли просто не применять данный механизм?
Если до вас дойдёт это сообщение, я был бы рад, если бы вы написали мне в тг @flammmable_habr, либо на почту flammmable.habr@gmail.com (а лучше для надёжности и туда и туда). У меня к вам будет несколько вопросов.
Но как бы... MPLAB v8.92 в разделе About указывает, что он 2001-2013.
Мой тезис, что подобное поведение компилятора не соответствует стандарту, конечно ошибочен. Но мой тезис, что столкновение с подобной версией стандарта в начале 2010-х показывает неспешность разработки инструментария разработчика производителями чипов, ориентированных на embedded, мне кажется в силе.
это же вроде по стандарту си как раз, по крайней мере по какому древнему правилу языка
Да? Хм. Это как-то странно. Отдельного, явно выраженного блока var нет же. Есть возможность найти данное положение стандарта? Было бы очень интересно узнать что-то новое :)
А зачем при таких вводных выделять память динамически на этапе инициализации, когда её можно ровно также выделить статически на этапе компиляции (и забить на пляски с динамическим аллокатором)?
Про мексиканцев - полная шляпа, а здесь как раз таки всё по полочкам.
Сейчас сижу с телефона, когда окажусь перед своим стационарным компьютером, попробую приложить симуляции типовых схем триггера Шмитта, где такой эффект был.
Чёёёрт! ))))) Реально по промту "Напиши статью характерным для Хабра языком о том как я справился с дребезгом контактов от кнопки." DeepSeek написал заметно более интересную и живую статью!
У триггера Шмитта та же базовая проблема. Да, он не переключится в лог.1, если вы не доведёте уровень напряжения от лог.0 до напряжения переключения. Но у него также в большинстве случаев есть такое входное напряжение, при котором приоткрывается и верх и низ.
Сейчас попробую предложить DeepSeek "написать статью на Хабр про дребезг контактов и способ борьбы с ним".
Значительная часть входных буферов любых цифровых устройств представляет из себя нечто очень похожее на инвертор из двух транзисторов. Проблема в том, что если напряжение на входе этого инвертора равно примерно половине напряжения логической единицы, то (при)открытыми оказываются оба транзистора и через буфер начинает течь т.н. сквозной ток. Если фронт достаточно короткий по длительности, то это неприятное промежуточное состояние проходит быстро. Если же фронт делать пологим (как в методе, описанном автором), то возможны различные неприятные эффекты.
По этой причине, а также чтобы не городить кучу RC-цепочек с непонятным разбросом параметров, в реальности, когда требуется избавить от дребезга сразу несколько кнопок, применяют специальные микросхемы подавления дребезга вроде MC14490. Которые после первого фронта на входе, отсчитывают N тактов и лишь затем выдают значение на выходе.
Да, кстати, я уверен, что автор сгенерил в LLM эту и все предыдущие свои статьи. Но учитывая сколько
танцующих с волкамиговорящих с копипастой читателей набежало в его первую статью, я бы сказал, что это не так уж и плохо. Надеюсь, такие статьи (я имею ввиду конкретно "как избавиться от дребезга контактов") через год-другой будут выходить на Хабре каждый день или даже каждый час. Самому автору я желаю поскорей написать статью "как подключить лампочку накаливания к батарейке", пока это не стало мейнстримом.Очень гипотетически, такое может быть. Но! То, что i2c в контексте ПЛК упомянут, а ModBus или RS-485 - не упомянуты, вот этого точно не может быть.
Повторю, здесь каждую отдельную деталь можно натянуть на реальность. Но разом все - определённо нет.
Дуглас Энгельбарт никогда не работал с Аланом Кеем и никогда не работал в Xerox PARC (кроме того, сам Кей в 1981 году уже работал в Atari). В PARC в 1970 свалила половина команды Энгельбарта из его ARC. Про работу PARC сам Энгельбарт говорил так:
У меня очень сильное впечатление, что клан Xerox полностью отверг всю суть. Они брали части архитектуры, они взяли мышь, они взяли идею окон — всё это. Но бóльшую часть концепции NLS они просто отвергли.
Графический же интерфейс с окошками и рабочим столом был придуман не в 1981, а в середине 1970-х, в ходе работ над ПО для ПК Alto. Сам Xerox Alto был выпущен в 1972 году и именно он в этой статье на фото, с вертикальным монитором. В 1981 Xerox в рамках попытки монетизации решил переработать его и назвать Xerox Star (у него уже монитор выглядел классическим).
Подробней я рассказываю обо всём этом здесь.
В теории, каждый отдельный фрагмент текста, где-то с натяжкой, где-то без, можно было бы соотнести с реальностью.
Но всё полотно вместе получается как горка пазлов, где из 2-3 картинок взяли по пригрошне фрагментов.
Вот например про вкатывание в 19 лет в ембед. В теории - возможно. Если ваш папа - электронщик, учил вас программировать МК с 11 лет. И на работу в 19 вас взял ваш дядюшка.
Да, это возможно. Но! Сама история была бы принципиально иной. Типа "я ещё со школьных лет..." и т.д. Её части просто не подходят друг к другу.
Нет, не вам одному :) Я чуть выше отписался.
Охохо! Прилетело "Грубое общение. Придерживаюсь другой позиции" ))))))
Как-то оно всё подозрительно выхолощено, пустовато но при этом помпезно ))))
По возрасту ВУЗ ещё не закончен.
Бла-бла-бла, много про, в общем-то, попсовые книги. И ни слова про ВУЗ.
И как? Сильно помогло знание устройства токового зеркала при изучении флагов в регистрах STM32? )))) Если инженер не схемотехник с упором на аналоговую и/или силовую технику, ХиХ, вообще говоря, тоже для него - попса. Чисто, покивать, что читал, когда на кофебрейке на конференции за вашим столиком скажут "ну, хех, все мы начинали с ХиХ".
Какие такие вещи в 2020...2025 году об STM32 пришлось в задачах детского кружка "гуглить по крупицам"? На текущий момент модели микроконтроллеров STM32 примерно 20 лет. Да, 20 лет активнейшего пиара. Это самый известный 32-разрядный МК в СНГ.
Без высшего образования?
Где STM32 с Си, HAL-ом и всем таким, а где PLC - со своими языками и своей кухней?
Каких других? PCIe-gen4? )))) И что значит "Проверяет"?
И списки-списки-списочки... :)
P.S. Пока писал пост, автор выпустил вторую за день статью "Интеграция ChatGPT в Java: распознаём автомобиль по фото". Мда, инженерно-техническая публицистика уже никогда не будет такой же, как прежде.
Готовьтесь, @Exosphere, скоро такое будет каждый
деньчас.Хотя с другой стороны - ачётакова, людям-то нравится )))))))
Ну. И чтоб без эвфемизмов: по моему мнению статья сгенерирована от и до.
Суть динамической аллокации - наскрести память там, где её недостаточно, за счёт отказа от гарантий её своевременного предоставления.
Залить систему памятью с избытком, чтобы применить механизм экономии памяти и при этом не столкнуться с его ограничениями?
А не проще ли просто не применять данный механизм?
Всякий раз, когда читаю статьи о PR и маркетинге, задумываюсь: должны ли их авторы при написании данных статей использовать приёмы PR и маркетинга? :)
-Так как, ты ходил к той ясновидящей?
- Да, но сразу ушёл.
- А что так?
- Понимаешь, когда я постучался к ней в дверь, она спросила: "кто там?"
Если до вас дойдёт это сообщение, я был бы рад, если бы вы написали мне в тг @flammmable_habr, либо на почту flammmable.habr@gmail.com (а лучше для надёжности и туда и туда).
У меня к вам будет несколько вопросов.
На самом деле бывает.
Ну было бы там написано "full support C95 features", например.
Без чтения стандарта строчка не особо-то информативна.
...сказал человек, видимо, прочитавший все десять выпусков ISO/IEC9899, каждый из которых примерно по 600 страниц.
Да, действительно, x86 GCC 1.27 (1988 года) на вот этот код:
...пишет...
Пруф: https://godbolt.org/z/Pq848eGj4
Если перенести int повыше, то всё работает.
Но как бы... MPLAB v8.92 в разделе About указывает, что он 2001-2013.
Мой тезис, что подобное поведение компилятора не соответствует стандарту, конечно ошибочен.
Но мой тезис, что столкновение с подобной версией стандарта в начале 2010-х показывает неспешность разработки инструментария разработчика производителями чипов, ориентированных на embedded, мне кажется в силе.
Да? Хм. Это как-то странно. Отдельного, явно выраженного блока var нет же.
Есть возможность найти данное положение стандарта? Было бы очень интересно узнать что-то новое :)