КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Передача данныхРабота передатчика разрешается установкой в 1 бита TXEN (TXENn) регистра UCSRB (UCSRnB). При установке бита вывод TXD (ТХDn) подключается к передатчику UART и начинает функционировать как выход независимо от установок регистров управления портом. Если используется синхронный режим работы, то переопределяется также функционирование вывода ХСК (ХСКn). Передача инициируется записью передаваемых данных в буферный регистр передатчика — регистр данных UDR (UDRjn). После этого данные пересылаются из регистра UDR (UDRn) в сдвиговый регистр передатчика. Одновременно, если используются 9-битные данные, значение бита ТХВ8(ТХВ8n) регистра UCSRB (UCSRnB) копируется в 9-й бит сдвигового регистра. При этой возможны два варианта: • запись в регистр UDR осуществляется в тот момент, когда передатчик находится в состоянии ожидания (предыдущие данные уже переданы). В этом случае данные пересылаются в сдвиговый регистр сразу же после записи в регистр UDR; • запись в регистр UDR осуществляется во время передачи, в этом случае данные пересылаются в сдвиговый регистр после передачи последнего стоп-бита текущего кадра. Очевидно, что 9-й бит данных должен быть загружен в бит ТХВ8 (ТХВ8n) до записи младшего байта слова в регистр данных. После пересылки слова данных в сдвиговый регистр флаг UDRE (UDREn) регистра UCSRA (UCSRnA) устанавливается в 1, что означает готовность передатчика к получению нового слова данных. В этом состоянии флаг остается до следующей записи в буфер Одновременно с пересылкой в регистре формируется служебная информация — старт-бит, возможный бит четности, а также один или два стоп-бита. После загрузки сдвигового регистра его содержимое начинает сдвигаться вправо и поступать на вывод TXD (TXDn). Скорость сдвига определяется настройками контроллера тактовых сигналов. В синхронном режиме изменение состояния вывода TXD (TXDn) происходит по одному из фронтов сигнала ХСК (ХСКn). Если бит UCPOL (UCPOLn) регистра UCSRC (UCSRnC) сброшен в 0, изменение состояния вывода происходит по нарастающему фронту сигнала, если же установлен в 1 — по спадающему фронту. Если во время передачи в регистр UDR было записано новое слово данных, то после передачи последнего стоп-бита оно автоматически пересылается в сдвиговый регистр. Если же к моменту окончания передачи кадра буфер передатчика будет пуст, устанавливается флаг прерывания «передача завершена» ТХС (ТХСn) регистра UCSRA (UCSRnA). Сброс флага осуществляется аппаратно при входе в подпрограмму обработки соответствующего прерывания или программно, записью в этот бит лог. 1 Выключение передатчика осуществляется сбросом бита TXEN (TXENn) регистра UCSRB (UCSRnB). Если в момент выполнения этой команды осуществлялась передача, сброс бита произойдет только после завершения текущей и отложенной передач, т. е. после очистки сдвигового и буферного регистров передатчика. При выключенном передатчике вывод TXD (TXDn) может использоваться как контакт ввода/вывода общего назначения. Ниже приведен простейший пример подпрограммы передачи по интерфейсу USART Эта подпрограмма ждет очистки буфера передатчика, а затем загружает в него новое значение.
|