Привет, я пытаюсь настроить прерывание таймера переполнения на Таймер 3 8051. Код застревает в подпрограмме прерывания. Я использую 2511F32 (Wixel)Установка прерывания таймера в 8051, получение stuck
Вот код настройки прерываний:
{ ......
T3CTL |= 0xE0; // set prescaler to tick frequency/128 (DIV) bits 7:5
T3CTL |= 0x04; // Clear counter value (CLR - bit 2)
T3CTL |= 0x00; // Timer mode set to free running (00) bits 1:0
T3CTL |= 0x08; // Enable overflow interrupt (OVFIM) bit 3
T3CCTL1 &= ~0x40; // disable timer compare interrupts
T3CCTL0 &= ~0x40; // disable timer compare interrupts
IEN1 |= 0x08; // Enable Timer 2 interrupts
T3CTL |= 0x10; // Start the timer (START - bit 4)
EN = 1;
......
}
Вот прерываний код
ISR(T3,0)
{
TIMIF &= ~0x07; // T3OVFIF Clear T3 overflow interrupt flag - bit 0
LED_YELLOW_TOGGLE();
}
Он остается в ловушке в рутине ISR. Других флагов прерывания нет. Есть идеи ?
Что делает LED_YELLOW_TOGGLE()? Можете ли вы также опубликовать код этого? –
Попробуйте 'IRCON & = ~ 0x07;' – UncleO
@MartinThompson - это просто переключатель ввода/вывода: #define LED_YELLOW_TOGGLE() {P2DIR^= 0x04;} – jelipito