AVR & ATmega

Atmegaxx Micom Interrupt 처리에 따른 주의사항.

EP 기술연구소 2016. 7. 25. 15:19

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