А зачем всегда прерывание по передаче стоит? У меня UCSR1B = _BV(RXCIE1) | _BV(RXEN1) | _BV(TXEN1); в инициализации.
Сам использую кольцевой буфер. При записи в него активизируется прерывание, после опустошения - блокируется. Еще вопрос: а нет конфликта по прерываниям, то есть их не много сыплется одновременно?
Попробуйте поставить точку прерывания в то место, где таймаут и запустите на выполнение. Можно наставить несколько аналогичных ловушек. У себя так программные ляпы отлавливал.
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|