Arduino Watchdog: Как работи

Arduino пазач

В тази нова статия ще видим какво е a пазител, за какво може да се използва и как да го използвате във вашите проекти Arduino. Всичко, което трябва да знаете за тази интересна, но непозната функция. И да, както подсказва името му (watchdog), той може да се използва за проследяване на някои проблеми.

тук ще видим Всичко, което трябва да знаете относно…

Какво е куче пазач?

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

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

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

Какво представлява Arduino watchdog?

книги за ардуино

Таймерът за наблюдение на Arduino трябва да бъде настроен според нуждите на приложението. Той Таймер за пазач използва вътрешен 128 kHz източник на часовник (може да варира в зависимост от използваната платка и MCU). Когато се активира, той започва да брои от нула до предварително зададена от потребителя стойност. Ако таймерът Watchdog не се нулира, когато достигне тази стойност, той нулира микроконтролера.

Микроконтролерът или MCU е малко електронно устройство, което интегрира централен процесор (CPU), памет, входно/изходни периферни устройства и понякога комуникационни интерфейси на един чип. Той е предназначен да контролира и изпълнява специфични задачи.

Таймер за наблюдение 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
За повече информация можете да се консултирате с таблицата с данни на Arduino, където можете да намерите повече подробности за самия интегриран микроконтролер, регистрите, които могат да се използват с контролера, pinout, периферни устройства, технически спецификации, напрежения, консумация на енергия и т.н.

Пример за използване на watchdog в Arduino

Arduino IDE, типове данни, програмиране

И накрая, ще видим как кучето пазач се използва по практичен начин с пример в 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() за подновяване на определения интервал и програмата не се рестартира.

Бъдете първите, които коментират

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.