Цитата(Oleg_IT @ Dec 19 2005, 17:24)

Цитата(andk @ Dec 19 2005, 15:05)

>6. По приходу прерывания,… и по обнаружения в передаваемом буфере >байта 0xAA перевожу USART на приём, ни чего больше в USART не >посылая.
Хорошо.
Сделай здесь просто запрещение прерывания от передатчика. Но сам передатчик не выключай.
В этом случае у тебя передача должна пройти.
Извиняюсь, а по какому событию мне тогда переводить USART в исходное состояние? По таймауту?
И потом, я считал, что если передача пошла она закончится, как бы я с регистрами не работал. Что, можно остановить передачу на пол байте?
Я имел ввиду только один цикл и только для того что бы разобраться, почему не проходит передача.
Если после моего предложения передача прошла, значит ты просто не дожидаешься окончания передачи и тормозишь уарт на всем скаку.
Передачу конечно ты останавливаешь:
UBRRL = 5; <-- тут не нужно ничего писать, один раз при инициализации достаточно.
UCSRB = 0x94; <-- передатчик выкл и еще 9 тх бит в ноль.
UCSRC = 0xC6; <-- тоже что и в первой строчке
Сообщение отредактировал andk - Dec 20 2005, 09:06