Приложение к лабораторной работе №5




Программа на ассемблере, обеспечивающая работу схемы показанной на рисунке 4

 

 

 

Временная диаграмма процесса ввода и вывода для режима 1 микросхемы 8255

 

 

Рисунок 2.9 - Временная диаграмма процесса ввода и вывода для режима 1 микросхемы 8255

 

 

Лабораторная работа №7

 

Универсальный асинхронный полнодуплексный приемо-передатчик (UART)

 

Цель работы: изучить принцип работы универсального приемо-передатчика в составе микроконтроллера Atmel и построение возможных схем каналов ввода вывода на его основе.

 

Теоретическая часть

Универсальный приемо-передатчик является примером устройства, которое успешно применяется в вычислительной технике многие годы. Причем применяется и как в виде отдельного устройства и как в составе микропроцессоров в качестве базового устройства для организации последовательных каналов ввода вывода. Он оказался настолько удачным, что в микроконтроллерах, применяемых для систем управления, встраиваются несколько UART. Успех применения данного устройства заключается в том, что создавая физический канал связи, он позволяет реализовывать на своей базе различные протоколы обмена между устройствами, участвующими в процедуре ввода вывода данных. Важное преимущество последовательного порта перед параллельным – снижение числа соединений, Последовательные интерфейсы превосходят параллельные на высоких скоростях передачи, когда на скорость передачи начинают влиять задержки в линиях связи.

В предлагаемой работе рассмотрим UART (Universal Asynchronous Receiver-Transmitter) в составе микропроцессоров семейства Atmel Classic. Модуль UART состоит из приемника и передатчика, с помощью которых можно создать дуплексный или полудуплексный канал последовательной связи с устройством, имеющим аналогичный UART. Скорость передачи информации может варьироваться в широких пределах. Модуль UART, в микроконтроллерах Atmel, может обнаруживать и сигнализировать о следующих внештатных ситуациях: переполнение; ошибка кадрирования; неверный старт-бит. Для взаимодействия с программой в модуле предусмотрено три раздельных прерывания, запрос на которые генерируются при наступлении следующих событий: "передача завершена», «регистр данных передатчика пуст» и «прием завершен». Выводы микроконтроллера, используемые модулем UART, являются линиями порта D. В качестве входа приемника (RXD) используется PD0, а в качестве выхода передатчика (TXDD) – вывод PD1.

Управление работой приемо-передатчика осуществляется с помощью регистра управления UCR, расположенного по адресу $0A (в разных моделях микроконтроллеров регистр управления может менять название и адрес). На рисунке 3.1 показан формат регистра UCR Состояние приемопередатчика определяется с помощью регистра состояния USR, формат которого показан на рисунке 3.2.

 

 

Рисунок 3.1 – Формат регистра управления UCR

 

Разряд 7 –RXCIE – «разрешение прерывания по завершении приема».

Разряд 6 – TXCIE – «разрешение прерывания по завершении передачи».

Разряд 5 – UDRIE – «разрешение прерывания при очистке регистра данных UART».

Разряд 4 – RXEN – «разрешение приема».

Разряд 3 – TXEN – «разрешение передачи».

Разряд 2 – СРК9 – «формат посылок».

Разряд 1 – RXB8 – «8-й разряд принимаемых данных».

Разряд 0 – TXB8 – «8-й разряд передаваемых данных».

 

 

Рисунок 3.2 – Формат регистра управления USR

 

Разряд 7 – RXC – «флаг завершения приема». Устанавливается при пересылке принятого слова из сдвигового регистра приемника в регистр данных UDR.

Разряд 6 – TXC – «флаг завершения передачи». Данный флаг устанавливается в 1 после передачи всех разрядов слова (включая стоп-бит) из сдвигового регистра передатчика, при условии, что в регистр данных UDR не было загружено новое значение. Данный флаг полезен при полудуплексной передаче, при которой передающее устройство должно освободить линию и перейти в режим приема сразу после окончания передачи.

Разряд 5 – UDRE – «регистр данных пуст». Данный флаг устанавливается в 1 после пересылки байта из регистра данных UDR в сдвиговый регистр передатчика. Установка флага означает, что передатчик готов к получению новых данных.

