Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Програмно_управляемый_обмен

Порты ввода - предназначены для связи микроконтроллера с различными объектами и могут реализовывать различные алгоритмы обмена данными: асинхронный программный обмен, синхронный обмен, ввод - с сигналами квитирования. Обмен данными между портами и объектами обеспечивается специальными подпрограммами – драйверами, создаваемыми индивидуально для каждого объекта.

АСИНХРОННЫЙ ОБМЕН

В режиме асинхронного программного обмена ввод и вывод данных производится по программе в моменты выполнения инструкций ввода и вывода данных. Предполагается, что объект всегда готов к обмену: при вводе – данные в момент выполнения инструкции in присутствуют на линиях порта, при выводе – данные будут прочитаны с линий порта до следующего вывода. Например, микроконтроллер ATmega 63 осуществляет асинхронный вывод данных при выполнении фрагмента программы:

.equ porta = $B;

.equ ddra = $A;

.cseg

ldi r 6,$FF; $FF в r 6

out ddra, r 6; порта А на вывод

out porta, r0; данных из регистра r0 в порт A.

Время выполнения команды вывода равно двум периодам тактового сигнала. Тот же микроконтроллер в течении двух тактов введет данные с линий порта при выполнении фрагмента программы:

.equ pina = $9;

.cseg

in r0, pina; ввод данных из порта pina в регистр r0.

По адресу $9 в пространстве ввода - микроконтроллера размещен регистр

pina, с входных линий которого и будут взяты данные во время выполнения инструкции.

СИМПЛЕКСНЫЙ ОБМЕН

Симплексным считается однонаправленный обмен данными. Такой обмен обычно является синхронным. В этом случае каждое изменение данных на линиях порта сопровождается сигналом синхронизации (). Строб генерируется источником данных и предназначается для задания момента записи данных в регистр приемника. При выводе данных сигнал строба должен сформировать микроконтроллер, используя для этого специальные линии шины управления или отдельные биты портов ввода -. На рис. 9.2 показан вариант соединения микроконтроллера ATmega 63 c посимвольным принтером, имеющим 8-битный вход для приема данных DATA, выход сигнала готовности READY и вход стробирования #STB. Активным на входе стробирования является сигнал низкого уровня. Порт PORTA микроконтроллера и бит PB6 порта PORTB программируются на вывод данных, бит PB2 порта PORTB на ввод. Подпрограмма вывода должна: осуществить проверку готовности принтера (сигнала готовности принтера READY и его анализ), при обнаружении сигнала READY=1 вывести данные в порт PORT, подтвердить вывод данных выводом сигнала стробирования #STB=0 для записи данных в принтер. Если принтер не готов к обмену микроконтроллер через заданный интервал времени повторяет операцию.

Рис. 9.2. Подключение принтера к микроконтроллеру

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

ПОЛУДУПЛЕКСНЫЙ ОБМЕН

Полудуплексным считается двунаправленный синхронный обмен, при котором в любой момент времени передача данных может производиться только в одном направлении. Направление передачи данных порта меняется в процессе работы в зависимости от решаемой в текущий момент задачи. На рис. 9.3 изображен вариант соединения микроконтроллера ATmega 63 с объектом для обмена данными в полудуплексном режиме. В схеме на рис. 9.3 передача данных в параллельном формате осуществляется по линиям порта PORTA. Для выдачи и приема четырех сигналов управления обменом (квитирования): строб ввода #STB IN (Strobe Input), строб вывода #STB OUT (Strobe Out), подтверждение ввода #ACK IN (Acknowledge Input) и подтверждение вывода #ACK OUT (Acknowledge Out), использованы две линии порта PORTB и входы запросов на прерывания INT0 и INT. При поступлении сигнала #STB IN = 0 контроллер должен выставить сигнал подтверждения #ACK IN = 0 и осуществить запись во входной регистр порта PORTA.. При низком уровне сигнала ASK IN объекту запрещается формировать новый сигнал #STB IN. По окончании записи контроллер снимает сигнал #ACK IN, разрешая повторную передачу данных. Работа микроконтроллера в режиме вывода аналогична. Микроконтроллер выводит данные в порт PORTA, подтверждая вывод сигналом #STB OUT = 0. Объект формирует сигнал подтверждения #ACK OUT = 0, сообщая контроллеру о готовности к приему данных. При снятии сигнала #ACK OUT контроллер должен снять сигнал #STB OUT и может вновь перейти к выводу данных. Одновременная передача данных в двух направлениях при полудуплексном обмене невозможна.

ДУПЛЕКСНЫЙ ОБМЕН

Дуплексным считается двунаправленный синхронный обмен, при котором в любой момент времени возможна передача данных в двух направлениях. В этом случае для передачи данных в каждом направлении выделяется свой однонаправленный порт. На рис. 9.4 изображен вариант соединения микроконтроллера ATmega 1 63 с объектом для обмена данными в дуплексном режиме

 

Рис. 9.3. Подключение микроконтроллера при полудуплексном обмене

 Рис. 9.4. Подключение микроконтроллера при дуплексном обмене В схеме на рис. 9.4 порт PORTA работает на ввод данных, порт PORT – на вывод, а линии PC0 и PC порта PORTC использованы для вывода сигналов квитирования #ACK IN и #ACK OUT. Для ввода сигналов квитирования от объекта #STB IN и #ACK OUT использованы входы запросов на прерывания INT0 и INT. При таком подключении задача ввода данных в микроконтроллер получает больший приоритет чем задача вывода.

 

 


14.Порты ввода-вывода предназначены для связи микроконтроллера с различными объектами и могут реализовывать различные алгоритмы обмена данными:

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...