Rtc В Ассинхронном Режиме Бегут В Power-Save Mode

3-03-2013, 21:30 От: admin Посмотрели: 879

Просветите непонятную природу явления:

Часы в ассинхронном режиме на таймере 2 сильно бегут в PowerSave режиме.

atmega168PA


Причем если операции tick() не выносить в процедуру, а исполнять в прерывании то часы бегут,если в прерывании вызвать tick()  как в примере, то явление исчезает - часы идут корректно.

Такое ощущение что прерывание выполняется два раза, но не понятно почему если прерывание оформить в отдельную процедуру tick() явление исчезает.



[indent=1]void tick()
{
// TCNT2 = 0xE0; //reload counter value
//__no_operation(); //_NOP();

TimeRx++;
TickDownReady--;

if(++second==60){
second=0;
if(++minute==60){
minute=0;
if(++hour==24){
hour=0;
date++;
if(date==32)goto tt;
if(date==31)
if((month==4) || (month==6) || (month==9) || (month==11))
goto tt;
if(date==30)goto tt;
if(date==29)goto ee;
if((month==2) && (not_leap())) goto tt;
}
}
}
goto ee;
tt:
month++;
date=1;
if(month==13){
year++;
month=1;
}
ee:

// LEDON(); TMR_DelayUs(100); LEDOFF();
__no_operation(); //_NOP();[/indent]
}

//----------------------------------------------------------------------
#pragma vector=TIMER2_OVF_vect //Second++
__interrupt void timer2_ovf_isr(void)
{
tick();
}


main()
{

__disable_interrupt(); // cli -disable all interrupts
//Power control ************************************************
SMCR = (1<<SE); //set _SLEEP to idle mode 900 uA
SMCR = 0x07; //Power-save mode (USART ) 115 uA

ACSR = (1<<ACD); //Analog Comparator Disable
PRR = (1<<PRTIM0)|(1<<PRTIM1)|(1<<PRADC)|(1<<PRTWI); //Power reduction off: TWI,TIM1,ADC

//TIMER2 RTC ********************************************
TCCR2B = 0x00; //stop
ASSR = (1<<AS2); //AS2-used Ext32kHz
TCCR2B = 5; //32768/128=256=off timer2
TIMSK2 = 0x01; //timer2 ovf interrupt enable
__enable_interrupt();

while (1)
{
while(ASSR&(1<<TCN2UB)){;} //wait to TCNT update!!!

__no_operation();
__sleep();
__no_operation();

if(ps)
SMCR = 0x07; //set Power-save
else
SMCR = (1<<SE); //set Idle
}
}

Раздел: AVR

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться, либо войти на сайт под своим именем.

Обсудить на форуме


На момент добавления Rtc В Ассинхронном Режиме Бегут В Power-Save Mode все ссылки были рабочие.
Все публикации статей, книг и журналов, представлены на этом сайте, исключительно для ознакомления,
авторские права на эти публикации принадлежат авторам статей, книг и издательствам журналов!
Подробно тут | Жалоба
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.


Опрос

Ваши предпочтения в TRX


Одинарное преобразование
Двойное преобразование
Прямое преобразование
SDR
Другое
Мне всё равно

Популярные новости
Календарь новостей
«    Май 2024    »
ПнВтСрЧтПтСбВс
 12345
6789101112
13141516171819
20212223242526
2728293031