SLEEP mode při TIMER2 v asynchroním modu
Napsal: 18 bře 2013, 21:59
Navrhl jsem si hodiny se 7-segmentovkami a Atmega8
Hodiny běží pomocí RTC s TIMER2 v asynchronním modu. Hodiny mi běží ale řeším záložní napájení.
Napájení je ze sítě + záložní baterie, oddělené diodami. Napájení je detekováno Log1 na jednom pinu.
Nedaří se mi nastavit SLEEp mod POWER SAVE při napájení z baterie
TIMER0 používám na multiplex segmentovek, proto jej chci vypnout. Pokud nevypnu přerušení od TIMER0 segmenty svítí dál. Pokud to mám nastaveno tak jajk je uvedeno tak se mi Atmega již neprobudí.
Dokážete poradit?
Hodiny běží pomocí RTC s TIMER2 v asynchronním modu. Hodiny mi běží ale řeším záložní napájení.
Napájení je ze sítě + záložní baterie, oddělené diodami. Napájení je detekováno Log1 na jednom pinu.
Nedaří se mi nastavit SLEEp mod POWER SAVE při napájení z baterie
Kód: Vybrat vše
if(READ_SUPPLY_PIN==0)
{
//Napájení odpojeno, zrušit povolení přerušení od TIMER0,
//odpojit segmenty,zapnutí SLEEP mod POWER SAVE
//Zakázat přerušení od TIMER0
TIMSK&=~(1<<TOIE0);
//Vypnutí segmisegmentovek
SEVEN_SEGMENT_PORT=0X00;
SEGMENT_PORT&=~((1 << _SEG_HOD_10) | (1 << _SEG_HOD_01) | (1 << _SEG_MIN_10) | (1 << _SEG_MIN_01));
//Kontrola TIMER2
while (!(ASSR & ((1<<TCN2UB)|(1<<TCR2UB)|(1<<OCR2UB))));
//nastaveni SLEEP modu
set_sleep_mode(SLEEP_MODE_PWR_SAVE);
sleep_mode();
//Povolení přerušení od čassovače TIMER0
TIMSK|=(1<<TOIE0);
TCNT0=0;
}TIMER0 používám na multiplex segmentovek, proto jej chci vypnout. Pokud nevypnu přerušení od TIMER0 segmenty svítí dál. Pokud to mám nastaveno tak jajk je uvedeno tak se mi Atmega již neprobudí.
Dokážete poradit?