ఈ కొత్త కథనంలో మనం ఏంటో చూడబోతున్నాం వాచ్డాగ్, దీన్ని దేనికి ఉపయోగించవచ్చు మరియు మీ ప్రాజెక్ట్లలో దీన్ని ఎలా ఉపయోగించాలి Arduino. ఈ ఆసక్తికరమైన ఇంకా తెలియని ఫంక్షన్ గురించి మీరు తెలుసుకోవలసిన ప్రతిదీ. అవును, దాని పేరు సూచించినట్లు (వాచ్డాగ్), ఇది కొన్ని సమస్యలను ట్రాక్ చేయడానికి ఉపయోగించవచ్చు.
ఇక్కడ మనం చూస్తాము మీరు తెలుసుకోవలసినది సంబంధించి…
ఇండెక్స్
వాచ్ డాగ్ అంటే ఏమిటి?
కంప్యూటింగ్లో, ఎ కాపలాదారు సిస్టమ్ లేదా ప్రోగ్రామ్ యొక్క ఆపరేషన్ను పర్యవేక్షించడానికి ఉపయోగించే పర్యవేక్షక యంత్రాంగం. క్రాష్లు లేదా ఫ్రీజ్లు వంటి అసాధారణ పరిస్థితులు లేదా సిస్టమ్ వైఫల్యాలను గుర్తించడం మరియు వాటికి ప్రతిస్పందించడం మరియు నిరంతర ఆపరేషన్ లేదా సిస్టమ్ రికవరీని నిర్ధారించడానికి దిద్దుబాటు చర్య తీసుకోవడం దీని ప్రాథమిక విధి.
కాపలాదారు టైమర్పై పనిచేస్తుంది ఇది నిర్దిష్ట సమయ విరామం కోసం కాన్ఫిగర్ చేయబడింది. సిస్టమ్ లేదా ప్రోగ్రామ్ నిర్దిష్ట చర్యను చేయకపోతే లేదా ఆ సమయ వ్యవధిలో వాచ్డాగ్ (అంటే, దాన్ని పునఃప్రారంభించండి) పవర్ చేయకపోతే, సిస్టమ్ అవాంఛిత స్థితిలో ఉందని లేదా సరిగ్గా ప్రతిస్పందించడం ఆపివేసిందని వాచ్డాగ్ భావించి ముందుగా నిర్ణయించిన చర్య తీసుకుంటుంది. ఈ చర్య అమలును బట్టి మారవచ్చు మరియు సిస్టమ్ను రీబూట్ చేయడం, ఎర్రర్ లాగ్లను రూపొందించడం, అలారాలను ప్రేరేపించడం లేదా సమస్యను సరిచేయడానికి నిర్దిష్ట చర్యలు తీసుకోవడం వంటివి ఉండవచ్చు.
ఆపరేటింగ్ సిస్టమ్లు మరియు సర్వర్ల నుండి పరికరాల వరకు వివిధ రకాల కంప్యూటర్ సిస్టమ్లు మరియు పరికరాలలో వాచ్డాగ్ ఉపయోగించబడుతుంది ఆర్డునోతో సహా ఎంబెడెడ్ మరియు క్లిష్టమైన నిజ-సమయ వ్యవస్థలు. సమస్యలను స్వయంచాలకంగా గుర్తించడం మరియు ప్రతిస్పందించడం ద్వారా సిస్టమ్ విశ్వసనీయత మరియు లభ్యతను మెరుగుపరచడం దీని ప్రాథమిక లక్ష్యం, తద్వారా వైఫల్య పరిస్థితుల్లో మాన్యువల్ జోక్యం అవసరాన్ని తగ్గించడం.
Arduino వాచ్డాగ్ అంటే ఏమిటి?
అప్లికేషన్ యొక్క అవసరాలకు అనుగుణంగా Arduino వాచ్డాగ్ టైమర్ తప్పనిసరిగా సెట్ చేయబడాలి. అతను వాచ్డాగ్ టైమర్ అంతర్గత 128 kHz క్లాక్ సోర్స్ను ఉపయోగించుకుంటుంది (ఉపయోగించిన బోర్డు మరియు MCUని బట్టి మారవచ్చు). సక్రియం చేయబడినప్పుడు, ఇది సున్నా నుండి వినియోగదారు ముందుగా నిర్ణయించిన విలువకు లెక్కించడం ప్రారంభిస్తుంది. వాచ్డాగ్ టైమర్ ఆ విలువను చేరుకున్నప్పుడు రీసెట్ చేయకపోతే, అది మైక్రోకంట్రోలర్ను రీసెట్ చేస్తుంది.
వాచ్డాగ్ టైమర్ ATmega328P, ఇది అమలు చేయబడుతుంది Arduino UNO, 10 వేర్వేరు సమయ సెట్టింగ్లను అందజేస్తుంది, ప్రతి ఒక్కటి టైమర్ ఎప్పుడు ఓవర్ఫ్లో అవుతుందో నిర్ణయిస్తుంది మరియు రీసెట్కు కారణమవుతుంది. విభిన్న సమయ విరామాలు క్రింది విధంగా ఉన్నాయి: 16 ms, 32 ms, 64 ms, 0.125 సెకన్లు, 0.25 సెకన్లు, 0.5 సెకన్లు, 1 సెకను, 2 సెకన్లు, 4 సెకన్లు మరియు 8 సెకన్లు, నేను చేర్చిన పట్టికలో మనం తరువాత చూస్తాము.
వాచ్డాగ్ టైమర్తో మీరు ఏమి చేయగలరో ఇప్పటికీ మీకు స్పష్టంగా తెలియకపోతే Arduino UNO, చూద్దాము ఒక ఉదాహరణ కాబట్టి మీరు దానిని గ్రాఫికల్గా అర్థం చేసుకోవచ్చు. ఈ ఉదాహరణలో, మేము LED ల యొక్క సాధారణ బ్లింక్ని ఉపయోగిస్తాము. while() లూప్లోకి ప్రవేశించే ముందు LED లు నిర్ణీత వ్యవధిలో బ్లింక్ అవుతాయి. ఈ while() లూప్ లాక్ చేయబడిన సిస్టమ్కు ప్రత్యామ్నాయంగా ఉపయోగించబడుతుంది. అయితే() లూప్లో ఉన్నప్పుడు వాచ్డాగ్ టైమర్ రీసెట్ చేయబడనందున, ఇది సిస్టమ్ రీబూట్కు కారణమవుతుంది మరియు సిస్టమ్ క్రాష్లు మరియు రీబూట్ అయ్యే ముందు LED లు మళ్లీ ఫ్లాషింగ్ అవుతాయి. ఈ చక్రం కొనసాగుతుంది…
పరిగణనలు మరియు లక్షణాలు
వాచ్డాగ్ టైమర్ కోడ్ ప్రారంభంలో ఇది నిలిపివేయబడింది. వాచ్డాగ్ను ఎనేబుల్ చేయడానికి ముందు x సెకన్ల ఆలస్యం చేర్చబడుతుంది. Arduino బూట్లోడర్ కొత్త కోడ్ లోడ్ చేయబడిందో లేదో తనిఖీ చేయడానికి మరియు ఫ్లాష్ మెమరీకి కోడ్ను బర్న్ చేయడానికి తగినంత సమయాన్ని అనుమతించడానికి ఈ ఆలస్యం కీలకం. ముందుజాగ్రత్తగా ఈ అంశం సంబంధితంగా ఉంది. తప్పు కోడింగ్ లేదా సరికాని పరిశీలనల కారణంగా, లిఖిత కోడ్ మైక్రోకంట్రోలర్ను చాలా తక్కువ వ్యవధిలో అనంతంగా రీసెట్ చేసే పరిస్థితి తలెత్తవచ్చు. ఇది Arduino బోర్డ్ను దెబ్బతీస్తుంది మరియు దానికి కోడ్లను సరిగ్గా అప్లోడ్ చేయకుండా నిరోధించవచ్చు. ఇలా జరిగితే, మీరు లాక్ చేయబడిన Arduinoలో ISPగా మరొక Arduinoని ఉపయోగించి బూట్లోడర్ను బర్న్ చేయాలి...
మేము Arduino వాచ్డాగ్ని ఉపయోగించినప్పుడు, దానిని ఉపయోగించడం అవసరం బిట్ రిజిస్టర్లు చిప్ యొక్క ప్రవర్తనను నిర్వచించడానికి. సంబంధిత రిజిస్టర్లు మరియు వాటి అర్థం Arduino బోర్డ్లో ఉన్న మైక్రోకంట్రోలర్ డేటాషీట్లో వివరించబడ్డాయి. అయినప్పటికీ, Arduino ఇంటిగ్రేటెడ్ డెవలప్మెంట్ ఎన్విరాన్మెంట్ (IDE) ఈ ప్రక్రియను సులభతరం చేయడానికి రూపొందించబడిన కొన్ని విధులు మరియు మాక్రోలతో వస్తుంది, వీటిని లైబ్రరీని చేర్చడం ద్వారా దిగుమతి చేసుకోవచ్చు. #చేర్చండి AVR చిప్ యొక్క వాచ్డాగ్ని ఉపయోగించడానికి.
ఈ విధంగా, మనం వాచ్డాగ్ని కాన్ఫిగర్ చేయవచ్చు wdt_enable() ఫంక్షన్ని ఉపయోగించి దీన్ని యాక్టివేట్ చేస్తోంది. టైమర్ రీసెట్ చేయనట్లయితే, ఈ ఫంక్షన్ యొక్క ఆర్గ్యుమెంట్ బోర్డ్ రీసెట్ చేయడానికి ముందు సమయాన్ని నిర్ణయిస్తుంది. మీరు కోడ్లో కాన్ఫిగర్ చేయగల విలువల విషయానికొస్తే, నేను వాటిని ఇక్కడ చేర్చాను:
వాచ్డాగ్ ప్రేరేపించబడటానికి ముందు సమయం | wtd_enable() వాదన |
15 ms | WDTO_15MS |
30 ms | WDTO_30MS |
60 ms | WDTO_60MS |
120 ms | WDTO_120MS |
250 ms | WDTO_250MS |
500 ms | WDTO_500MS |
18 వ శతాబ్దం | WDTO_1S |
18 వ శతాబ్దం | WDTO_2S |
18 వ శతాబ్దం | WDTO_4S |
18 వ శతాబ్దం | WDTO_8S |
Arduinoలో వాచ్డాగ్ని ఉపయోగించడం ఉదాహరణ
చివరగా, Arduino IDEలోని ఉదాహరణతో వాచ్డాగ్ ఆచరణాత్మకంగా ఎలా ఉపయోగించబడుతుందో చూడబోతున్నాం. మేము చూస్తున్నట్లుగా, ఇది చాలా సులభం, మీరు మీ ప్రాజెక్ట్లలో వాచ్డాగ్ని ఉపయోగించడానికి మీ స్వంత కోడ్లను ప్రాక్టీస్ చేయడానికి, సవరించడానికి మరియు సృష్టించడానికి ఇంటర్నెట్లో ఇలాంటి వివిధ సోర్స్ కోడ్లను కనుగొనవచ్చు. చూద్దాం మా ఉదాహరణ:
#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(సమయం) టైమర్కు విరామాన్ని కేటాయించి, దాన్ని ప్రారంభించడానికి, నేను పై పట్టికలో చూపిన విధంగా సంబంధిత సమయాన్ని పేర్కొనండి.
- wdt_reset() కేటాయించిన విరామాన్ని పునరుద్ధరించడానికి మరియు ప్రోగ్రామ్ పునఃప్రారంభించబడదు.