0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovBaza znanjaBascom kotičekWatchdog timer pri AVR mikrokontrolerjih

    Watchdog timer pri AVR mikrokontrolerjih

    Ker izbor varnostnih nivojev ni odvisen od Bascoma (to omogočajo nove verzije Bascoma z ukazom $PROG LB, FB, FBH, FBX – op. ur.), pač pa od postopka programiranja, jih ne bomo bolj podrobno opisovali. Dovolj je, da vemo, kako Bascom med postopkom konfiguriranja in izklopa WDT uporablja postopke, ki so v skladu z varnostnimi nivoji 1 in 2.

    Naslednje izboljšanje predstavlja MCUCSR register, v katerem se WDRF bit (Watchdog Reset Flag) avtomatično postavi v trenutku, ko WDT preskoči. Med Power-on resetom se WDRF bit zbriše. Zato nam stanje WDRF bita na začetku programa govori o tem, ali je ta izvršitev programa bila zagnana na običajen način (z vključitvijo napajalne napetosti ali z zunanjim resetom) ali je to posledica Watchdog reseta. V kombinaciji z »$noramclear« ukazom, ki preprečuje brisanje spremenljivk ob resetu, nam to lahko pomaga pri reinicializaciji programa po WDT resetu.

    WDRF bit vpliva na nekatere druge postavke WDT, zato ga Bascom briše pri inicializaciji programa. Bascom ga pred inicializacijo prepiše z vsebino MCUCSR register v register R0. Zato bi bilo dobro pred izvršitvijo drugih ukazov shraniti vrednost registra R0 v neko spremenljivko:

    Dim Wdt_pom As Byte
    STS {wdt_pom},r0 'R0 vsebuje MCUSR,                 pospravi  

    Namesto asemblerskega ukaza STS lahko uporabimo tudi Bascom ukaz Peek:

    Wdt_pom = Peek(0)

    Sledi običajna inicializacija programa, v primernem trenutku pa preverimo stanje WDRF bita:

    If Wdt_pom.wdrf = 1 Then ‘če je bil WDT reset

      Lcd "WDT reset"                        'izpiši sporočilo
    End If

    Namesto izpisa lahko v »pravem« programu po WDT resetu poskusimo rekonstruirati stanje programa pred resetom in vzpostaviti njegovo normalno nadaljevanje.

    Primer »WDT_test_8515.bas«, ki ga lahko brezplačno dobite v uredništvu revije ilustrira uporabo WDT pri mikrokontrolerju ATmega8515. Vloga tipk je naslednja:

    • TP1: požene WDT,
    • TP2: zaustavi WDT,
    • TP3: resetira WDT.

    Po pritisku na tipko TP1 je WDT zagnan, v intervalih, krajših kot 2 s, pa je potrebno pritiskati TP3. Če nastavimo daljši interval izmed dveh pritiskov na tipko, bo WDT resetiral mikrokontroler in na prikazovalniku se bo izpisalo sporočilo »WDT reset«. Če pritisnemo Reset tipko na MiniPin, se bo program zagnal brez sporočila »WDT reset«, kar pomeni, da je program uspešno prepoznal izvor reseta mikrokontrolerja.

    Slike ni

    ATtiny2313

    ATtiny2313 in drugi novejši mikrokontrolerji imajo poboljšan WDT (slika 2), ki ga krmili vgrajen 128 kHz oscilator. 10 različnih faktorjev deljenja omogoča WDT reset intervale od 16 ms do 8 s. Med programiranjem lahko WDTON varovalko vključimo in WDT bo ves čas vključen ter ga ne bo možno programsko izklopiti.

    Mikrokontrolerji s poboljšanim WDT nudijo novo prekinitev, ki jo omogoča WDT prehod. Zdaj imamo na razpolago naslednje možnosti:

    • samo WDT prekinitev,
    • samo reset mikrokontrolerja,
    • WDT prekinitev in reset mikrokontrolerja.

    Prejšnji članek
    Naslednji članek