Микроконтроллеры для систем автоматики - часть 23

 

  Главная      Учебники - Производство     

 

поиск по сайту           правообладателям

 

 

 

 

 

 

 

 

 

содержание   ..  21  22  23  24   ..

 

 

Микроконтроллеры для систем автоматики - часть 23

 

 

 

91 

управления  и  статуса UCSRA устанавливается  флаг  завершения  передачи TxC (TX 
Complete Flag
). 

П

Р И Е М Н И К

 

Структурная схема приемника UART приведена на рис. 13.4. 

 

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

Логика  восстановления  данных  (Front-End Logic)  производит  выборку  состояний 

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

Если  же  был  обнаружен  действительный  стартовый  бит,  то  начинает 

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

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

 

92 

 

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

При поступлении стопового бита необходимо, чтобы не менее двух выборок из трех 

подтвердили  прием  стопового  бита  (показали  высокий  уровень).  Если  же  две  или  более 
выборок  покажут  состояния 0, то  при  пересылке  принятого  байта  в UDR в  регистре 
управления и статуса UСSRA устанавливается бит ошибки кадра FE (Framing Error). Для 
обнаружения ошибки кадра пользователь перед чтением регистра UDR должен проверять 
состояние  бита FE. Флаг FE очищается  при  считывании  содержимого  регистра  данных 
UART (UDR). 

Вне  зависимости  от  того  принят  правильный  стоповый  бит  или  нет,  данные 

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

При очищенном (сброшенном в логическое состояние 0) бите RXEN регистра UCR 

прием запрещен.  

 

93 

М

У Л Ь Т И П Р О Ц Е С С О Р Н Ы Й   Р Е Ж И М   О Б М Е Н А

 

Мультипроцессорный  режим  позволяет  данные  от  одного  ведущего  контроллера 

передать  нескольким  подчиненным  (ведомым)  контроллерам.  Это  осуществляется 
декодированием  первого    адресного  байта,  позволяющего  выяснить,  который  из 
подчиненных  контроллеров  адресован.  Если  подчиненный  контроллер  адресован,  он 
примет  следующие  байты  данных,  в  то  время  как  другие  подчиненные  контроллеры 
игнорируют эти байты данных до получения другого адресного байта. 

Для  ведущего  контроллера  необходимо  ввести 9-разрядный  режим  передачи 

(CHR9  в  регистре UCSRB установлен). 9-ый  бит  должен  быть  равен  1,  если  передается 
адресный байт, и нулю, если передается байт данных. 

Для  ведомых  контроллеров,  механизм  проявляется  слегка  по-другому  для 8-

разрядного  и 9-разрядного  режима  приема.  В 8-разрядном  режиме  приема (CHR9 в 
регистре UCSRB сброшен), стоповый бит равен 1 для адресного байта и нулю - для байта 
данных.  В 9-разрядном  режиме  приема (CHR9  регистре UCSRB установлен), 9-ый  бит 
равен  1  для  адресного  байта  и  нулю - для  байта  данных,  принимая  во  внимание,  что 
стоповый бит - всегда равен 1. 

В  мультипроцессорном  режиме  обмена  должна  использоваться  следующая 

процедура: 

º 

Все  подчиненные  контроллеры  переводятся  в  мультипроцессорный  режим 
связи (устанавливается бит MPCM в регистре UCSRA). 

º 

Ведущий контроллер посылает адресный байт, и все ведомые принимают и 
читают этот байт (флажки RXC в регистрах UCSRA устанавливаются). 

º 

Каждый ведомый контроллер читает свой регистр UDR и определяет был ли 
он выбран. Если так, то он очищает MPCM бит в регистре UCSRA, и далее 
ожидает байт данных. 

º 

Для  каждого  полученного  байта  данных,  принимающий  контроллер 
устанавливает  флажок RXC в  регистре UCSRA. В 8-разрядном  режиме, 
принимающий 

контроллер 

также 

генерирует 

ошибку 

кадровой 

синхронизации (FE в регистре UCSRA), начиная с нулевого стопового бита. 
Другие контроллеры, у которых бит MPCM равен 1, игнорируют байт данных. 
В этом случае, регистр UDR и бит RXC или FE не работают. 

º 

После передачи последнего байта повторяется процесс пересылки адреса. 

Р

Е Г И С Т Р Ы   У П Р А В Л Е Н И Я  

U A R T  

Регистр UCSRA 

º 

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

º 

Бит 6 – TXC (UART Transmit Complete) - передача  завершена.  Данный  бит 
устанавливается  в  состояние  1  когда  весь  символ  (включая  стоповый  бит) 
выведен  из  сдвигового  регистра  передачи  и  в UDR не  записаны  новые 

 

94 

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

º 

Бит 5 – UDRE (UART Data Register Empty) - регистр данных пуст. Данный бит 
устанавливается  в  состояние  1  когда  символ,  записанный  в UDR, 
пересылается  в  сдвиговый  регистр  передачи.  Установка  этого  бита 
означает, что передатчик готов к получению нового символа для передачи. 
Когда  бит UDRIE установлен,  до  тех  пор  пока  установлен UDRE, 
выполняется  прерывание  по  завершению  передачи UART. Бит UDRE 
очищается  при  записи  в UDR. При  приеме  данных  инициированном 
прерыванием,  подпрограмма  обработки  прерывания  по  пустому  регистру 
данных UART должна считать UDR, с тем, чтобы очистить UDRE, иначе по 
окончании  подпрограммы  прерывания  произойдет  новое  прерывание.  Во 
время  сброса  бит UDRE устанавливается  в  состояние  1  с  тем,  чтобы 
индицировать готовность передатчика.  

º 

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

º 

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

º 

Бит  1 - U2X (Double UART Transmission Speed) – удвоение  скорости 
передачи.  Установка  этого  бита  приводит  к  изменению  коэффициента 
деления с 16 на 8, что эквивалентно удвоению скорости передачи. 

º 

Бит 0 – MPCM (Multi-processor Communication Mode) – режим 
мультипроцессорного  обмена.  При  установке  этого  бита  ведомый 
контроллер принимает адресный байт.  

Регистр  UCSRB 

º 

Бит 7 – RXCIE (RX Complete Interrupt Enable) - разрешение  прерывания  по 
завершению  приема.  При  установленном  в  состояние  1  бите RXCIE и 
установленном разрешении глобального прерывания установка бита RXC в 
регистре UCSRA приведет  к  выполнению  прерывания  по  завершению 
приема.  

º 

Бит 6 – TXCIE (TX Complete Interrupt Enable) - разрешение  прерывания  по 
завершению  передачи.  При  установленном  в  состояние  1  бите TXCIE и 
установленном разрешении глобального прерывания установка бита TXC в 
регистре UCSRA приведет  к  выполнению  прерывания  по  завершению 
передачи.  

 

 

 

 

 

 

 

содержание   ..  21  22  23  24   ..