Разряд 4 – FE – «флаг ошибки кадрирования». Данный флаг устанавливается в 1, при обнаружении ошибки кадрирования – если стоп-бит принятого слова равен 0.

Разряд 3 – OR – «флаг переполнения». Данный флаг устанавливается в 1, если в сдвиговом регистре приемника находится новое принятое слово, а старое содержимое регистра UDR не прочитано.

Разряд 2 и 1 – не используются.

Разряд 0 – MPCM – «флаг режима многопроцессорного обмена». Данный разряд используется для перехода в режим мультипроцессорного обмена. Этот флаг устанавливается в 1, когда ведомый микроконтроллер ожидает приема адресного байта.

Принимаемые и передаваемые данные хранятся в регистре данных UDR, который расположен по адресу $0C. Физически регистр UDR состоит из двух отдельных регистров, один из которых используется для передачи данных, другой – для приема. На рисунке 3 показана структурная схема передатчика UART.

Работа передатчика разрешается установкой в «1» разряда TXEN регистра UCR. Если этот разряд сброшен вывод PD1 (TXD) может использоваться как обычный разряд порта ввода вывода. При установке TXEN этот вывод подключается к передатчику UART и начинает работать как выход независимо от состояния разряда DDD1 регистра данных порта DDRD.

Передача инициируется записью данных в регистр данных – UDR. После этого данные пересылаются из регистра UDR в сдвиговый регистр передатчика. При этом возможны два варианта:

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

- новое значение записывается в регистр UDR во время передачи. В этом случае данные пересылаются в сдвиговый регистр после передачи стоп-бита текущего слова.

После пересылки содержимого UDR в сдвиговый регистр флаг UDRE регистра USR устанавливается в «1», что означает готовность передатчика к получению нового значения. В этом состоянии флаг остается до новой записи в регистр UDR. Одновременно с пересылкой формируется служебная информация: 0-й разряд сдвигового регистра сбрасывается в «0» (старт-бит), а 9-й разряд устанавливается в «1» (стоп-бит). Если включен режим передачи 9-ти разрядных данных (разряд CHR9 регистра UCR установлен в «1»), то значение разряда TXB8 регистра UCR копируется в 9-й разряд сдвигового регистра.

 

 

 

Рисунок 3.3 – Структурная схема передатчика

 

После загрузки сдвигового регистра его содержимое начинает сдвигаться вправо и поступать на вывод TXD в следующем порядке: старт-бит, данные, стоп-бит. Сдвиг осуществляется по тактовому сигналу, вырабатываемому контроллером скорости передачи, который называется бод-рейт генератором. Если во время передачи в регистр UDR было записано новое значение, то после передачи стоп-бита оно пересылается в сдвиговый регистр. Если же к моменту окончания передачи стоп-бита такой записи выполнено не было, устанавливается флаг завершения передачи TXC регистра USR.

Структурная схема приемника модуля UART приведена на рисунке 3.4. Прием данных разрешается установкой разряда RXEN регистра UCR. Если этот разряд сброшен, вывод PD0 (RXD) может использоваться как контакт общего назначения порта. При установке разряда RXEN этот вывод подключается к приемнику UART и начинает работать как вход UART независимо от состояния разряда DDD0 регистра DDRD.

Работает приемник следующим образом. Схема предварительной обработки опрашивает вход приемника с частотой, в 16 раз превышающей скорость передачи данных (для обработки одного разряда принимаемой последовательности производится 16 выборок входного сигнала). Обнаружение логического «0» в режиме ожидания интерпретируется как появление переднего спадающего фронта старт-бита. После этого проверяется значение 8,9 и 10 выборок входного сигнала. Если значение хотя бы двух выборок из указанных равно логической «1», старт бит считается ложным, а приемник переходит к ожиданию изменения входного сигнала логической «1» на логический «0». В противном случае считается, что обнаружен старт бит новой последовательности. После обнаружения старт-бита начинается обработка разрядов байта данных. Решение о значении принятого разряда принимается по результатом 8,9 и 10 выборок входного сигнала. Состоянием разряда считается логическое значение, которое было получено в двух из трех выборок. По мере распознавания разрядов принимаемой последовательности они помещаются в сдвиговый регистр приемника.

 

 

