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

 

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

 

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

 

 

 

 

 

 

 

 

 

содержание   ..  13  14  15  16   ..

 

 

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

 

 

 

59 

 

  7 6 5 4 3 2 1 0 

PORTA $1B 

($3B) 

PA7 PA6 PA5 PA4 PA3 PA2 PA1 PA0 

DDRA $1A 

($3A) 

DDA7 DDA6 DDA5 DDA4 DDA3 DDA2 DDA1 DDA0 

PINA $19 

($39) PINA7 PINA6 PINA5 PINA4 PINA3 PINA2 PINA1 PINA0 

PORTB $18 

($38) 

PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0 

DDRB $17 

($37) DDB7 DDB6 DDB5 DDB4 DDB3 DDB2 DDB1 DDB0 

PINB $16 

($36) PINB7 PINB6 PINB5 PINB4 PINB3 PINB2 PINB1 PINB0 

PORTC $15 

($35) 

PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 

DDRC $14 

($34) DDC7 DDC6 DDC5 DDC4 DDC3 DDC2 DDC1 DDC0 

PINC $13 

($33) PINC7 PINC6 PINC5 PINC4 PINC3 PINC2 PINC1 PINC0 

PORTD $12 

($32) 

PD7 PD6 PD5 PD4 PD3 PD2 PD1 PD0 

DDRD $11 ($31) DDD7 DDD6 DDD5 DDD4 DDD3 DDD2 DDD1 DDD0 

PIND $10 

($30) PIND7 PIND6 PIND5 PIND4 PIND3 PIND2 PIND1 PIND0 

SFIOR

 

$30 ($50)

 

 

 

 

 

 

PUD

 

 

 

Рис. 9.1. Регистры портов ввода/вывода 

Любая линия порта  выполняет функции выхода при записи логической единицы в 

соответствующий бит регистра направления DDRх (х 

 A, B, C, D).  

Регистры PINх  не  хранят  информацию  и  фактически  не  являются  настоящими 

регистрами. Они разрешают доступ к физическим сигналам на линиях соответствующего 
порта. При чтении PORTх читается защелка данных выбранного порта, а при чтении PINх – 
значение на контактах порта. Регистры  PINх доступны только для чтения, в то время как 
регистры PORTх и DDRх  - для чтения и записи. 

Внутренние  подтягивающие  резисторы  подключаются  только  при PUD=0, если 

контакты портов сконфигурированы как входы. 

Выходы  портов  выдерживают  втекающий  ток  до 20mA и  могут  быть 

непосредственно  подключены  к  светодиодным  индикаторам.  Однако,  вытекающий  ток 
порта не должен быть более 4 мА , а суммарная загрузка порта - не более 80 мА. 

9.2. Алгоритмы обмена данными 

Порты  ввода-вывода  предназначены  для  связи  микроконтроллера  с  различными 

объектами и могут реализовывать различные алгоритмы обмена данными: 

º 

асинхронный программный обмен, 

º 

синхронный обмен, 

º 

ввод-вывод с сигналами квитирования. 

Обмен  данными  между  портами  и  объектами  обеспечивается  специальными 

подпрограммами – драйверами, создаваемыми индивидуально для каждого объекта.  

А

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

 

В режиме асинхронного программного обмена ввод и вывод данных производится 

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

 

60 

присутствуют  на  линиях  порта,  при  выводе – данные будут прочитаны с линий порта до 
следующего вывода.  

Например, микроконтроллер ATmega163 осуществляет асинхронный вывод данных 

при выполнении фрагмента программы: 

.equ porta = $1B ; 
.equ ddra = $1A ; 
.cseg 
ldi r16,$FF  

;запись $FF в r16 

out ddra, r16  

;включение порта А на вывод 

out porta, r0   

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

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

выполнении фрагмента программы: 

.equ pina = $19 ; 
.cseg 
in r0, pina   ; ввод данных из порта pina в регистр r0.  
По адресу $19 в пространстве ввода-вывода микроконтроллера размещен регистр 

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

С

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

 

Симплексным считается однонаправленный обмен данными. Такой обмен обычно 

является  синхронным.  В  этом  случае  каждое  изменение  данных  на  линиях  порта 
сопровождается  сигналом  синхронизации  (стробом).  Строб  генерируется  источником 
данных и предназначается для задания момента записи данных в регистр приемника.  

При  выводе  данных  сигнал  строба  должен  сформировать  микроконтроллер, 

используя  для  этого  специальные  линии  шины  управления  или  отдельные  биты  портов 
ввода-вывода. 

На  рис. 9.2 показан  вариант  соединения    микроконтроллера ATmega163 c 

посимвольным  принтером,  имеющим 8-битный  вход  для  приема  данных DATA, выход 
сигнала готовности READY и вход стробирования #STB. Активным на входе стробирования 
является сигнал низкого уровня. 

