Съдържание:

Arduino Hang Guardian - Arduino Watchdog Timer Урок: 6 стъпки
Arduino Hang Guardian - Arduino Watchdog Timer Урок: 6 стъпки

Видео: Arduino Hang Guardian - Arduino Watchdog Timer Урок: 6 стъпки

Видео: Arduino Hang Guardian - Arduino Watchdog Timer Урок: 6 стъпки
Видео: Программирование МК AVR. Урок 53. Watchdog Timer (WDT). Часть 1 2024, Ноември
Anonim
Image
Image

Здравейте всички, Случва се на всички нас. Изграждате проект, с ентусиазъм свързвате всички сензори и изведнъж Arduino виси и никакъв вход не се обработва.

„Какво става?“, Ще попитате и ще започнете да ровите в кода си, само за да осъзнаете, че сте заседнали в безкраен цикъл. Слава Богу, Arduino беше на пейката ви, а не на отдалечено място.

Днес ще разгледаме как можем да използваме таймера за наблюдение на Arduino, за да предотвратим това.

Стъпка 1: Какво представлява този таймер за наблюдение?

Как да активирате таймера за наблюдение?
Как да активирате таймера за наблюдение?

Таймерът за наблюдение на Arduino, както подсказва името, е таймер, който работи отделно от основния процесор на дъската. Този таймер може да се използва за периодична проверка на състоянието на платката и при обстоятелства, при които платката се е забила в софтуерен цикъл или е заседнала поради хардуерна повреда, таймерът за наблюдение може да нулира Arduino и да го стартира отново.

По подразбиране, когато не се използва, този таймер е деактивиран за всички проекти и само когато го активираме, трябва да сме сигурни, че периодично ще му казваме да не нулира борда, ако все още работи според очакванията.

За да можем да използваме таймера за наблюдение, първо трябва да включим файла avr/wdt.h в нашата скица на Arduino. Това е стандартната библиотека, която съхранява контролните действия.

Стъпка 2: Как да активирате таймера за наблюдение?

Как да активирате таймера за наблюдение?
Как да активирате таймера за наблюдение?
Как да активирате таймера за наблюдение?
Как да активирате таймера за наблюдение?

За да активираме таймера, използваме функцията “wdt_enable”, където трябва да преминем през праговия интервал, при който платката ще бъде нулирана. В зависимост от нашия случай на използване, това може да бъде от 15 милисекунди до 8 секунди в предварително дефинирани настройки, които се съдържат в библиотеката за наблюдение.

ПРАГ - ПОСТОЯННО ИМЕ

15 ms WDTO_15MS 30 ms WDTO_30MS 60 ms WDTO_60MS 120 ms WDTO_120MS 250 ms WDTO_250MS 500 ms WDTO_500MS 1s WDTO_1S 2s WDTO_2S 4s WDTO_4S 8s WDTO_8S

Стъпка 3: Поддържайте програмата си работеща

Поддържайте програмата си работеща
Поддържайте програмата си работеща

Сега, когато таймерът е активиран, за да предотвратим нулирането на нашия Arduino, трябва периодично да извикваме функцията „wdt_reset“, за да нулираме таймера за наблюдение, преди да изтече праговият интервал.

При избора на интервал за нулиране е от решаващо значение да вземем предвид всяка продължителна операция като четене или изпращане на данни или свързване към външни сензори. Прагът за нулиране трябва да бъде поне един и половина пъти по -голям от тези времена, за да се предотвратят случайни нулиране.

Стъпка 4: Примерна употреба

Примерна употреба
Примерна употреба
Примерна употреба
Примерна употреба
Примерна употреба
Примерна употреба

В примерната програма, която можете да изтеглите тук, първо настроихме таймера за наблюдение с интервал за нулиране от 4 секунди. След това, за да знаем, че сме във функцията за настройка, мигаме светодиод 3 пъти бързо и след това в основния контур първо нулираме таймера, светваме светодиод с постепенно по -дълги интервали и след това го изключваме. Следващият цикъл нулира таймера отново, докато времето за запалване е по-дълго от 4 секунди.

Когато това се случи, таймерът за наблюдение нулира дъската и настройката се изпълнява отново.

Стъпка 5: Проблеми с таймера за наблюдение

Един възможен проблем с таймера за наблюдение, в зависимост от зареждащия механизъм на вашия Arduino, е, че ако стойността на таймера за наблюдател е твърде ниска и буутлоудърът не нулира таймера при качване на нов код, може да повредите дъската си Arduino по такъв начин, че винаги ще се забие във фазата на зареждане. Буутлоудърът ще се опита да стартира, но таймерът ще продължи да нулира платката, като никога не й позволява да стартира правилно. За да предотвратите подобни проблеми, винаги използвайте прагови интервали от 2 секунди или повече.

Стъпка 6: Насладете се

Наслади се
Наслади се

Ако имате пример къде сте използвали таймера за наблюдение в истински проект, уведомете ме в коментарите, уверете се, че видеото ви харесва и не забравяйте да се абонирате.

Наздраве и благодаря за четенето/гледането!

Препоръчано: