У овом новом чланку ћемо видети шта а пас чувар, за шта се може користити и како га користити у својим пројектима Ардуино. Све што треба да знате о овој занимљивој, али непознатој функцији. И да, као што му име каже (пас чувар), може се користити за праћење неких проблема.
Ево видећемо Све што треба да знате у погледу…
Шта је пас чувар?
U računarstvu, a пас чувар је надзорни механизам који се користи за праћење рада система или програма. Његова примарна функција је да открије и реагује на абнормалне ситуације или системске кварове, као што су падови или замрзавања, и предузимање корективних радњи како би се обезбедио наставак рада или опоравак система.
Пас чувар ради на тајмеру који је конфигурисан за одређени временски интервал. Ако систем или програм не изврши одређену радњу или не напаја чувар (тј., поново га покрене) у том временском интервалу, чувар претпоставља да је систем у нежељеном стању или је престао да реагује исправно и предузима унапред одређену радњу. Ова радња се може разликовати у зависности од имплементације и може укључивати поновно покретање система, генерисање евиденције грешака, покретање аларма или предузимање одређених корака за исправљање проблема.
Ватцхдог се користи на различитим рачунарским системима и уређајима, од оперативних система и сервера до уређаја уграђени и критични системи у реалном времену, укључујући Ардуино. Његов примарни циљ је да побољша поузданост и доступност система аутоматским откривањем и реаговањем на проблеме, чиме се смањује потреба за ручном интервенцијом у ситуацијама квара.
Шта је Ардуино чувар?

Ардуино ватцхдог тајмер мора бити подешен у складу са потребама апликације. Он Ватцхдог Тимер користи интерни извор такта од 128 кХз (може се разликовати у зависности од плоче и МЦУ-а који се користи). Када се активира, почиње да броји од нуле до вредности коју је унапред одредио корисник. Ако се Ватцхдог тајмер не ресетује када достигне ову вредност, ресетује микроконтролер.
Ватцхдог тајмер АТмега328П, који се спроводи у Arduino UNO, нуди 10 различитих подешавања времена, од којих свако одређује када ће се тајмер прелити и стога изазвати ресетовање. Различити временски интервали су следећи: 16 мс, 32 мс, 64 мс, 0.125 секунди, 0.25 секунди, 0.5 секунди, 1 секунда, 2 секунде, 4 секунде и 8 секунди, као што ћемо касније видети у табели коју сам укључио.
Ако вам и даље није јасно шта можете да урадите са Ватцхдог Тимер-ом Arduino UNO, видећемо Пример тако да можете да га разумете графички. У овом примеру користићемо једноставно трептање ЛЕД диода. ЛЕД диоде трепере одређени период пре уласка у вхиле() петљу. Ова вхиле() петља се користи као алтернатива закључаном систему. Пошто се Ватцхдог тајмер не ресетује док је у вхиле() петљи, то ће изазвати поновно покретање система, а ЛЕД диоде ће поново почети да трепћу пре него што се систем сруши и поново покрене. Овај циклус ће се наставити…
Разматрања и карактеристике
Ватцхдог тајмер је онемогућен на почетку кода. Кашњење од к секунди је укључено пре омогућавања Ватцхдог-а. Ово кашњење је кључно како би се омогућило Ардуино покретачу да провери да ли се учитава нови код и да би се оставило довољно времена за снимање кода у флеш меморију. Овај аспект је релевантан као мера предострожности. Може се појавити ситуација у којој, због погрешног кодирања или неодговарајућих разматрања, писани код ресетује микроконтролер у веома кратким интервалима бесконачно. Ово може оштетити Ардуино плочу и спречити правилно учитавање кода на њу. Ако се то деси, потребно је да снимите покретач користећи други Ардуино као ИСП на закључаном Ардуину...
Када користимо Ардуино ватцхдог, неопходно је користити битни регистри да се дефинише понашање чипа. Релевантни регистри и њихово значење су детаљно описани у таблици података микроконтролера која се налази на Ардуино плочи. Међутим, Ардуино интегрисано развојно окружење (ИДЕ) долази са неким функцијама и макроима дизајнираним да поједноставе овај процес, који се могу увести укључивањем библиотеке #инцлуде да користите чувар АВР чипа.
На овај начин можемо да конфигуришемо ватцхдог активирајући га помоћу функције вдт_енабле().. Аргумент ове функције одређује време пре ресетовања плоче у случају да тајмер није ресетован. Што се тиче вредности које можете да конфигуришете у коду, овде их укључујем:
| Време пре него што се чувар активира | аргумент втд_енабле(). |
| КСНУМКС МС | ВДТО_15МС |
| КСНУМКС МС | ВДТО_30МС |
| КСНУМКС МС | ВДТО_60МС |
| КСНУМКС МС | ВДТО_120МС |
| КСНУМКС МС | ВДТО_250МС |
| КСНУМКС МС | ВДТО_500МС |
| КСНУМКС с | ВДТО_1С |
| КСНУМКС с | ВДТО_2С |
| КСНУМКС с | ВДТО_4С |
| КСНУМКС с | ВДТО_8С |
Пример коришћења ватцхдог-а у Ардуину

Коначно, видећемо како се ватцхдог користи на практичан начин на примеру у Ардуино ИДЕ. Као што видимо, прилично је једноставно, можете пронаћи разне изворне кодове као што је овај на Интернету, да бисте могли да вежбате, модификујете и креирате сопствене кодове да бисте користили ватцхдог у својим пројектима. Хајде да видимо наш пример:
#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...
}
Као што се може видети у овом примеру скице за Ардуино, постоје tri funkcije од значајних програмских језика за управљање чуваром, а то су:
- вдт_дисабле() да онемогућите тајмер док конфигуришете Ардуино.
- вдт_енабле(време) да доделите интервал тајмеру и покренете га, наводећи одговарајуће време као што сам показао у претходној табели.
- вдт_ресет() да се обнови додељени интервал и да се програм не би поново покренуо.