Порт PORTA микроконтроллера  и  бит PB6 порта PORTB программируются  на 

вывод данных, бит PB2 порта PORTB на ввод. Подпрограмма вывода должна: 

º 

осуществить  проверку  готовности  принтера  (чтение  сигнала  готовности 
принтера READY и его анализ), 

º 

при обнаружении сигнала READY=1 вывести данные в порт PORTА, 

º 

подтвердить  вывод  данных  выводом  сигнала  стробирования #STB=0 для 
записи данных в принтер. 

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

времени повторяет операцию. 

 

61 

 

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

Режим  синхронного  ввода  позволяет  точно  задать  момент  считывания  данных  с 

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

П

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

 

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

любой  момент  времени  передача  данных  может  производиться  только  в  одном 
направлении.  Направление  передачи  данных  порта  меняется  в  процессе  работы  в 
зависимости  от  решаемой  в  текущий  момент  задачи.  На  рис. 9.3 изображен  вариант 
соединения  микроконтроллера ATmega163  с  объектом  для  обмена  данными  в 
полудуплексном режиме. 

В схеме на рис. 9.3 передача данных в параллельном формате осуществляется по 

линиям  порта PORTA. Для  выдачи  и  приема  четырех  сигналов  управления  обменом 
(сигналы квитирования): строб ввода #STB IN (Strobe Input), строб вывода #STB OUT (Strobe 
Out),  подтверждение  ввода  #ACK  IN  (Acknowledge  Input)  и  подтверждение  вывода #ACK 
OUT (Acknowledge  Out),  использованы  две  линии  порта PORTB и  входы  запросов  на 
прерывания INT0 и INT1. 

При  поступлении  сигнала #STB IN = 0  контроллер  должен  выставить  сигнал 

подтверждения #ACK IN = 0 и осуществить запись во входной регистр порта PORTA.. При 
низком уровне сигнала ASK IN объекту запрещается формировать новый сигнал #STB IN. 
По окончании записи контроллер снимает сигнал #ACK IN, разрешая повторную передачу 
данных. 

Работа  микроконтроллера  в  режиме  вывода  аналогична.  Микроконтроллер 

выводит  данные  в  порт PORTA, подтверждая  вывод  сигналом #STB OUT = 0. Объект 
формирует  сигнал  подтверждения #ACK OUT = 0, сообщая  контроллеру  о  готовности  к 
приему данных. При снятии сигнала #ACK OUT контроллер должен снять сигнал #STB OUT 
и может вновь перейти к выводу данных. 

Одновременная  передача  данных  в  двух  направлениях  при  полудуплексном 

обмене невозможна. 

Д

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

 

Дуплексным считается двунаправленный синхронный обмен, при котором в любой 

момент  времени  возможна  передача  данных  в  двух  направлениях.  В  этом  случае  для 
передачи данных в каждом направлении выделяется свой однонаправленный порт. На рис. 

 

62 

9.4 изображен вариант соединения микроконтроллера ATmega 163 с объектом для обмена 
данными в дуплексном режиме. 

 

 

 

 

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

при полудуплексном обмене 

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

при дуплексном обмене 

 
В схеме на рис. 9.4 порт PORTA работает на ввод данных, порт PORTВ – на вывод, 

а линии PC0 и PC1 порта PORTC использованы для вывода сигналов квитирования #ACK 
IN  и #ACK OUT. Для  ввода  сигналов  квитирования  от  объекта #STB IN и #ACK OUT 
использованы входы запросов на прерывания INT0 и INT1. При таком подключении задача 
ввода данных в микроконтроллер получает больший приоритет, чем задача вывода. 

10. АНАЛОГО-ЦИФРОВЫЕ ПРЕОБРАЗОВАТЕЛИ 

Аналого-цифровой  преобразователь ADC (Analog Digital Converter)  осуществляет 

преобразование напряжения в цифровой код. Он предназначен для оцифровки и ввода в 
микроконтроллер аналоговых сигналов с различных датчиков физических величин. Схемы 
преобразователей различны. В зависимости от принципа построения меняются и свойства 
преобразователя. 

10.1. Принципы аналого-цифрового преобразования 

П

А Р А Л Л Е Л Ь Н Ы Й   П Р Е О Б Р А З О В А Т Е Л Ь

 

В  параллельном  преобразователе  (рис.  10.1)  входной  сигнал  подается  сразу  на 

множество компараторов, осуществляющих сравнение сигнала с опорными напряжениями. 
Опорные напряжения формируются цепочкой резисторов, делящих эталонное напряжение 
U

на равные части. 

 

 

 

 

 

 

 

содержание   ..  13  14  15  16   ..