Использую А0 для формирования задержек, а А1 для часов.
Вот так я инициализирую таймер:
Код
TACCTL0=CCIE;
TACCTL1=CCIE;
TACCR1=32767;
TACTL=TASSEL0+TAIE+MC0;
//IAR показывает, что TACCTL0=0x418, TACCTL1=0x10
А0 работает так, как от него требуется.
Код
void sleep(unsigned short tacts)
{
__enable_interrupt();
TACCR0=tacts;
__low_power_mode_3();
TACCR0=0;
}
#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA0_ISR(void)
{
__low_power_mode_off_on_exit ();
};
А что происходит с А1, я понять не могу: он перестает генерировать прерывания в LPM3. Вроде, все делаю, как написано в исходниках-примерах.
Код
#pragma vector=TIMERA1_VECTOR
__interrupt void TimerA1_ISR(void)
{
if(TAIV==2)
{
(здесь увеличиваем время на секунду)
}
P2OUT ^= 0x40; //мигаем светодиодом
}
Помогите разобраться, где здесь ошибка.
Сообщение отредактировал LCD - Sep 10 2008, 17:00