Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AVR.doc
Скачиваний:
17
Добавлен:
26.04.2019
Размер:
2.79 Mб
Скачать

Скорость обмена данными

Скорость приема и передачи данных задается контроллером скорости передач, функционирующим как делитель системного тактового сигнала с программируемым коэффициентом деления. Коэффициент деления определяется содержимым регистра UBRR блока тактирования. Rg UBRR – 12 разрядный регистр, физически размещен в двух регистрах ввода-вывода, причем этот регистр размещается по тому же адресу, что и Rg UCSRC, поэтому при обращении к нему необходимо выполнять определенные действия. Рассмотрим пример установок регистра UBRR при работе USART МК в асинхронном режиме.

Таблица 23. Установка в UBRR скорости обмена данных

Скорость передачи (бит/сек)-бод

Содержимое UBRR

при F=1МГц

Содержимое UBRR

при F=2МГц

2400

25

51

4800

12

25

9600

6

12

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

Работа передатчика разрешается установкой разряда 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 используется как контакт ввода/вывода общего назначения.

Прием данных

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

Логика восстановления данных производит выборку состояний вывода RXD с частотой в 16 раз большей, чем частота бодов. При нахождении линии в пассивном состоянии одиночная выборка нулевого логического уровня будет интерпретироваться как падающий фронт стартового бита и будет запущена последовательность детектирования стартового бита. Считается, что первая выборка обнаружила первый нулевой логический уровень вероятного стартового бита. На выборках 8, 9 и 10 приемник вновь тестирует вывод RXD на изменение логических состояний. Если две или более из этих трех выборок обнаружат логические 1, то данный вероятный стартовый бит отвергается как шумовой всплеск и приемник начнет выявлять и анализировать следующие переходы из 1 в 0.

Если же был обнаружен действительный стартовый бит, то начинает производиться выборка следующих за стартовым битом информационных битов. Эти биты также тестируются на выборках 8, 9 и 10. Логическое состояние бита принимается по двум и более (из трех) одинаковым состояниям выборок. Все биты вводятся в сдвиговый регистр приемника с тем значением, которое было определено тестированием выборок.

Тестирование выборок битов принимаемых символов показано на Рис. 25.

Рис. 25. Тестирование выборок принимаемых данных

При поступлении стопового бита необходимо чтобы не менее двух выборок из трех подтвердили прием стопового бита (показали высокий уровень. Вне зависимости от того принят правильный стоповый бит или нет, данные пересылаются в регистр UDR и устанавливается флаг RXC в регистре (UСSRА). Регистр UDR фактически является двумя физически отдельными регистрами, один из которых служит для передачи данных и другой для приема. При считывании полученных данных из UDR обращение ведется к регистру приема данных, при записи обращение ведется к регистру передачи.

Если выбран режим обмена 9-разрядными словами данных, значение старшего разряда может быть определено по состоянию флага RXB8 регистра UCSRB. Причем содержимое старшего разряда данных должно быть считано до обращения к регистру UDR.

Если во время приема кадра включена схема контроля четности , то она вычисляет бит четности для всех разрядов принятого слова данных и сравнивает его с принятым битом четности. Результат проверки запоминается в буфере приемника вместе с принятым словом данных и стоп-битами. Наличие или отсутствие ошибки контроля четности может быть определено по состоянию флага PE Rg UCSRA. Этот флаг устанавливается в 1, если следующее слово, которое может быть прочитано из Rg UDR, имеет ошибку контроля четности.

Блок приемника имеет еще два флага

– флаг ошибки кадрирования FE,

– флаг переполнения DOR.

Для индикации состояния приемника в модулях USART используется флаг прерывания «Прием завершен» – RxC в Rg UCSRA. Этот флаг устанавливается в 1 при наличии непрочитанных данных в буфере приемника.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]