Бит
WDE в регистре WDTCR позволяет подключить или отключить сторожевой таймер. При
разрешении работы сторожевого таймера его состояние не определено и прежде, чем
разрешать его включение, необходимо выполнить инструкцию wdr. В ином случае
контроллер может быть сброшен прежде, чем будет выполнена команда wdr,
прописанная после разрешения. Для предотвращения случайных ошибок запрет
сторожевого таймера должен оформляться специальной процедурой выключения.
13.
Програмно_управляемый_обмен
Порты ввода - предназначены для связи
микроконтроллера с различными объектами и могут реализовывать различные
алгоритмы обмена данными : асинхронный программный обмен , синхронный обмен ,
ввод - с сигналами квитирования . Обмен данными между портами и объектами
обеспечивается специальными подпрограммами – драйверами , создаваемыми
индивидуально для каждого объекта .
АСИНХРОННЫЙ ОБМЕН
В режиме асинхронного программного обмена ввод и
вывод данных производится по программе в моменты выполнения инструкций ввода и
вывода данных. Предполагается, что объект всегда готов к обмену: при вводе –
данные в момент выполнения инструкции 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. Подключение принтера к
микроконтроллеру
Режим синхронного ввода позволяет точно задать момент
считывания данных с объекта . В этом режиме сигнал стробирования ,
подтверждающий готовность данных , поступает с объекта на микроконтроллер . При
появлении строба микроконтроллер должен осуществить ввод данных с порта.