0,00 €

V košarici ni izdelkov.

0,00 €

V košarici ni izdelkov.

More
    DomovRevijaProgramiranjeWatchdog timer pri AVR mikrokontrolerjih

    Watchdog timer pri AVR mikrokontrolerjih

    Slike ni

    V zahtevnih programih, ki nadzirajo stanje večjega števila signalov (V/I vrat ali kontrolnih bitov v registrih mikrokontrolerja), se lahko zgodi, da se program zacikla v zanki, v kateri pričakuje kombinacijo stanj, ki se nikoli ne bo zgodila. Zaciklan program izgubi svojo funkcionalnost in naprava, ki jo krmili mikrokontroler, preneha zanesljivo delovati. Osnovni namen Watchdog timerja (WDT) je prepoznavanje takšnih stanj in vzpostavljanje normalne funkcionalnosti mikrokontrolerja.

    Slike ni

    WDT je števec, ki šteje cikle glavnega ali večkrat tudi lastnega oscilatorja. Pri prelivu števca (ko števec prešteje do določene vrednosti – op. ur.) WDT generira prekinitev ali reset mikrokontrolerja. Med oscilatorjem in WDT-jem se nahaja binarni delilnik s približno desetimi programabilnimi faktorji deljenja, s katerimi nastavljamo čas, po katerem se bo pojavil reset mikrokontrolerja. Glede na frekvenco oscilatorja in izbrani faktor deljenja znaša reset interval od nekaj milisekund do nekaj sekund. Ko v programu konfiguriramo in zaženemo WDT, moramo WDT znotraj nastavljenega časa ciklično resetirati. V nasprotnem primeru bo WDT sam resetiral mikrokontroler. Program, v katerem uporabljamo WDT, mora biti pazljivo napisan. Dve glavni napaki sta:

    • predolg »Wait« ukaz bo povzročil neželen reset mikrokontrolerja (npr. pri nastavljenem WDT času 2 sekundi bo Wait 3 bo povzročil, da bo WDT resetiral mikrokontroler);
    • če se je program zavrtel v neskončni zanki, v kateri resetiramo WDT, od njega ne bo koristi.

    AT90S2313

    Slike ni

    Ta predstavnik starejše generacije AVR-jev nudi samo osnovno funkcionalnost WDT-ja. Za taktni signal WDT uporablja vgrajeni 1 MHz oscilator s faktorjem deljenja 16k, 32k, 64k, 128k, 256k, 512k, 1024k in 2048k. Faktor deljenja iz Bascoma definiramo s »Config« ukazom:

    Config Watchdog = 2048

    Vpisana vrednost približno ustreza času pred resetom v milisekundah (frekvenca WDT oscilatorja je odvisna od napajalne napetosti in temperature). Konfigurirani WDT še ni pognan; zaženemo ga z ukazom:

    Reset Watchdog
    Start Watchdog

    Slike ni

    Slike ni

    Reset WDT-ja pred zagonom je nujen pri tej vrsti mikrokontrolerja. Z resetom začne WDT šteti od 0; v nasprotnem bi bil prvi interval krajši od nastavljenih 2 s. Ko je WDT zagnan, ga je potrebno periodično resetirati znotraj nastavljenega časovnega intervala:

    Do
       Reset Watchdog
       ...
       ...           '< 2s
       ...
    Loop

    Ogled celotnega članka je možna le z nakupom letnika v PDF obliki.

    Nakup literature Programirajmo z Bascom AVR

    Avtor: mag. Vladimir Mitrović
    2012_SE195_41