LightElf (12.09.2013 14:47, просмотров: 220) ответил Ксения на Прерывание по UDRE не знает, лежит ли в буфере что-то ещё, требующее передачи, или там пусто. А если пусто, то это прерывание само не успокоится, а будет долбить непрерывно, пока предатчик пуст. Стало быть, это прерывание придется отключать
Я чего-то не понимаю, а в чем проблема включать-выключать прерывание UDRE? Чему это мешает? В функции передачи:
кладем байт в буфер и разрешаем прерывание UDRE.
Удобно, что в функции передачи не нужно анализировать какие-то флаги, проверять чем занят UART и т.д. Просто взводим бит.
В обработчике прерывания:
Если есть данные в буфере - отправляем следующий байт, иначе запрещаем прерывание UDRE. В этот момент можно разрешить прерывание TXC, чтобы уже в его обработчике переключить драйвер RS485 на прием.
Не надо делать мне как лучше, оставьте мне как хорошо