vpv.vpv (28.09.2017 06:58, просмотров: 305) ответил argus98 на У АВР есть особенность - для анализа ошибок UCSRA надо читать раньше, чем UDR.
Лучше прочитать UCSRA и UDR во временные регистры, а потом уже неторопясь ковыряться в них, сколько потребуется. Я делаю нечто подобное:
void netRxMarker (void)
{
char c_flag, c_data;
c_flag = UCSR0A; // сохранить принятые флаги для анализа
c_data = UDR0; // очистить приемник, сбросить прерывание
if (cNetProtRequest) // нужен ли вообще сетевой протокол?
{
if ((c_flag & (1<<FE0)) // если установлен бит "ошибка формата"
&& (!c_data)) // и при этом принят ноль (0x00)
{
//......
}
//......
}
}