Передача данных
Блок-схема передатчика UART показана на рис. 42.
Рис. 42. Передатчик UART
Передача данных инициируется записью передаваемых данных в регистр данных I/O UART (UDR). Данные пересылаются из UDR в сдвиговый регистр передачи в следующих случаях:
- Новый символ записан в UDR после того как был выведен из регистра стоповый бит предшествовавшего символа. Сдвиговый регистр загружается немедленно.
- Новый символ записан в UDR прежде, чем был выведен стоповый бит
предшествовавшего символа. Сдвиговый регистр загружается после выхода стопового
бита передаваемого символа, находившегося в сдвиговом регистре.
Если из 10(11)-разрядного сдвигового регистра передачи выведена вся информация (сдвиговый регистр передачи пуст) данные из UDR пересылаются в сдвиговый регистр. В это время устанавливается бит UDRE (UART Data Register Empty) регистра статуса UART (USR). При установленном в состояние 1 бите UDRE UART готов принять следующий символ. Запись в UDR очищает бит UDRE. В то самое время, когда данные пересылаются из UDR в 10(11)-разрядный сдвиговый регистр, бит 0 сдвигового регистра сбрасывается в состояние 0 (состояние 0 - стартовый бит) а бит 9 или 10 устанавливается в состояние 1 (состояние 1 - стоповый бит). Если в регистре управления UART (UCR) установлен бит CHR9 (т.е. выбран режим 9-разрядного слова данных), то бит TXB8 регистра UCR пересылается в бит 9 сдвигового регистра передачи.
Сразу после пересылки данных в сдвиговый регистр тактом бод-генератора стартовый бит сдвигается на вывод TXD. За ним следует LSB данных. Когда будет выдан стоповый бит сдвиговый регистр загружается новой порцией данных, если она была записана в UDR во время передачи. В процессе загрузки бит UDRE находится в установленном состоянии. Если же новые данные не будут загружены в UDR до выдачи стопового бита, флаг UDRE остается установленным. В этом случае, после того как стоповый бит будет присутствовать на выводе TXD в течение одного такта, в регистре статуса UART (USR) устанавливается флаг завершения передачи TXC (TX Complete
Flag).
Установленный в состояние 1 бит TXEN регистра UCR разрешает передачу UART. При очищенном бите TXEN (сброшенном в состояние 0) вывод PE1 может быть использован в качестве вывода I/O общего назначения. При установленном бите TXEN передатчик UART подключается к PE1 и использует его в качестве вывода выхода, независимо от установки бита DDE1 в DDRE.
|