Рисунок 3.4 – Структурная схема приемника UART

 

Также происходит распознавание стоп-бита. Если стоп-бит не распознается, то фиксируется ошибка кадрирования и флаг FE регистра USR устанавливается в «1». Перед чтением регистра данных UDR всегда проверяется состояние этого флага. Независимо от того был или не был обнаружен стоп-бит в конце посылки, принятое слово пересылается в регистр данных UDR и устанавливается флаг RXC регистра USR.

Если новое слово будет принято до того, как из регистра UDR будут переданы предыдущие данные, возникает ситуация переполнения. Об этом сигнализирует флаг OR регистра USR, который в этом случае устанавливается в «1». Установка флага запрещают передачу данных из сдвигового регистра в регистр данных. Поэтому драйвер управления UART должен проверять состояния флага OR для обнаружения возможного переполнения.

Управление скоростью передачи и приема данных осуществляется контроллером скорости передачи, который является управляемым делителем частоты. Скорость передачи определяется по формуле:

(1),

 

где - BAUD – скорость передачи в бодах;

- UBR – содержимое регистра контроллера скорости передачи (0-4095).

Известно, что существует ряд значений скорости передачи данных, которые считаются стандартными. Значение регистра UBR, позволяет получить стандартные скорости передачи при использовании различных резонаторов.

 

Мультипроцессорный режим работы UART

 

Режим многопроцессорного обмена позволяет осуществить связь между несколькими ведомыми микроконтроллерами и одним ведущим. В этом режиме каждый ведомый контроллер имеет свой уникальный адрес, по которому идет обращение ведущего микроконтроллера.

В модуле UART микроконтроллера, являющегося ведущим, должен быть установлен режим передачи 9-разрядных данных (разряд CHR9 регистра UCR установлен в «1»). При передаче адресного байта девятый разряд должен устанавливаться в «1», а при передаче байтов данных он должен сбрасываться в «0».

Для осуществления обмена данными в многопроцессорном режиме необходимо выполнить следующую последовательность действий:

1. Все ведомые микроконтроллеры переключаются в режим микропроцессорного обмена установкой «1» в разряд MPCM регистра USR.

2. Ведущий контроллер посылает адресный байт, принимаемый всеми ведомыми микроконтроллерами. Соответственно в каждом из них устанавливается флаг RXC регистра USR.

3. Каждый из ведомых микроконтроллеров считывает содержимое регистра UDR. Микроконтроллер, адрес которого совпал с адресом, посланным ведущим, сбрасывает флаг MPCM регистра USR.

4. Для каждого принятого байта данных в ведомом микроконтроллере устанавливается флаг завершения приема RXC регистра USR. Кроме того, если UART ведомого микроконтроллера работает в режиме приема 8-разрядных данных, будет генерироваться ошибка кадрирования, так как стоп-бит будет равен «0». В других ведомых контроллерах флаг MPCM установлен, поэтому байты данных будут игнорироваться.

 

 

Рисунок 3.5 – Мультипроцессорный режим через RS-485

 

 

Подключение внешних устройств к микроконтроллеру Atmel

через UART

 

Для работы с модулем UART разработаны специализированные микросхемы, с помощью которых можно проектировать схемные решения внешних устройств самого разнообразного назначения. Рассмотрим некоторые из них. Например, реализация интерфейсов RS-485 и RS-422 с помощью микросхемы фирмы Maxim, показанных на рисунке 3.6. Организация интерфейса RS-485, позволяет использовать различные протоколы обмена: Can (фирмы BOCH), ModBus, I2C (Philips) и другие. Можно реализовать подключение 32 устройств к одному UART без повторителей.

 

 

 

 

Рисунок 3.6 – Микросхема Max3443E

 

Возможно подключение через UART интерфейса USB – рисунок 3.7, с помощью микросхемы FT232RL или интерфейса RS-232 c помощью микросхемы Max232 – рисунок 8.

 

 

Рисунок 3.7 - FT232RL для создания USB интерфейса

 

 

Рисунок 3.8 – Организация интерфейса RS 232 с помощью MAX232

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-04-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: