Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Пример на Си




void USART_Transmit( unsigned int data )

{

/* Ждать очистки буфера передатчика */

 

while (!( UCSRA & ( 1<<UDRE ));

 

/* Скопировать 9-й бит данных из г17 в ТХВВ */

 

UCSRB &= ~ ( 1 << TXB8 );

 

if (data & 0x10O)

 

UCSRB |= ( 1 << TXB8 );

 

/* Загрузить младший байт данных в буфер, начать передачу */

UDR = data;

 

}

 

Приём данных

Работа приемника разрешается установкой бита RXENn регистра UCSRnB.При установке бита RXDn подключается к приёмнику USART и начинает функционировать как вход независимо от установок регистров управления портом. Если используется синхронный режим работы, переопределяется также функционирование вывода ХСК (ХСКn).

Прием данных начинается сразу же после обнаружения приемником корректного старт-бита. Каждый бит содержимого кадра затем считывается с частотой, определяемой установками контроллера скорости передачи или тактовым сигналом ХСК (ХСКn). Считанные биты данных последова­тельно помещаются в сдвиговый регистр приемника до обнаружения пер­вого стоп-бита кадра. После этого содержимое сдвигового регистра пере­сылается в буфер приемника, из которого принятое значение может быть получено путем чтения регистра данных модуля. При использовании 9-битных слов данных значение старшего бита может быть определено по состоянию флага RXS (RXSn) регистра UCSRB (UCSRnB). Причем содер­жимое старшего бита данных должно быть считано до обращения к регист­ру данных. Это связано с тем, что флаг RX8 (RXS8n) отображает значение старшего бита слова данных кадра, находящегося на верхнем уровне буфера приемника, состояние которого при чтении регистра данных изменится.

Если во время приема кадра была включена схема контроля четности, она вычисляет бит четности для всех битов принятого слова данных и сравнивает его с принятым битом четности. Результат проверки запомина­ется в буфере приемника вместе с принятым словом данных и стоп-бита-ми. Наличие или отсутствие ошибки контроля четности может быть затем определено по состоянию флага UPE (UPEn). Этот флаг устанавливается в 1» если следующее слово, которое может быть прочитано из буфера, име­ет ошибку контроля четности. При выключенном контроле четности флаг UPE (UPEn) всегда читается как 0.

Блок приемника модулей USART имеет еще два флага, показывающих состояние обмена, — флаг ошибки кадрирования FE (FЕn) и флаг перепол­нения DOR (DORn). Флаг FE (FЕn) устанавливается в 1, если значение пер­вого стоп-бита принятого кадра не соответствует требуемому, т. е. равно 0.

Флаг DOR (DORn) индицирует потерю данных из-за переполнения бу­фера приемника. Этот флаг устанавливается в 1 в случае приема старт-бита нового кадра при заполненных буфере и сдвиговом регистре приемника. Установленный флаг DOR (DORn) означает, что между прошлым байтом, считанным из регистра UDR, и байтом, считанным в данный момент, про­изошла потеря одного или нескольких кадров.

Обратите внимание на то, что все флаги ошибок буферизуются вместе со словом данных, т. е. соответствующие биты регистра UCSRA (UCSRhA) относятся к кадру, слово данных которого будет прочитано при следующем обращении к регистру данных UDR (UDRn). Поэтому состояние этих флагов должно быть считано веред обращением к регистру данных. Кроне того, для совместимости с будущими устройствами рекомендуется при записи в регистр UCSRA (UCSRnА) сбрасывать соответствующие этим фла­гам биты записываемого значения в 0.

Для индикации состояния приемника в модулях USART используется флаг прерывания «прием завершен» RXC (RXCn) регистра UCSRA (UCSRnA). Этот флаг устанавливается в 1 при наличии в буфере приемни­ка непрочитанных данных и сбрасывается в 0 при опустошении буфера (после считывания всех находящихся в нем данных).

Выключение приемника осуществляется сбросом бита RXEN (RXENn) регистра UCSRB (UCSRnB). В отличие от передатчика, приемник выклю­чается сразу же после сброса бита, а значит, кадр, принимаемый в этот мо­мент, теряется. Кроме того, при выключении приемника очищается его буфер, т. е. теряются также все непрочитанные данные. При выключенном приемнике вывод RXD (RXDn) может использоваться как контакт вво­да/вывода общего назначения.

Пример подпрограммы приема по интерфейсу USART приведен ниже. Как и в предыдущем примере, здесь используется опрос флага прерывания.

 


Поделиться:

Дата добавления: 2014-12-30; просмотров: 188; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты