В тази нова статия ще видим какво е a пазител, за какво може да се използва и как да го използвате във вашите проекти Arduino. Всичко, което трябва да знаете за тази интересна, но непозната функция. И да, както подсказва името му (watchdog), той може да се използва за проследяване на някои проблеми.
тук ще видим Всичко, което трябва да знаете относно…
Какво е куче пазач?
В компютрите, а куче пазач Това е механизъм за наблюдение, използван за наблюдение на ефективността на система или програма. Основната му функция е да открива и реагира на необичайни ситуации или повреди в системата, като сривове или замръзвания, и да предприема коригиращи мерки, за да гарантира непрекъснатостта на работата или възстановяването на системата.
кучето пазач работи на таймер който е конфигуриран за определен интервал от време. Ако системата или програмата не извърши конкретно действие или не захранва наблюдателя (т.е. не го рестартира) в рамките на този интервал от време, пазачът приема, че системата е в нежелано състояние или е спряла да реагира правилно и приема настройка по подразбиране действие. Това действие може да варира в зависимост от изпълнението и може да включва рестартиране на системата, генериране на регистрационни файлове за грешки, вдигане на аларми или предприемане на конкретни действия за коригиране на проблема.
Кучето-пазач се използва в различни компютърни системи и устройства, от операционни системи и сървъри до устройства вградени и критични системи в реално време, включително Arduino. Основната му цел е да подобри надеждността и достъпността на системата чрез автоматично откриване и реагиране на проблеми, като по този начин намалява необходимостта от ръчна намеса в ситуации на повреда.
Какво представлява Arduino watchdog?
Таймерът за наблюдение на Arduino трябва да бъде настроен според нуждите на приложението. Той Таймер за пазач използва вътрешен 128 kHz източник на часовник (може да варира в зависимост от използваната платка и MCU). Когато се активира, той започва да брои от нула до предварително зададена от потребителя стойност. Ако таймерът Watchdog не се нулира, когато достигне тази стойност, той нулира микроконтролера.
Таймер за наблюдение ATmega328P, който е внедрен в Arduino UNO, предлага 10 различни настройки за време, всяка от които определя кога таймерът ще препълни и следователно ще предизвика нулиране. Различните времеви интервали са следните: 16 ms, 32 ms, 64 ms, 0.125 секунди, 0.25 секунди, 0.5 секунди, 1 секунда, 2 секунди, 4 секунди и 8 секунди, както ще видим по-късно в таблицата, която включвам.
Ако все още не ви е ясно какво можете да правите с Watchdog Timer на Arduino UNO, ще видим Пример така че да го разберете графично. В този пример ще използваме просто мигане на светодиодите. Светодиодите мигат за определен период от време, преди да влязат в цикъла while(). Този цикъл while() се използва като алтернатива на заключена система. Тъй като таймерът Watchdog не се нулира, докато е в цикъла while(), това ще доведе до рестартиране на системата и светодиодите ще започнат да мигат отново, преди системата да се срине и да се рестартира. Този цикъл ще продължи...
Съображения и характеристики
Таймер за наблюдение е деактивиран в началото на кода. Закъснение от x секунди е включено преди активирането на Watchdog. Това забавяне е от решаващо значение, за да позволи на буутлоудъра на Arduino да провери дали се зарежда нов код и да даде достатъчно време за запис на кода във флаш памет. Този аспект е важен като предпазна мярка. Може да възникне ситуация, при която поради грешно кодиране или неправилни съображения писменият код нулира микроконтролера на много кратки интервали безкрайно. Това може да повреди платката Arduino и да попречи на правилното качване на код в нея. Ако това се случи, е необходимо да запишете буутлоудъра, като използвате друг Arduino като ISP на заключения Arduino...
Когато използваме Arduino watchdog, е необходимо да се използва битови регистри за определяне на поведението на чипа. Съответните регистри и тяхното значение са подробно описани в листа с данни на микроконтролера, който присъства на платката Arduino. Интегрираната среда за разработка на Arduino (IDE) обаче идва с някои функции и макроси, предназначени да опростят този процес, които могат да бъдат импортирани чрез включване на библиотеката #включи да използвате кучето-пазач на AVR чипа.
По този начин можем да конфигурираме кучето-пазач като го активирате чрез функцията wdt_enable().. Аргументът на тази функция определя времето преди платката да се нулира, в случай че таймерът не е бил нулиран. По отношение на стойностите, които можете да конфигурирате в кода, тук ги включвам:
Време преди задействането на кучето-пазач | аргумент wtd_enable(). |
15 мс | WDTO_15MS |
30 мс | WDTO_30MS |
60 мс | WDTO_60MS |
120 мс | WDTO_120MS |
250 мс | WDTO_250MS |
500 мс | WDTO_500MS |
1 ите | WDTO_1S |
2 ите | WDTO_2S |
4 ите | WDTO_4S |
8 ите | WDTO_8S |
Пример за използване на watchdog в Arduino
И накрая, ще видим как кучето пазач се използва по практичен начин с пример в Arduino IDE. Както виждаме, това е доста просто, можете да намерите различни изходни кодове като този в Интернет, така че можете да практикувате, модифицирате и създавате свои собствени кодове, за да използвате watchdog във вашите проекти. Да видим нашия пример:
#include <avr/wdt.h> // Incluir la biblioteca watchdog (wdt.h) void setup() { wdt_disable(); // Desactivar el watchdog mientras se configura, para que no se resetee wdt_enable(WDTO_2S); // Configurar watchdog a dos segundos } void loop() { wdt_reset(); // Actualizar el watchdog para que no produzca un reinicio //Aquí iría el código de tu programa... }
Както може да се види в този пример за скица за Arduino, има три функции на забележителния език за програмиране за управление на кучето пазач, а това са:
- wdt_disable() за да деактивирате таймера, докато конфигурирате Arduino.
- wdt_enable(Tiempo) за да зададете интервал на таймера и да го стартирате, като посочите съответното време, както съм показал в таблицата по-горе.
- wdt_reset() за подновяване на определения интервал и програмата не се рестартира.