Ljutik1 (19.06.2012 18:06, просмотров: 2000)
Танцы с бубном. ATmega48 Господа, помогите. Чего-то никак не соображу. Компилятор CodeVision 2.04.4a
программа - модем. Передатчик берет данные с UARTa, генерит 2 разные частоты (100кгц для 0 и 120кгц для 1). Приемник компаратором ловит и пихает в UART.
вот кусок кода процедуры приемника:
UART_RX_ENA ();
data=UDR0;
#asm ("sei");
status = 0;
delay_us (4500); // задержка на принятие 1 байта
status = UCSR0A;
data=UDR0;
UART_RX_DISA ();
В процедуре обработки прерывания компаратора первой строкой стоит глобальное запрещение прерываний #asm("cli")
По логике, после одного прерывания по компаратору, прием данных должен остановиться. Однако, данные принимает совершенно нормально.
Специально проверил - прерывания больше нигде не включаются.
Как такое может быть?
Оно, конечно, можно забить и двигаться дальше. Только вот червячок точит...