Компилятор "убивает" локальную переменную. ЗАКРЫТО.

Обсуждаем контроллеры компании Atmel.
Ответить
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

А я вот такую реализацию опроса кнопок сделал. Может, кому пригодится.
Кнопки могут быть на любых портах, любых пинах. Макрос позволяет проверить состояние кнопки. Проверка - не чаще раза в миллисекунду. Можно отличать короткое и долгое нажатие. Антидребезг - программным счетчиком (у меня - 10 мс): событие нажатия или отпускания появляется лишь 9 мс спустя. Если кому-то критично, это легко можно переделать (чтобы событие генерировалось сразу, а следующие 10мс просто отсутствовала реакция на кнопку - у меня так было где-то в старых реализовано). Но вот если кнопка - не кнопка, а какой-нибудь экстренный концевик, то более разумным может быть его на прерывание посадить. Правда, те же шаговики я тоже без прерываний обслуживаю: просто каждые 5-10мс проверяю состояние концевиков, и если что - экстренно останавливаю.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Опытный кот
Аватара пользователя
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Сообщение MLX90640 »

Обычно, для однозначного визуального отличия макроса от функции имя макроса записывают целиком заглавными буквами, а имя функции - с заглавной буквы, остальные строчные. Ну так общепринято, чтобы разные программисты друг друга одинаково понимали.
Префиксные подчеркивания же означают резервирование имени, его отличие от других таких же имён, которые могут быть применены.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Demiurg, кстати, про "пины разбросаны". Я неоднократно натыкался на убогий стиль разработки китаезов: такое впечатление, что им проще софтовую реализацию UART/I2C/SPI сделать, а такты генерить ногодрыгом, чем использовать аппаратные возможности МК.
Вот здесь я ругаюсь про плату управления (аж семью независимыми!) шаговиками, которую набыдлокодили убогие китайские "разработчики"!.. А я еще думал поначалу: а как же эти ироды умудрились найти семь таймеров с ШИМ на STM32F407? А никак. Они даже UART для тринамиков наговняли софтовый.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Опытный кот
Аватара пользователя
Сообщения: 848
Зарегистрирован: Ср авг 03, 2022 05:22:56

Сообщение MLX90640 »

С точки зрения "разбросаны пины", есть два подхода: либо они действительно разбросаны по модулям, а в doxygen-описании они собираются в одном месте в виде таблицы распределения пинов, либо наоборот, инит всех пинов выполняется в одном месте и за один раз. Оба способа имеют свои пюсы и минусы
Реклама
Эиком - электронные компоненты и радиодетали
Это не хвост, это антенна
Сообщения: 1492
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Ситуаций, когда пины разбросаны полно. Я перечислил.
Китайцы пусть за себя и отвечают. Я тоже много косяков словил. В том числе, в том же Термодат 10к6. Пин RESET ВИСИТ В ВОЗДУХЕ! Мало того, через всю плату дорожка идёт. Жесть.
Контактная информация:
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01

Сообщение Eddy_Em »

Demiurg, ну и пусть себе висит: он же подтянут внутри микроконтроллера к питанию. Понятно, что дорожка - нехорошо, ведь подтяжка килоом в 50: при сильных наводках может само по себе и перезагрузиться. Но вот принудительно этот пин к питанию подтягивать, если от него не идет длиннючая дорожка, а он не планируется использоваться в местах с сильными ЭМ помехами, смысла нет.
UPD, черт, я не глянул, что раздел - про аврки!
Последний раз редактировалось Eddy_Em Вс ноя 06, 2022 22:15:16, всего редактировалось 2 раза.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Контактная информация:
Реклама
Это не хвост, это антенна
Сообщения: 1492
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Я на работе все Термодаты заменил. Больше половины сдохли. В одном, мк atmega32, кажется, вспучился. Термодаты как раз порой в жёстких условиях эксплуатируются. Так что не надо говорить, пусть себе висит. Вот и сдохли эти Термодаты. У кого прошивка слетела, у кого мк сдохли. А все из-за не запланированного сброса мк. Возможно, контроль питания не был подключён.

Добавлено after 8 minutes 42 seconds:
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4315848#p4315848"]UPD, черт, я не глянул, что раздел - про аврки![/uquote]
Нормально. Завтра гляну твой пример. MLX90640, тоже для arm выкладывал. Ниче так. Подсмотрел кое что.
Контактная информация:
Ответить

Вернуться в «AVR»