Выручай всезнающий Олл!
ATmega 16L проблема с UART, а именно после посылки всего, когда буфер уже пустой возвращается из интерапта на начало программы (фактически рестарт). Код прерывания
Код
ISR(USART0_UDRE_INTERRUPT)
{
uint8_t temp_tail;
if ( USART0_TX_Head != USART0_TX_Tail)
{
temp_tail = (USART0_TX_Tail + 1) & USART_TX_BUFFER_MASK;
USART0_TX_Tail = temp_tail;
USART0_UDR = USART0_TX_Buffer[temp_tail];
}
else {
USART0_UCSRB &= ~(1<<USART0_UDRIE);
USART0_Enable_Int_Status = 1;
}
}
Что я делаю не так. При просмотре в Студии в режиме ассемблега, видно что в переходе на прерывание все пакуется в стек, потом также аккуратно распаковывается, и возвращается по команде RTI, но почемуто в старт?
Може кто с таким эффектом сталкивался?