Atmega128, 64 등 Micon 인터럽트 루틴에서 가끔 오류가 발생한다. 그것은 레지스트리의 값이
일부 바뀌는 경우가 종종 발생한다. 따라서 인터럽트 루틴에서 께산식이 들어 갈째는 반드시
레지스트리 특히 Status Resist 는 백업해 놓고 인터럽트 루틴읗 처리 하는 것이 좋다.
인터럽트 루틴의 처리가 완료되면 Re-Store 한다음 인터럽트 루틴을 종료 한다. 뭐 어셈블러에서는 당연히 하는건데...
interrupt [USART_TXC] void uart_tx_isr(void)
{
#asm
push r26
push r27
push r30
push r31
in r26,sreg
push r26
#endasm
if(++TX_Counter < TX_Buffer_Size){
UDR = TX_Buffer[TX_Counter];
UCSRB |= TX_ENABLE;
}
else TX_buffer_overflow = 1;
#asm
pop r26
out sreg,r26
pop r31
pop r30
pop r27
pop r26
#endasm
}
'AVR & ATmega' 카테고리의 다른 글
AVR-GCC 정리 (0) | 2019.11.28 |
---|---|
Tach Driver IC(ADC7843) Driver Source File (0) | 2016.07.12 |
Atmega32 (0) | 2015.02.18 |
AVR 시리즈의 Fuse 비트 설정 (0) | 2015.02.07 |
AVR Studio Download (0) | 2015.01.29 |