Šajā jaunajā rakstā mēs redzēsim, kas a sargsuns, kādam nolūkam to var izmantot un kā to izmantot savos projektos Arduino. Viss, kas jums jāzina par šo interesanto, bet nezināmo funkciju. Un jā, kā norāda nosaukums (sargsuns), to var izmantot, lai izsekotu dažām problēmām.
Šeit mēs redzēsim Viss, kas jums jāzina par…
Kas ir sargsuns?
Datortehnikas jomā a sargsuns ir uzraudzības mehānisms, ko izmanto, lai uzraudzītu sistēmas vai programmas darbību. Tās galvenā funkcija ir noteikt un reaģēt uz neparastām situācijām vai sistēmas kļūmēm, piemēram, avārijām vai sasalšanu, un veikt korektīvas darbības, lai nodrošinātu nepārtrauktu darbību vai sistēmas atkopšanu.
Sargsuns darbojas ar taimeri kas ir konfigurēts noteiktam laika intervālam. Ja sistēma vai programma šajā laika intervālā neveic noteiktu darbību vai neaktivizē sargsuni (t.i., to restartē), sargsuns pieņem, ka sistēma ir nevēlamā stāvoklī vai ir pārtraukusi pareizi reaģēt, un veic iepriekš noteiktu darbību. Šī darbība var atšķirties atkarībā no ieviešanas un var ietvert sistēmas atsāknēšanu, kļūdu žurnālu ģenerēšanu, trauksmes signālu aktivizēšanu vai īpašu darbību veikšanu problēmas novēršanai.
Sargsuns tiek izmantots dažādās datorsistēmās un ierīcēs, sākot no operētājsistēmām un serveriem līdz ierīcēm iegultās un kritiskās reāllaika sistēmas, tostarp Arduino. Tās galvenais mērķis ir uzlabot sistēmas uzticamību un pieejamību, automātiski atklājot problēmas un reaģējot uz tām, tādējādi samazinot vajadzību pēc manuālas iejaukšanās kļūmes situācijās.
Kas ir Arduino sargsuns?
Arduino sargsuņa taimeris ir jāpielāgo atbilstoši lietojumprogrammas vajadzībām. Viņš Sargsuņa taimeris izmanto iekšējo 128 kHz pulksteņa avotu (var atšķirties atkarībā no izmantotās plates un MCU). Kad tas ir aktivizēts, tas sāk skaitīt no nulles līdz lietotāja iepriekš noteiktai vērtībai. Ja Watchdog taimeris netiek atiestatīts, kad tas sasniedz šo vērtību, tas atiestata mikrokontrolleri.
Sargsuņa taimeris ATmega328P, kas ir ieviests Arduino UNO, piedāvā 10 dažādus laika iestatījumus, no kuriem katrs nosaka, kad taimeris pārpildīsies un tādējādi izraisīs atiestatīšanu. Dažādie laika intervāli ir šādi: 16 ms, 32 ms, 64 ms, 0.125 sekundes, 0.25 sekundes, 0.5 sekundes, 1 sekunde, 2 sekundes, 4 sekundes un 8 sekundes, kā mēs redzēsim vēlāk tabulā, kuru es iekļauju.
Ja jums joprojām nav skaidrs, ko varat darīt ar Watchdog Timer Arduino UNO, redzēsim Piemērs lai jūs to varētu saprast grafiski. Šajā piemērā mēs izmantosim vienkāršu LED mirgojošu (mirgojošu). Gaismas diodes mirgo noteiktu laiku pirms ieiešanas while() cilpā. Šī while() cilpa tiek izmantota kā alternatīva bloķēšanas sistēmai. Tā kā Watchdog taimeris netiek atiestatīts kamēr() cilpas laikā, tas izraisīs sistēmas atsāknēšanu un gaismas diodes atkal sāks mirgot pirms sistēmas avārijas un atsāknēšanas. Šis cikls turpināsies…
Apsvērumi un funkcijas
Sargsuņa taimeris Koda sākumā tas ir atspējots. Pirms Watchdog iespējošanas ir iekļauta x sekunžu aizkave. Šī aizkave ir ļoti svarīga, lai Arduino sāknēšanas ielādētājs varētu pārbaudīt, vai tiek ielādēts jauns kods, un dot pietiekami daudz laika koda ierakstīšanai zibatmiņā. Šis aspekts ir būtisks piesardzības nolūkos. Var rasties situācija, kad kļūdainas kodēšanas vai nepareizu apsvērumu dēļ rakstītais kods ļoti īsos intervālos bezgalīgi atiestata mikrokontrolleri. Tas var sabojāt Arduino plati un neļaut tajā pareizi augšupielādēt kodus. Ja tas notiek, jums ir jāieraksta sāknēšanas ielādētājs, izmantojot citu Arduino kā ISP bloķētajā Arduino...
Kad mēs izmantojam Arduino sargsuni, tas ir jāizmanto bitu reģistri lai definētu mikroshēmas uzvedību. Attiecīgie reģistri un to nozīme ir detalizēti aprakstīti mikrokontrollera datu lapā, kas atrodas uz Arduino plates. Tomēr Arduino integrētajai izstrādes videi (IDE) ir dažas funkcijas un makro, kas izstrādāti, lai vienkāršotu šo procesu, ko var importēt, iekļaujot bibliotēku. #iekļauts lai izmantotu AVR mikroshēmas sargsuni.
Tādā veidā mēs varam konfigurēt sargsuni aktivizējot to, izmantojot funkciju wdt_enable().. Šīs funkcijas arguments nosaka laiku pirms plates atiestatīšanas, ja taimeris nav atiestatīts. Kas attiecas uz vērtībām, kuras varat konfigurēt kodā, es tās iekļauju šeit:
Laiks pirms sargsuņa iedarbināšanas | wtd_enable() arguments |
15 ms | WDTO_15MS |
30 ms | WDTO_30MS |
60 ms | WDTO_60MS |
120 ms | WDTO_120MS |
250 ms | WDTO_250MS |
500 ms | WDTO_500MS |
1 s | WDTO_1S |
2 s | WDTO_2S |
4 s | WDTO_4S |
8 s | WDTO_8S |
Piemērs sargsuņa izmantošanai Arduino
Visbeidzot, redzēsim, kā sargsuns tiek praktiski izmantots, izmantojot piemēru Arduino IDE. Kā redzam, tas ir pavisam vienkārši, internetā var atrast dažādus tādus pirmkodus kā šis, lai varētu praktizēt, modificēt un izveidot savus kodus, lai savos projektos izmantotu sargsuni. Paskatīsimies mūsu piemērs:
#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... }
Kā redzams šajā Arduino skices piemērā, tādi ir trīs funkcijas no ievērojamākajām programmēšanas valodām sargsuņa pārvaldīšanai, un tās ir:
- wdt_disable() lai atspējotu taimeri Arduino konfigurēšanas laikā.
- wdt_enable(laiks) lai piešķirtu taimerim intervālu un palaistu to, norādot atbilstošo laiku, kā esmu parādījis iepriekšējā tabulā.
- wdt_reset() lai atjaunotu piešķirto intervālu un lai programma netiktu restartēta.