-
- А при передаче первового байта (если прежде буфер был пуст) включаете UDRE? Тогда, у вас вынимание байта из буфера и запись его в приемник дублируется в обоих обработчиках (UDRE и TXC)? Или я неверно поняла принцип? - Ксения(12.09.2013 16:04)
- Ксения, если Вы посылаете одиночные байты с периодом = или больше скорости передачи , то в буфере передатчика байт не задержится никогда - прямяком в сдвиговый регистр. Т.е флаг UDRE стоит практически всегда. Лучше юзать - конец передачи Если Вы ilyaul(296 знак., 12.09.2013 19:48)
- А тогда зачем сделали TXC? Ксения(271 знак., 12.09.2013 20:40)
- Так , флажок TXC появляется , если байт отослан И в буфере передатчика тоже пусто т.е флаг UDRE установлен.Если же флаг UDRE сброшен (в буфере передатчика завалялся байтик) ,то TXC не установится , даже если отослан байт.Где-то у меня была схемка ilyaul(246 знак., 12.09.2013 21:11 - 21:15)
- Если UDRE подвис (не успели в него записать данные за время передачи байта?), то нужно кроме записи в UDR записывать 1 в TXC во время передачи каждого байта. - Apтём(12.09.2013 21:15)
- Txc позволяет узнать что байт передан. Это нужно для 485-го. Или если нужно послать в uart и уйти в глубокий сон по окончании передачи. Apтём(81 знак., 12.09.2013 20:53)
- Так , флажок TXC появляется , если байт отослан И в буфере передатчика тоже пусто т.е флаг UDRE установлен.Если же флаг UDRE сброшен (в буфере передатчика завалялся байтик) ,то TXC не установится , даже если отослан байт.Где-то у меня была схемка ilyaul(246 знак., 12.09.2013 21:11 - 21:15)
- А тогда зачем сделали TXC? Ксения(271 знак., 12.09.2013 20:40)
- В TXC ничего в UDR не пишется, там только направление RS485 переключается. В UDRE ещё нужно TXC сбросить, если вдруг он установился до конца пакета. - Apтём(12.09.2013 16:07)
- У меня, слава Богу, не RS485, а простой UART/RS232. В таком случае, ваш вариант эквивалентен отказу от использования прерывания TXC в пользу UDRE. - Ксения(12.09.2013 16:18)
- Да, если RS485 не нужен, то с TXC делать ничего не надо. - Apтём(12.09.2013 16:22)
- Как вы полагаете. Если разрешить СРАЗУ ОБА прерывания (TXC и UDRE), а TXC пошлёт байт первым, то UDRE следом вызовется или его флаг надо стирать внутри TXC-обработчика, чтобы его подавить его вызов? - Ксения(12.09.2013 16:53)
- Если использовать два прерывания(RS485), то в TXC ничего посылать не надо, там только направление переключается. Для RS232 не нужно два прерывания использовать. Apтём(198 знак., 12.09.2013 17:00)
- + в общем-то прерывание нужно использовать только на приём, чтобы вовремя забирать то, что туда прилетело. При передаче, как правило, это не нужно. Достаточно отслеживать то, что передача ещё не закончена, и затем пихать туда новый байт. Adept(3469 знак., 12.09.2013 17:35 - 18:03)
- Что делать...бросать писать на ассемблере. Apтём(234 знак., 12.09.2013 17:42)
- + в общем-то прерывание нужно использовать только на приём, чтобы вовремя забирать то, что туда прилетело. При передаче, как правило, это не нужно. Достаточно отслеживать то, что передача ещё не закончена, и затем пихать туда новый байт. Adept(3469 знак., 12.09.2013 17:35 - 18:03)
- Если использовать два прерывания(RS485), то в TXC ничего посылать не надо, там только направление переключается. Для RS232 не нужно два прерывания использовать. Apтём(198 знак., 12.09.2013 17:00)
- Как вы полагаете. Если разрешить СРАЗУ ОБА прерывания (TXC и UDRE), а TXC пошлёт байт первым, то UDRE следом вызовется или его флаг надо стирать внутри TXC-обработчика, чтобы его подавить его вызов? - Ксения(12.09.2013 16:53)
- Да, если RS485 не нужен, то с TXC делать ничего не надо. - Apтём(12.09.2013 16:22)
- У меня, слава Богу, не RS485, а простой UART/RS232. В таком случае, ваш вариант эквивалентен отказу от использования прерывания TXC в пользу UDRE. - Ксения(12.09.2013 16:18)
- Ксения, если Вы посылаете одиночные байты с периодом = или больше скорости передачи , то в буфере передатчика байт не задержится никогда - прямяком в сдвиговый регистр. Т.е флаг UDRE стоит практически всегда. Лучше юзать - конец передачи Если Вы ilyaul(296 знак., 12.09.2013 19:48)
- А при передаче первового байта (если прежде буфер был пуст) включаете UDRE? Тогда, у вас вынимание байта из буфера и запись его в приемник дублируется в обоих обработчиках (UDRE и TXC)? Или я неверно поняла принцип? - Ксения(12.09.2013 16:04)