Так... мне тоже требуется помощь.
Объявляю прерывание так:
Код
extern "C"{
void USART_RXC_vect(void) __attribute__((interrupt));
void USART_RXC_vect(void)
{
_delay_ms(1);
}
Ассемблерный код:
Код
sei
push r1
push r0
in r0, 0x3f; 63
push r0
eor r1, r1
push r24
push r25
ldi r24, 0x66; 102
ldi r25, 0x0E; 14
sbiw r24, 0x01; 1
brne .-4; 0x210 <__vector_11+0x14>
pop r25
pop r24
pop r0
out 0x3f, r0; 63
pop r0
pop r1
reti
В этом случае прерывания не обслуживается.
Если объявляю так:
Код
ISR(USART_RXC_vect)
{
_delay_ms(1);
}
ассемблер:
Код
push r1
push r0
in r0, 0x3f; 63
push r0
eor r1, r1
push r24
push r25
ldi r24, 0x66; 102
ldi r25, 0x0E; 14
sbiw r24, 0x01; 1
brne .-4; 0x20e <__vector_11+0x12>
pop r25
pop r24
pop r0
out 0x3f, r0; 63
pop r0
pop r1
reti
Прерывания обслуживаются. В чем дело? Мозг кипит.
Да, смотрел таблицу прерываний, там все ок.