Koda: |
... Wdtcr = &B01100111 'Nastavi WDT na 8s , INT Print #1 , "SLEEP: Powerdown" Powerdown 'Procesor v spanje Print #1 , "Wakeup ... nadaljuj" 'Čez 8s nadaljuj ... |
Koda: |
wdt_reset(); |
Koda: |
__asm__ __volatile__ ("wdr"); |
Koda: |
/*
//watchdog nastavitve (ne dela!!!!) cli(); __asm__ __volatile__ ("wdr"); //WATCHDOG brisanje časa //MCUSR &= ~(1<<WDRF); WDTCSR |= (1<<WDCE) | (1<<WDE); //omogoči watchdog nastavitev in aktiviraj WDTCSR |= (1<<WDE) | (1<<WDP3); //prescaler za 4 sekunde */ sei(); // omogočanje prekinitev //************************************************** //***************** GLAVNI PROGRAM ***************** //************************************************** while (1) { //__asm__ __volatile__ ("wdr"); //WATCHDOG brisanje časa Read_Time(); Print_Time(); |
Koda: |
//--------------------------------------------------------------------
void WDT_off () //izključi WDT. Se mora obvezno izvesti na začetku izvajanja programa, //ker drugače uC vedno ostane v resetu. Uporablja se tudi v vstopu v meni { MCUSR &= ~(1 << WDRF); WDTCSR = (1<<WDCE) | (1<<WDE); //omogoči watchdog nastavitev in aktiviraj WDTCSR = 0; } //-------------------------------------------------------------------- void WDT_on () //vključi WDT. Uporablja se na začetku programa in pri izstopu in menijevtudi v vstopu v meni //trenutno s temi nastavitvami ima 4 sekundni takt { cli(); WDTCSR = (1<<WDCE) | (1<<WDE); //omogoči watchdog nastavitev in aktiviraj WDTCSR = (1<<WDE) | (1<<WDP3); //prescaler za 4 sekunde sei(); } |