КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Интерфейс UART
Микроконтроллеры Atmega 16x и Atmega 162x имеют в своем составе модуль полнодуплексного универсального асинхронного приемопередатчика (UART). Через него осуществляется прием и передача информации, представленной последовательным кодом, поэтому модуль UART часто называют также последовательным портом. С помощью этого модуля микроконтроллер может обмениваться данными с различными внешними устройствами.
Скорость передачи данных может варьироваться в широких пределах, причем высокие скорости передачи могут быть достигнуты даже при относительно низкой тактовой частоте микроконтроллера.
Известно, что при передаче данных могут происходить различные сбои. Модуль UART может обнаруживать и сигнализировать о следующих внештатных ситуациях:
· переполнение;
· ошибка кадрирования;
· неверный старт-бит.
Для уменьшения вероятности сбоев в модуле реализована такая полезная функция, как фильтрация помех.
Для взаимодействия с программой в модуле предусмотрены 3 раздельных прерывания, запрос на которые генерируется при наступлении следующих событий: «передача завершена», «регистр данных передатчика пуст» и «прием завершен».
Выводы микроконтроллера, используемые модулем UART, являются линиями портов ввода/вывода общего назначения.
Таблица 24.Выводы, используемые модулями UART.
Название
| ATmega16x
| ATmega162x
| Описание
| RXD
| PD0
|
| Вход UART0
| RXD0
|
| PD0
| TXD
| PD1
|
| Выход UART0
| TXD0
|
| PD1
| XCK
| PB0
| PD4
| Вход/выход внешнего тактового сигнала UART0
| RXD1
|
| PB2
| Вход UART1
| TXD1
|
| PB3
| Выход UART1
| XCK1
|
| PD2
| Вход/выход внешнего тактового сигнала UART1
|
Таблица 25.Размещение регистров данных модулей UART.
Регистр
| ATmega16x
| ATmega162x
| Описание
| UDR
| *
|
| Регистр данных UART
| UDR0
|
| *
| Регистр данных UART0
|
UDR1
|
|
*
| Регистр данных UART1
|
|
Таблица 26.Регистры управления и состояния модулей UART.
Регистр
| ATmega16x
| ATmega162x
| Описание
| UСSRA
| *
|
| Регистр управления A
| UСSRB
| *
| *
| Регистр управления B
| UСSRC
| *
|
| Регистр управления С
| UСSR0A
|
| *
| Регистр управления A UART0
| UСSR0B
|
| *
| Регистр управления B UART0
| UСSR0C
|
| *
| Регистр управления С UART0
| UСSR1A
|
| *
| Регистр управления A UART1
| UСSR1B
|
| *
| Регистр управления B UART1
| UСSR1C
|
| *
| Регистр управления С UART1
|
| |
|
|
|
|
|
|
|
|
| | |
| RXCn
| TXCn
| UDREn
| FEn
| DORn
| UPEn
| U2Xn
| MPCMn
| | | Чтение(R)/Запись(W)
| R
| R/W
| R
| R
| R
| R
| R/W
| R/W
| | | Начальное значение
|
|
|
|
|
|
|
|
| | | | | | | | | | | | | | | |
Рис. 17. Формат регистра UCSRnA
Таблица 27. Описание регистра UCSRA (UCSRnA)
| RXCn
| Флаг завершения приема
Флаг устанавливается в 1 при наличии непрочитанных данных в буфере приемника (регистр данных UDR). Сбрасывается флаг аггпаратно после опустошения буфера. Если бит RXCIE (RXCIEn) регистра UCSRB (UCSRnB) установлен, то при установке флата генерируется запрос на прерывание –“прием завершен”.
|
| TXCn
| Флаг завершения передачи
Данный флаг устанавливается в «1» после передачи всех разрядов посылки (включая стоп-бит) из сдвигового регистра передатчика, при условии, что в регистр данных UDR не было загружено новое значение. Этот флаг наиболее полезен при полудуплексной связи, при которой передающее устройство должно освободить линию и перейти в режим приема сразу же после окончания передачи.
Если разряд TXCIEn регистра UCSRB (UCSRnB) установлен, то при установке флага ТХСn генерируется запрос на прерывание «передача завершена». Флаг сбрасывается аппаратно при выполнении подпрограммы обработки прерывания или программно записью в него лог. «1».
|
| UDREn
| Регистр данных пуст
Данный флаг устанавливается в «1» после пересылки байта из регистра данных UDR в сдвиговый регистр передатчика. Установка этого флага означает, что передатчик готов к получению нового значения для передачи.
Если разряд UDRIEn регистра UCSRB (UCSRBn) установлен, генерируется запрос на прерывание «регистр данных пуст». Сбрасывается флаг аппаратно при записи в регистр данных. Соответственно, если прерывание используется, в обработчике прерывания следует обязательно произвести запись в этот регистр. В противном случае после окончания обработки прерывания оно будет вызвано снова.
|
| FEn
| Флаг ошибки кадрирования
Данный флаг устанавливается в «1», при обнаружении ошибки кадрирования, т.е. если стоп-бит принятого слова равен «0».
Флаг сбрасывается при приеме стоп-бита, равного «1».
|
| DORn
| Флаг переполнения
Данный флаг устанавливается в «1», если в сдвиговом регистре приемника находится новое принятое слово, а старое содержимое регистра данных не прочитано. Флаг остается установленным до тех пор, пока не будет прочитано содержимое регистра данных.
Флаг сбрасывается при пересылке принятых данных из сдвигового регистра приемника в регистр данных.
|
| UPEn
| Флаг ошибки контроля чётности.
Флаг устанавливается в 1,если в данных, находящихся в буфере приемника, выявлена ошибка контроля чётности. При отключенном контроле чётности этот бит постоянно сброшен в 0.
|
| U2Xn
| Удвоение скорости обмена.
Если этот бит установлен в 1, то коэффициент деления предделителя контроллера скорости передачи уменьшается с 16 до 8, удваивая тем самым скорость асинхронного обмена по последовательному каналу. Этот бит используется только при асинхронном режиме работы и в синхронном режиме должен быть сброшен.
|
| MPCMn
| Режим мультипроцессорного обмена.
Если этот бит установлен в 1, ведомый микроконтроллер ожидает приема кадра, содержащего адрес. Кадры, не содержащие адреса устройства, игнорируются.
|
|
|
|
|
|
|
|
|
|
| RXCIEn
| TXCIEn
| UDRIEEn
| RXENn
| TXENn
| UCZn2
| RXB8n
| ТХВ8n
| Чтение(R)/Запись(W)
| R/W
| R/W
| R/W
| R/W
| R/W
| R/W
| R
| R/W
| Начальное значение
|
|
|
|
|
|
|
|
|
Рис. 18. Формат регистра UCSRnB
Таблица 28. Описание регистра UCSRnB
Разряд
| Название
| Описание
|
| RXCIEn
| Разрешение прерывания по завершении приема
Если данный разряд установлен в «1», то при установке флага RXC в регистре UCSRA (UCSRAn) происходит запуск подпрограммы обработки прерывания «прием завершен» (если прерывания разрешены)
|
| ТХСIn
| Разрешение прерывания по завершении передачи
Если данный разряд установлен в «1», то при установке флага ТХСn в регистре USR (UCSRA) происходит запуск подпрограммы обработки прерывания «передача завершена» (если прерывания разрешены)
|
| UDRIEn
| Разрешение прерывания при очистке регистра данных UART
Если данный разряд установлен в «1», то при установке флага UDREn в регистре UCSRA (UCSRAn) происходит запуск подпрограммы обработки прерывания «регистр данных пуст» (если прерывания разрешены)
|
| RXENn
| Разрешение приема
При установке данного разряда в «1» разрешается работа приемника UART. Если приемник выключен, флаги ТХСn, DORn и FnE не могут быть установлены. При сбросе разряда RXENn эти флаги не сбрасываются
|
| TXENn
| Разрешение передачи
При установке данного разряда в «1» разрешается работа передатчика UART. Если разряд сбрасывается в «0» во время передачи, выключение передатчика произойдет только после завершения передачи текущего слова и слова, находящегося на момент выключения в регистре данных UDR.
|
| UCSZn2
| Формат посылок
Если разряд установлен в «1», производится передача и прием 9-разрядных данных. При передаче значение старшего (8-го) разряда берется из разряда ТХВ8 регистра, а при приеме записывается в разряд RXB8.
|
| RXB8n
| 8-й разряд принимаемых данных
Если флаг CHR9 установлен в «1», этот разряд содержит значение старшего разряда принятого слова.
|
| ТХВ8n
| 8-й разряд передаваемых данных
Если флаг CHR9 установлен в «1», содержимое этого разряда передается как старший разряд слова.
|
| URSELn
| UMSELn
| UPMn1
| UPMn0
| USBSn
| UCSZn1
| UCSZn0
| UCPOLn
| Чтение(R)/Запись(W)
| R/W
| R/W
| R/W
| R/W
| R/W
| R/W
| R/W
| R/W
| Начальное значение
|
|
|
|
|
|
|
|
|
Рис. 19. Формат регистра UCSRC (UCSRnC)
Таблица 29. Описание регистра UCSRnB
Разряд
| Название
| Описание
|
| URSELn
| Выбор регистра
Этот бит определяет, в какой из регистров модуля производится запись.Если бит установлен в 1,обращение производится к регистру UCSRnC.Если же бит сброшен в 0 обращение производится к регистру UBRRnH.
|
| UMSELn
| Режим работы UART
Если данный разряд установлен в «0», то модуль работает в асинхронном режиме. Если бит установлен в 1, то модуль работает в синхронном режиме.
|
| UPMn1
UPMn0
| Режим работы схемы контроля и формирования бита четности.
Эти биты определяют функционирование схем контроля и формирования бита чётности.
|
| USBSn
| Количество стоп-битов.
Этот бит определяет количество стоп-битов, посылаемых передатчиком.Если бит сброшен в 0,передатчик посылает 1 стоп-бит, если установлен в 1 ,то 2 стоп-бита.Для приёмника содержимое этого бита безразлично.
|
| UCSZn1
| Количество стоп-битов.
Если разряд установлен в «1», производится передача и прием 9-разрядных данных. При передаче значение старшего (8-го) разряда берется из разряда ТХВ8 регистра, а при приеме записывается в разряд RXB8.
|
| UCSZn0
| Формат посылок.
Совместно с битом UCSZn2 регистра UCSRnB эти биты определяют количество битов данных в посылках.
|
| UСPOLn
| Полярность тактового сигнала.
Значение этого бита определяет момент выдачи и считывания данных на выводах модуля. Бит используется только при работе в синхронном режиме.При работе в асинхронном режиме он должен быть сброшен в 0.
| UCPOL
| Выдача данных на вывод TXDn
| Считывание данных с вывода RXDn
|
| Спадающий фронт XCKn
| Нарастающий фронт XCKn
|
| Нарастающий фронт XCKn
| Спадающий фронт XCKn
|
|