Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[36]

Прием данных

Шина данных

XTAL

Бод-генератор

Бод x 16

Логика управления выводом

RXD

/16

Бод

Сохранение UDR

Логика восстановления данных

Регистр данных I/O UART (UDR)

10(11)-разрядный сдвиговый] регистр приема

-Г -7 CN Ш

Z Z о; СО (й( j ( , QL

ШШт-CQcQУ У Q

Регистр управления UART (UCR)

Шина данных

dd dd dd

Регистр статуса UART (USR)

и

RXC IRQ

Рис. 43 Приемник UART.

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

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


RXD Стартовый

Вы6орки\бит D0 X D1X D2 X D3 X D4X D5 X D6 X D7 Стобпитвый

приемника.......Ill.............Ill.............Ill.............Ill.............Ill.............Ill.............Ill.............Ill.............Ill.............Ill.......

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

При поступлении стопового бита необходимо чтобы не менее двух выборок из трех подтвердили прием стопового бита (показали высокий уровень). Если же две или более выборок покажут состояния 0, то, при пересылке принятого байта в UDR, в регистре статуса UART (USR) устанавливается бит ошибки кадра FE (Framing Error). Для обнаружения ошибки кадра пользователь перед чтением регистра UDR должен проверять состояние бита FE. Флаг FE очищается при считывании содержимого регистра данных UART (UDR). Вне зависимости от того принят правильный стоповый бит или нет, данные пересылаются в регистр UDR и устанавливается флаг RXC в регистре статуса UART (USR). Регистр UDR фактически является двумя физически отдельными регистрами, один из которых служит для передачи данных и другой для приема. При считывании UDR обращение ведется к регистру приема данных, при записи обращение ведется к регистру передачи. Если выбран режим обмена 9-разрядными словами данных (установлен бит CHR9 регистра UCR), при пересылке данных в UDR бит RXB8 регистра UCR загружается в бит 9 сдвигового регистра передачи. Если после получения символа к регистру UDR не было обращения, начиная с последнего приема, в регистре UCR устанавливается флаг переполнения (OR). Это означает, что новые данные, пересылаемые в сдвиговый регистр не могут быть переданы в UDR и потеряны. Бит OR буферирован и доступен тогда, когда в UDR читается байт достоверных данных. Пользователю, для обнаружения переполнения, необходимо всегда проверять флаг OR после считывания содержимого регистра UDR.

При очищенном (сброшенном в логическое состояние 0) бите RXEN регистра UCR приемник запрещен. Это означает, что вывод PE0 может использоваться в качестве вывода I/O общего назначения. При установленном бите RXEN, приемник UART подключается к выводу PE0, который работает как вывод входа, вне зависимости от установки бита DDE0 в DDRE.

При установке UART вывода PE0 на работу в качестве входа, бит PORTE0 может использоваться для управления нагрузочным резистором вывода.

Управление UART

РЕГИСТР ДАННЫХ UART - UDR - (UART I/O Data Register)

Бит7 6 5 4 3 2 10

$0C ($2C)IMSB jjjIIII LSB j UDR

Чтение/ЗаписьR/W R/W R/W R/W R/W R/W R/W R/W

Начальное значение00000000

В действительности регистр UDR является двумя физически разделенными регистрами - регистром передачи данных и регистром приема данных, использующими одни и те же адреса I/O. При записи в регистр запись производится в регистр передачи данных UART, при чтении происходит чтение содержимого регистра приема данных

UART.


РЕГИСТР СТАТУСА UART - USR - (UART Status Register)

Бит7 6 5 4 3 2 10

$0B ($2B)IRXC TXC UDRE FE DOR - - - ~ USR

Чтение/ЗаписьRR/W RRRRRR

Начальное значение00000000

Регистр USR обеспечивает только чтение информации о состоянии UART.

•Bit 7 - RXC: UART Receive Complete - Прием завершен

Данный бит устанавливается в состояние 1 при пересылке принятого символа из сдвигового регистра приема в UDR. Бит устанавливается вне зависимости от отсутствия или наличия ошибок приема кадра. При установленном в UCR бите RXCIE и установленном бите RXC выполняется прерывание по завершению приема UART. Бит RXC очищается при считывании UDR. При приеме данных инициированном прерыванием, подпрограмма обработки прерывания по завершению приема UART должна считать UDR, с тем, чтобы очистить RXC, иначе по окончании подпрограммы обработки прерывания произойдет новое прерывание

•Bit 6 - TXC: UART Transmit Complete - Передача завершена

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

При установленном в регистре UCR бите TXCIE установка TXC приведет к выполнению прерывания по завершению передачи UART. Флаг TXC очищается аппаратно при выполнении обработки соответствующего вектора прерывания. Очистить бит TXC можно записью в бит логической 1.

•Bit 5 - UDRE: UART Data Register Empty - Регистр данных пуст

Данный бит устанавливается в состояние 1 когда символ, записанный в UDR, пересылается в сдвиговый регистр передачи. Установка этого бита означает, что передатчик готов к получению нового символа для передачи.

Когда бит UDRIE в UCR установлен, до тех пор пока установлен UDRE, выполняется прерывание по завершению передачи UART. Бит UDRE очищается при записи в UDR. При приеме данных инициированном прерыванием, подпрограмма обработки прерывания по пустому регистру данных UART должна считать UDR, с тем, чтобы очистить UDRE, иначе по окончании подпрограммы прерывания произойдет новое прерывание. Во время сброса бит UDRE устанавливается в состояние 1 с тем, чтобы индицировать готовность передатчика.

•Bit 4 - FE: Framing Error - Ошибка кадра

Данный бит устанавливается в состояние 1 при обнаружении условий ошибочного приема кадра, т.е. когда стоповый бит входящего символа в состоянии 0. Бит FE очищается при приеме стопового бита с логическим уровнем 1.

•Bit 3 - DOR: Data OverRun - Переполнение данных

Бит DOR устанавливается в состояние 1 при обнаружении условий переполнения, т.е. когда символ, уже находящийся в регистре UDR, не считан перед пересылкой нового символа из сдвигового регистра приема. Бит DOR буферирован, что означает, что он будет оставаться установленным пока не будут считаны правильные данные из UDR. Бит DOR очищается (сбрасывается в 0) когда данные приняты и пересланы в UDR.



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51]