Tässä uudessa artikkelissa aiomme nähdä, mitä a vahtikoira, mihin sitä voidaan käyttää ja miten sitä käytetään projekteissasi Työläs. Kaikki mitä sinun tulee tietää tästä mielenkiintoisesta mutta tuntemattomasta toiminnosta. Ja kyllä, kuten sen nimi viittaa (vahtikoira), sitä voidaan käyttää joidenkin ongelmien jäljittämiseen.
Tässä näemme Kaikki mitä sinun tarvitsee tietää koskien…
Mikä on vahtikoira?
Tietojenkäsittelyssä a vahtikoira on valvontamekanismi, jota käytetään valvomaan järjestelmän tai ohjelman toimintaa. Sen ensisijainen tehtävä on havaita ja reagoida epänormaalit tilanteet tai järjestelmähäiriöt, kuten kaatumiset tai jäätyminen, ja ryhtyä korjaaviin toimiin toiminnan jatkumisen tai järjestelmän palautumisen varmistamiseksi.
vahtikoira toimii ajastimella joka on määritetty tietylle aikavälille. Jos järjestelmä tai ohjelma ei suorita tiettyä toimintoa tai käynnistä vahtikoiraa (eli käynnistä sitä uudelleen) tuon aikavälin sisällä, vahtikoira olettaa, että järjestelmä on ei-toivotussa tilassa tai on lakannut vastaamasta oikein ja suorittaa ennalta määrätyn toimenpiteen. Tämä toiminto voi vaihdella toteutuksen mukaan, ja se voi sisältää järjestelmän uudelleenkäynnistyksen, virhelokien luomisen, hälytyksiä tai erityistoimenpiteitä ongelman korjaamiseksi.
Watchdogia käytetään useissa tietokonejärjestelmissä ja laitteissa käyttöjärjestelmistä ja palvelimista laitteisiin sulautetut ja kriittiset reaaliaikaiset järjestelmät, mukaan lukien Arduino. Sen ensisijaisena tavoitteena on parantaa järjestelmän luotettavuutta ja käytettävyyttä tunnistamalla ja reagoimalla automaattisesti ongelmat, mikä vähentää manuaalisen toiminnan tarvetta vikatilanteissa.
Mikä on Arduino-vahtikoira?
Arduinon vahtikoiran ajastin on säädettävä sovelluksen tarpeiden mukaan. Hän Valvontakoiran ajastin käyttää sisäistä 128 kHz kellolähdettä (voi vaihdella käytettävän levyn ja MCU:n mukaan). Kun se on aktivoitu, se alkaa laskea nollasta käyttäjän ennalta määräämään arvoon. Jos Watchdog-ajastin ei nollaudu saavuttaessaan tämän arvon, se nollaa mikro-ohjaimen.
Watchdog Ajastin ATmega328P, joka on toteutettu vuonna Arduino UNO, tarjoaa 10 erilaista aika-asetusta, joista jokainen määrittää, milloin ajastin ylittyy ja aiheuttaa siten nollauksen. Eri aikavälit ovat seuraavat: 16 ms, 32 ms, 64 ms, 0.125 sekuntia, 0.25 sekuntia, 0.5 sekuntia, 1 sekuntia, 2 sekuntia, 4 sekuntia ja 8 sekuntia, kuten näemme myöhemmin sisällyttämässäni taulukossa.
Jos sinulle ei vieläkään ole selvää, mitä voit tehdä Watchdog Timerilla Arduino UNO, katsotaan Esimerkki joten voit ymmärtää sen graafisesti. Tässä esimerkissä käytämme yksinkertaista LED-valoa, joka vilkkuu (vilkkuu). LED-valot vilkkuvat tietyn ajan, ennen kuin ne siirtyvät while()-silmukkaan. Tätä while()-silmukkaa käytetään vaihtoehtona estojärjestelmälle. Koska Watchdog-ajastinta ei nollata while()-silmukan aikana, se käynnistää järjestelmän uudelleen ja LED-valot alkavat vilkkua uudelleen ennen kuin järjestelmä kaatuu ja käynnistyy uudelleen. Tämä kierto jatkuu…
Huomioita ja ominaisuuksia
Watchdog Ajastin Se on poistettu käytöstä koodin alussa. x sekunnin viive on sisällytetty ennen Watchdogin käyttöönottoa. Tämä viive on ratkaisevan tärkeä, jotta Arduino-käynnistyslataaja voi tarkistaa, ladataanko uutta koodia ja jotta koodin polttamiseen flash-muistiin jää riittävästi aikaa. Tämä näkökohta on tärkeä varotoimenpiteenä. Voi syntyä tilanne, jossa virheellisestä koodauksesta tai virheellisistä syistä johtuen kirjoitettu koodi nollaa mikro-ohjaimen hyvin lyhyin väliajoin äärettömästi. Tämä voi vahingoittaa Arduino-levyä ja estää koodien lataamisen siihen oikein. Jos näin tapahtuu, sinun on poltettava käynnistyslatain käyttämällä toista Arduinoa ISP:nä lukitussa Arduinossa...
Kun käytämme Arduino vahtikoiraa, sitä on käytettävä bittirekisterit määrittääksesi sirun käyttäytymisen. Asiaankuuluvat rekisterit ja niiden merkitys on kuvattu yksityiskohtaisesti Arduino-kortilla olevassa mikro-ohjaimen tietolomakkeessa. Arduino integroidussa kehitysympäristössä (IDE) on kuitenkin joitain toimintoja ja makroja, jotka on suunniteltu yksinkertaistamaan tätä prosessia, ja ne voidaan tuoda sisällyttämällä kirjasto. #sisältää käyttääksesi AVR-sirun vahtikoiraa.
Tällä tavalla voimme konfiguroida vahtikoiran aktivoimalla sen wdt_enable()-funktiolla. Tämän toiminnon argumentti määrittää ajan, jonka jälkeen kortti nollautuu, jos ajastinta ei ole nollattu. Mitä tulee arvoihin, jotka voit määrittää koodissa, sisällytän ne tähän:
Aika ennen vahtikoiran laukaisua | wtd_enable()-argumentti |
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 |
Esimerkki vahtikoiran käytöstä Arduinossa
Lopuksi katsotaan kuinka vahtikoiraa käytetään käytännössä esimerkin avulla Arduino IDE:ssä. Kuten näemme, se on melko yksinkertaista, voit löytää erilaisia tällaisia lähdekoodeja Internetistä, jotta voit harjoitella, muokata ja luoda omia koodeja käyttääksesi vahtikoiraa projekteissasi. Katsotaan meidän esimerkkimme:
#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... }
Kuten tästä Arduino-luonnoksen esimerkistä voidaan nähdä, niitä on kolme toimintoa merkittävistä ohjelmointikielistä vahtikoiran hallintaan, ja nämä ovat:
- wdt_disable() poistaaksesi ajastimen käytöstä Arduinon määrittämisen aikana.
- wdt_enable(aika) määrittääksesi aikavälin ajastimelle ja käynnistääksesi sen, määrittämällä vastaava aika, kuten olen osoittanut edellisessä taulukossa.
- wdt_reset() määrätyn aikavälin uusimiseksi ja jotta ohjelma ei käynnisty uudelleen.