Pull to refresh
205
1.1
Send message

Аллокация памяти разрешена только на этапе инициализации, в процессе работы динамическое выделение памяти строго запрещено.

А зачем при таких вводных выделять память динамически на этапе инициализации, когда её можно ровно также выделить статически на этапе компиляции (и забить на пляски с динамическим аллокатором)?

Про мексиканцев - полная шляпа, а здесь как раз таки всё по полочкам.

Сейчас сижу с телефона, когда окажусь перед своим стационарным компьютером, попробую приложить симуляции типовых схем триггера Шмитта, где такой эффект был.

Чёёёрт! ))))) Реально по промту "Напиши статью характерным для Хабра языком о том как я справился с дребезгом контактов от кнопки." DeepSeek написал заметно более интересную и живую статью!

У вас, неактуальная или нерелевантная информация. Как раз наоборот, микроконтроллеры (а тут упомянут stm32) обычно итак имеют на входе триггер Шмитта.

У триггера Шмитта та же базовая проблема. Да, он не переключится в лог.1, если вы не доведёте уровень напряжения от лог.0 до напряжения переключения. Но у него также в большинстве случаев есть такое входное напряжение, при котором приоткрывается и верх и низ.

И эту статью автор скорее всего сам писал, ибо чат-гпт выдал бы что-то на порядок лучше.

Сейчас попробую предложить DeepSeek "написать статью на Хабр про дребезг контактов и способ борьбы с ним".

Значительная часть входных буферов любых цифровых устройств представляет из себя нечто очень похожее на инвертор из двух транзисторов. Проблема в том, что если напряжение на входе этого инвертора равно примерно половине напряжения логической единицы, то (при)открытыми оказываются оба транзистора и через буфер начинает течь т.н. сквозной ток. Если фронт достаточно короткий по длительности, то это неприятное промежуточное состояние проходит быстро. Если же фронт делать пологим (как в методе, описанном автором), то возможны различные неприятные эффекты.

По этой причине, а также чтобы не городить кучу RC-цепочек с непонятным разбросом параметров, в реальности, когда требуется избавить от дребезга сразу несколько кнопок, применяют специальные микросхемы подавления дребезга вроде MC14490. Которые после первого фронта на входе, отсчитывают N тактов и лишь затем выдают значение на выходе.

Да, кстати, я уверен, что автор сгенерил в LLM эту и все предыдущие свои статьи. Но учитывая сколько танцующих с волками говорящих с копипастой читателей набежало в его первую статью, я бы сказал, что это не так уж и плохо. Надеюсь, такие статьи (я имею ввиду конкретно "как избавиться от дребезга контактов") через год-другой будут выходить на Хабре каждый день или даже каждый час. Самому автору я желаю поскорей написать статью "как подключить лампочку накаливания к батарейке", пока это не стало мейнстримом.

А меня одного напрягает наличие i2c в PLC

Очень гипотетически, такое может быть. Но! То, что i2c в контексте ПЛК упомянут, а ModBus или RS-485 - не упомянуты, вот этого точно не может быть.

Повторю, здесь каждую отдельную деталь можно натянуть на реальность. Но разом все - определённо нет.

Дуглас Энгельбарт и Алан Кей создали первый графический интерфейс (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 вас взял ваш дядюшка.

Да, это возможно. Но! Сама история была бы принципиально иной. Типа "я ещё со школьных лет..." и т.д. Её части просто не подходят друг к другу.

Мне одному интересно каким образом тебя взяли учителем в 18 и каким образом ты отмазался от армии?

Нет, не вам одному :) Я чуть выше отписался.

Охохо! Прилетело "Грубое общение. Придерживаюсь другой позиции" ))))))

Как-то оно всё подозрительно выхолощено, пустовато но при этом помпезно ))))

Меня зовут Данила, мне 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, скоро такое будет каждый день час.
Хотя с другой стороны - ачётакова, людям-то нравится )))))))

Ну. И чтоб без эвфемизмов: по моему мнению статья сгенерирована от и до.

Суть динамической аллокации - наскрести память там, где её недостаточно, за счёт отказа от гарантий её своевременного предоставления.
Залить систему памятью с избытком, чтобы применить механизм экономии памяти и при этом не столкнуться с его ограничениями?
А не проще ли просто не применять данный механизм?

Всякий раз, когда читаю статьи о PR и маркетинге, задумываюсь: должны ли их авторы при написании данных статей использовать приёмы PR и маркетинга? :)

-Так как, ты ходил к той ясновидящей?
- Да, но сразу ушёл.
- А что так?
- Понимаешь, когда я постучался к ней в дверь, она спросила: "кто там?"

Если до вас дойдёт это сообщение, я был бы рад, если бы вы написали мне в тг @flammmable_habr, либо на почту flammmable.habr@gmail.com (а лучше для надёжности и туда и туда).
У меня к вам будет несколько вопросов.

С95 не бывает

На самом деле бывает.

Нет, но k&r я читал.

Обычно у меня знакомство с платформой начинается с вопроса "а что умеет компилятор", и какие компиляторы есть

Ну было бы там написано "full support C95 features", например.
Без чтения стандарта строчка не особо-то информативна.

Зато нечитатели документации по инструментарию сохранились =)

...сказал человек, видимо, прочитавший все десять выпусков ISO/IEC9899, каждый из которых примерно по 600 страниц.

Да, действительно, x86 GCC 1.27 (1988 года) на вот этот код:

int func(void) {
    int a=5, b=2, c;
    c = a + b;
    int d = 7;
    c = c - d;
    return c;
}

...пишет...

<source>:4: parse error before `int'
<source>:5: undeclared variable `d' (first use here)

Пруф: https://godbolt.org/z/Pq848eGj4

Если перенести int повыше, то всё работает.

Но как бы... MPLAB v8.92 в разделе About указывает, что он 2001-2013.

Мой тезис, что подобное поведение компилятора не соответствует стандарту, конечно ошибочен.
Но мой тезис, что столкновение с подобной версией стандарта в начале 2010-х показывает неспешность разработки инструментария разработчика производителями чипов, ориентированных на embedded, мне кажется в силе.

это же вроде по стандарту си как раз, по крайней мере по какому древнему правилу языка

Да? Хм. Это как-то странно. Отдельного, явно выраженного блока var нет же.
Есть возможность найти данное положение стандарта? Было бы очень интересно узнать что-то новое :)

1
23 ...

Information

Rating
2,512-th
Registered
Activity