Arduino Watchdog: Kuinka se toimii

vahtikoira Arduino

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?

kirjoja arduinosta

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.

Mikro-ohjain tai MCU on pieni elektroninen laite, joka integroi keskusyksikön (CPU), muistin, syöttö-/lähtöoheislaitteet ja joskus tietoliikennerajapinnat yhdelle sirulle. Se on suunniteltu hallitsemaan ja suorittamaan tiettyjä tehtäviä.

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
Lisätietoja saat Arduino-tietolomakkeesta, josta löydät lisätietoja itse integroidusta mikro-ohjaimesta, vahtikoiran kanssa käytettävistä rekistereistä, pinoutista, oheislaitteista, teknisistä tiedoista, jännitteistä, virrankulutuksesta jne.

Esimerkki vahtikoiran käytöstä Arduinossa

Arduino IDE, tietotyypit, ohjelmointi

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.

Ole ensimmäinen kommentti

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.