Сторожевые таймеры. Watchdog. Краткое руководство по собаководству в STM32
ฝัง
- เผยแพร่เมื่อ 9 ก.พ. 2025
- Рассказывается об использовании сторожевых таймеров в процессоре STM32. Независимый и оконный сторожевые таймеры.
Канал в телеграмм - t.me/vladimir_...
Канал Яндекс.Дзен - zen.yandex.ru/...
Канал на RuTube - rutube.ru/chan...
Канал на TH-cam - / vladimirmedintsev
------------------------------------------
Если вы хотите поддержать автора канала номер карты Сбер:
2202-2023-2480-4008
------------------------------------------
Здравствуйте Владимир. Спасибо, что делитесь опытом. Информация очень полезная.
Спасибо! Коротко и ясно.
Спасибо) и нет, я досматриваю не только до 12-13 минуты. Смотрится все, тем более очень хорошо подаётся материал.
Владимир, Вы очень хороший человек 👍
Спасибо Вам за ваш труд, очень приятно, что Вы все таки находите время на съемку и делитесь опытом со многими. Пересмотрел почти все видео за два вечера. Очень доходчиво и интересно. Все таки решил взять стм32 и пробовать. Хотя до просмотра ваших видео думал, что там все сложно.
Есть пара вопросов. Можете сделать видео по снижению энергопотребления для приложений, где требуется продолжительная работа от аккумулятора?
И какую серию посоветуете для начала? Мне вот приглянулись STM32F030 и популярные F103 , но их почему-то советуют не бать.
Еще раз спасибо.
Серию процессоров вы выбираете исходя из того, какая периферия вам нужна. Если вы будете разрабатывать носимые устройства с батарейным питанием, то смотрите на серию L1 или L4.
Что касается энергопотребления то там нет общих указаний. И вообще энергопотребление оно базируется на нескольких основных составляющих. Тактовая частота, состав периферии, режим работы.
Т.е. общий подход должен быть таким - разработать блок схему вашего устройства определив состав необходимых вам интерфейсов, портов, таймеров и прочего. Выбрать серию процессоров. Внутри серии выбрать подходящий по корпусу и памяти. А уже после этого прорисовывать схему устройства.
@@VladimirMedintsev спасибо за ответ. Я пока просто хочу попробовать, подергать ногами, мигать светодиодом, передать данные по I2C, SPI.. Поучится в общем так, как для меня это новые контроллеры.
То есть, видео по снижению энергопотребления не планируется?
@@VladimirMedintsev это как бы понятно из предыдущих ваших видео, но интересен ваш опыт, советы..может где какие грабли есть или несоответствие з даташитом.
Я работаю с серией контроллеров ATmega. И там все просто настраивается и отключать особо нечего - BOD да ADC. А у контроллеров STM32 все намного интереснее и сложнее. Вот и интересно как оно на практике.
Спасибо
@@Bvv4529 А вот не могу я сказать это точно. Может завтра меня перемкнет и я от нечего делать сниму видео про энергопотребление. Просто вся засада в том, что для каждой задачи и функционала это решается разными способами. Не факт что те методы, которые я использую подойдут именно для вашего проекта.
Есть и еще один немаловажный факт, на некоторые темы не очень хочется снимать видео из-за опасений раскрыть слишком много коммерческих наработок. Типичный пример это работа с шиной CAN. По ней видео практически никто не снимает из-за того что коммерческие секретики у каждого.
Придумал пример для оконного таймера. Допустим, ловим переход через ноль в сети 50гц +- допуск и на каждый десятый переход надо делать какое-то действие. Знаем, что в секунду таких переходов 100, выставляем таймер на 1/100 секунды + окно и обновляем его после каждого перехода через ноль. В какой-то момент отваливается датчик и на входе вместо 50гц появляется помеха с хаотичным переходом через ноль. Сразу после первого же интервала который существенно меньше/больше чем 1/100 секунды (обновление таймера произойдет слишком рано или поздно и не попадет в окно) процессор уйдет в ресет. После ресета можно запускать процедуру диагностики датчиков в случае если регистр говорит что ресетнулись по watchdog'у.
10:38 светодиод моргнул лишний раз
Да, это рассинхронизация по времени между основным и вставленным роликом.
В частотнозависимых Помехонагруженных системах. FVD/BLDC/DC-AC/DC-2faz-DC/DC-3faz-DC. ДЛЯ ПРОТИВОСТОЯНИЯ СБОЕВ pll, и ПЕРЕХОДА НА ВНУТРЕННИЙ rc!
Интересно а как сторожевой таймер увязать с FreeRTOS? Да и вообще интересно как работать с прерываниями в FreeRTOS. Вы планируете продолжать уроки по FreeRTOS? Спасибо за уроки , все очень грамотно рассказываете, очень достойные уроки , жаль не часто выходят.
А что собственно сложного. При использовании FreeRTOS вам необходимо периодически освежать значения в регистре сторожевого таймера. Отдельную задачу под это создавать нет смысла, значит делать в задаче с очевидно большим приоритетом. С прерываниями тоже сложности нет никакой. Как использовали их раньше так и используйте.
Да, новые видео по FreeRTOS будут периодически появляться, но необходимо учитывать что канал не про программирование в чистом виде. Т.е. будет некоторый баланс между железной и программной частью.
С частотой роликов тоже не все легко. На ролик уходит минимум 2-3 часа. А их взять где-то необходимо.
Большое спасибо за видео, очень познавательно. Не могли бы вы снять видео ошибок по отказу работы кварцевого резонатора. А также работы таймера 1 при отказе резонатора, у него есть специальный режим работы при отказе резонатора. Он переходит на работу внутреннего кварца но при этом сбивается тактирование таймера, с ним частота работы что важно.
Скажу честно с выбором темы вы меня сумели сильно удивить. Но есть простая проблема. Обычным людям эта тема не интересна в принципе. Ну представьте себе что должно случиться с вашим устройством чтобы произошел отказ резонатора. Вы вообще себе такой отказ представить можете? Так что эта тема будет интересна крайне ограниченному кругу лиц и им не составит труда прочитать всего 1 страницу reference guide где это описано. Т.е. просто переход на другое тактирование. Возможно просто я зациклился на своих разработках и не вижу применение этой фишке. Нет, ну правда я могу себе представить эту функцию применительно к космосу или к военке, но там используются чутка другие процессоры.
А резервные регистры, чтобы их содержимое сохранялось, нужно питать специальный вывод при помощи батарейки?
Есть прямо целое видео про это - th-cam.com/video/jQM8KUggwzw/w-d-xo.html
а что такое резервный домен и зачем он нужен?
Читайте в инструкции или рано или поздно будет видео. Но вообще именно в нем я показываю регистры хранения.
А бывали ли у вас случаи, когда действительно было необходимо использовать сторожевые таймеры в реальных проектах? Я имею ввиду зависание МК, не из-за "криво написанного" кода, а из-за каких-либо внешних воздействий, где без таймера никак? Или это чисто учебная история?
Если я разрабатываю устройства которые расcчитаны на длительную автономную работу (например контроллеры, то обязательно включаю в коде сторожевые таймеры). В качестве примера, есть серия контроллеров аварийных ситуаций которые автономно работали несколько лет. Не так давно читал логи. Несколько раз сторожевой таймер вытаскивал зависшие контроллеры. На одном сбоила внешняя память у другого была очень мощная наводка по линии связи. Иными словами единичные срабатывания были и это позволило оборудованию работать автономно. Также в носимых устройствах иногда случаются ситуации когда устройство попадает в те условия для которых было явно не предназначено. Например слишком высокая влажность с образованием конденсата или сильные магнитные поля. Это не редкая ситуация. При этом предсказать поведение устройства даже с прямо написанным кодом просто невозможно. Разумеется не будь в таком устройстве сторожевого таймера пришлось бы вынимать элементы питания или отключать аккумулятор. Не говоря уже о том, что ряд зарубежных стандартов прямо обязывает использовать сторожевые таймеры для определенных категорий изделий. Так что производитель включил watchdog в состав процессора не для учебного примера.
@@VladimirMedintsev Спасибо за развернутый ответ! Буду иметь ввиду. Пока сколько я не экспериментировал мне не удавалось подвесить МК, но видимо, как вы и написали, все дело в "длительной автономной работе" .
@@Insideus2786 Подвесить микроконтроллер? Да вы просто гоняете его в условиях "на столе". Нет ничего более враждебного чем обычные условия эксплуатации. Вон под предыдущим видео человек собирается сигнализацию в доме делать на интерфейсе I2C. Один из лучших способов подвесить контроллер. На втором месте - статика.
@@VladimirMedintsev Не совсем. Я проходил тестирование, на ЭМС, куда в том числе, входила проверка на снижение показателей качества функционирования устройства при воздействии помех. В том числе и на статический разряд. Удивительно, но ничего не зависало. Это я исключительно про STM32. Atmel подвешивал статикой.
у меня вопрос не по теме. А как вы отмываете платы от остатков флюса ?
А разве есть варианты?
После сборки плата отмывается в ультразвуковой ванне.
Иногда в ванне налит раствор Solins но чаще просто сборная солянка спиртов и бензина.
Зависит от того, что под рукой и насколько хорошо все отмывается.
После ванны плата промывается в обычной воде в течении 2-3 минут и отправляется на сушку при температуре 60-80 градусов.
@@VladimirMedintsev в финале дистиллированную воду вы не используете? Я брал у знакомого уз ванную - или ванная была неисправна или раствор Solnis не взял остатки флюса после паяльной пасты и остатки флюса от проволочного припоя. Вообщем платы в итоге отмывать пока не получается.
@@Rt12nf Да, есть флюсы которые Solins не берет, это когда он старый и просроченный. Чип-дип, например, часто полную гадость продает. В этом случае просто используйте бензин в смеси со спиртами. Промывка дистиллированной водой не так важна если изначально вода хорошая. У меня минерализация очень низкая и фильтра на водопроводе более чем хорошие.