Передача данных
Работа передатчика разрешается установкой в «1» разряда TXEN n регистра UCSR n B. При установке разряда вывод TXD n подключается к передатчику USART и начинает функционировать как выход независимо от установок регистров управления портом. Если используется синхронный режим работы (в USART), переопределяется также функ- ционирование вывода XCK n. Передача инициируется записью передаваемых данных в буферный регистр передатчика — регистр данных UDR. После этого данные пересылаются из регистра UDR в сдвиговый регистр передатчика. Одновременно, если используются 9_разрядные данные, значение разряда TXB8 n регистра UCSR n B копируется в 9_й разряд сдвигового регистра. При этом возможны два варианта:
Очевидно, что 9_й разряд данных должен быть загружен в разряд TXB8 n до записи млад- шего байта слова в регистр данных. После пересылки слова данных в сдвиговый регистр, флаг UDRE n регистра UCSR n A устанавливается в «1», что означает готовность передатчика к получению нового слова данных. В этом состоянии флаг остается до следующей записи в буфер. Одновременно с пересылкой в регистре формируется служебная информация — старт_бит, возможный бит четности, а также один или два стоп_бита. После загрузки сдвигового регистра его содержимое начинает сдвигаться вправо и посту пать на вывод TXD n в порядке, рассмотренном выше. Скорость сдвига определяется настройками контроллера тактовых сигналов. При работе в синхронном режиме изменение состояния вывода TXD n происходит по одному из фронтов сигнала XCK n. Если разряд UCPOL n регистра UCSR n C сброшен в «0», изменение состояния вывода происходит по нарастающему фронту сигнала XCK n, если же установлен в «1» — по спадающему фронту сигнала, как показано на Рис.8.6
Рис.8.6. Временные диаграммы для синхронного режима работы USART Если во время передачи в регистр UDR было записано новое слово данных, то после передачи последнего стоп_бита оно пересылается в сдвиговый регистр. Если же к моменту окончания передачи кадра такой записи выполнено не было, устанавливается флаг прерывания «Передача завершена» TXC n регистра UCSR n A. Сброс флага осуществляется аппаратно при входе в подпрограмму обработки соответствующего прерывания или программно, записью в этот разряд лог. 1. Выключение передатчика осуществляется сбросом разряда TXEN n регистра UCSR n B. Если в момент выполнения этой команды осуществлялась передача, сброс разряда произойдет только после завершения текущей и отложенной передач, т. е. после очистки сдвигового и буферного регистров передатчика. При выключенном передатчике вывод TXD n может использоваться как контакт ввода/вывода общего назначения.
|