Тут такая область, что не угадаешь правильного способа.
Можно сколько угодно насовать отладочной информации и всяких переменных, но против хардварных багов это ничем не поможет, а пару недель убить легко на такое копание. Возможнор обход с контрольной суммой будет даже более приемлем.
UART-ы и таймера находятся в разных каскадах контроллера прерываний, и таймеры по любому имеют более высокий приоритет. Возможно проблемы с шиной и надо откорректировать тактовую частоту периферии по отношению к системной.
Цитата(scifi @ Jul 7 2007, 11:08)

Как обычно: отлаживать. Если проблему можно воспроизвести, значит её можно и устранить.
Надо останавливать программу на самом интересном месте (ложное прерывание) и анализировать содержимое стека и переменных. При этом полезно разную отладочную информацию о состоянии программы накапливать в переменных, чтобы было что анализировать.
А насчёт протокола с контрольной суммой и повторными посылками - это, наверное, шутка была. Следуя этой логике, каждый баг программы следует воспринимать как данность и не пытаться его исправить.