Передача данных

Работа передатчика разрешается установкой разряда TXEN=1 в Rg UCSRB, после чего вывод TxD (PD1) подключается к передатчику USART и начинает функционировать как выход независимо от установок регистра управления портом.

Передача инициируется записью передаваемых данных в буферный регистр передатчика Rg UDR, затем данные поступают в сдвиговый регистр передатчика. Если используется 9 – разрядные данные, то до записи младших 8 разрядов в сдвиговый регистр, значение разряда TXB8 в Rg UCSRB копируется в девятый разряд сдвигового регистра.

После пересылки слова данных в сдвиговый регистр флаг опустошения регистра данных UDRЕ в Rg UCSRA устанавливается в 1, что означает готовность передатчика к получению нового слова данных. В этом состоянии флаг остается до следующей записи в буфер. Одновременно с пересылкой в регистре формируется служебная информация – старт-бит, возможный бит четности, а также один или два стоп-бита.

После загрузки сдвигового регистра его содержимое начинает сдвигаться вправо и поступать на вывод TxD. Скорость сдвига определяется настройками контроллера тактовых сигналов. При работе в синхронном режиме изменение состояния вывода TxD происходит по фронту сигнала XCK.

Если во время передачи в Rg UDR было записано новое слово данных, то после передачи последнего стоп-бита, оно пересылается в сдвиговый регистр. Если же к моменту окончания передачи кадра такой записи выполнено не было, то устанавливается флаг прерывания «Передача завершена» TxC=1 в Rg UCSRA. Сброс флага осуществляется аппаратно при входе в подпрограмму обработки соответствующего прерывания или программно, записью в этот разряд логической 1.

Выключение передатчика осуществляется сбросом разряда TXEN в Rg UCSRB. Если в момент выполнения этой команды осуществлялась передача, то сброс разряда произойдет только после завершения текущей и отложенной передачи, то есть после очистки сдвигового и буферного регистров передатчика.

При выключенном передатчике вывод TxD используется как контакт ввода/вывода общего назначения.