Цитата
Хотя нет, попробовал на практике и не понял, ведь когда осуществляется прерывание по UDRIE, еще идет передача битов последнего байта.
Совершенно верно
Цитата
Как тогда контролировать окончание передачи, по последнему биту сдвигового регистра? Если так, то какой его (регистра) адрес (не нашел ни в одном описании)?.
Если Вы хотите "контролировать окончание передачи, по последнему биту сдвигового регистра", то используйте прерывание по TXC:UART Transmit complete.
This flag is
especially useful in half-duplex communications interfaces, where a transmitting application
must enter receive mode and free the communications bus immediately after
completing the transmission.
Т.е. этот флаг особенно полезен при работе с полудуплексным интерфейсом, когда передающее приложение должно перейти в режим приема и освободить линию связи сразу после завершения передачи.
Адреса внутреннего сдвигового регистра ни в одном описании Вы не найдете. Зачем оно нужно, если есть флаг TXC.
Похоже, что в Вашем случае линии TXD и RXD физически разделены (т.е. прием и передача по 2 разным проводам). Тогда лучше использовать прерывание UDRE: UART Data register empty.
Либо UDRE, либо TXC - сразу оба использовать не нужно (в общем случае)
Сообщение отредактировал tazik - Apr 26 2008, 06:11