MicForSA (Ответы к Экзамену по Микропроцессорным Системам (микроконтроллеры микрокопроцессоры)), страница 3
Описание файла
Документ из архива "Ответы к Экзамену по Микропроцессорным Системам (микроконтроллеры микрокопроцессоры)", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "MicForSA"
Текст 3 страницы из документа "MicForSA"
Емкость С=13,,43пФ. Для выбора синхронизации используются биты CRSEL0-3.
12. Сторожевой таймер
Сторожевой таймер синхронизирован от отдельного внутреннего генератора на кристалле, работающего с частотой 1МГц (при напряжении питания 5В). Задержка сброса устанавливается с помощью предделителя (Prescaler). Настройка предделителя осуществляется установкой или сбросом битов WDP0…WDP2 регистра управления сторожевым таймером WDTCR. По истечении установленного времени задержки сторожевой таймер подает сигнал сброса на микроконтроллер.
Интервалы задержки сторожевого таймера
WDP2 | WDP1 | WDP0 | Количество циклов | Задержка сброса |
0 | 0 | 0 | 16К | 15ms |
0 | 0 | 1 | 32К | 30ms |
0 | 1 | 0 | 64К | 60ms |
0 | 1 | 1 | 128К | 0,12s |
1 | 0 | 0 | 256К | 0,24s |
1 | 0 | 1 | 512К | 0,49s |
1 | 1 | 0 | 1,024К | 0,97s |
1 | 1 | 1 | 2,048К | 1,9s |
Сброс может быть предотвращен инструкцией wdr.
Бит 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. Подключение принтера к микроконтроллеру
Режим синхронного ввода позволяет точно задать момент считывания данных с объекта . В этом режиме сигнал стробирования , подтверждающий готовность данных , поступает с объекта на микроконтроллер . При появлении строба микроконтроллер должен осуществить ввод данных с порта.
ПОЛУДУПЛЕКСНЫЙ ОБМЕН
Полудуплексным считается двунаправленный синхронный обмен , при котором в любой момент времени передача данных может производиться только в одном направлении . Направление передачи данных порта меняется в процессе работы в зависимости от решаемой в текущий момент задачи . На рис . 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.Порты ввода-вывода предназначены для связи микроконтроллера с различными объектами и могут реализовывать различные алгоритмы обмена данными:
1)Асинхронный программный обмен 2)Синхронный обмен 3)Ввод-вывод с сигналами квитирования.
Обмен данными между портами и объектами обеспечивается специальными подпрограммами – драйверами, создаваемыми индивидуально для каждого объекта.
Асинхронный обмен.
В режиме асинхронного программного обмена ввод и вывод данных производится по программе в моменты выполнения инструкций ввода и вывода данных. Предполагается, что объект всегда готов к обмену: при вводе – данные в момент выполнения инструкции in присутствуют на линиях порта, при выводе – данные будут прочитаны с линий порта до следующего вывода.
Пример программы для осуществления асинхронного вывода данных для Atmega163:
.equ porta=$1B; .equ ddra=$1A; .cseg; ldi r16,$FF;запись $FF в r16
out ddra,r16 ; включение порта А на вывод out porta,r0 ; вывод данных из регистра r0 в порт А.
Ввод данных с линий порта.
.equ pina=$19 .cseg in r0pina ; ввод данных из порта pina в регистр r0.
По адресу $19 в пространстве ввода – вывода микроконтроллера размещен регистр pina, с входных линий которого и будут взяты данные во время выполнения инструкции.
Симплексный обмен.
Симплексным считается однонаправленный обмен данными. Такой обмен обычно является синхронным. В этом случае каждое изменение данных на линиях порта сопровождается сигналом синхронизации (стробом). Строб генерируется источником данных и предназначен для задания момента записи данных в регистр приемника.При выводе данных сигнал строба должен сформировать микроконтроллер, используя для этого специальные линии шины управления или отдельные биты портов ввода – вывода.
Вариант соединения Atmega163 с посимвольным принтером, имеющим 8-битный вход для приема данных DATA, выход сигнала готовности READY и вход стробирования #STB. Активным на входе стробирования является сигнал низкого уровня. Порт А микроконтроллера и бит РВ6 порта PORTB программируются на вывод данных, бит PB2 порта PORTB на ввод. Подпрограмма вывода должна: осуществлять проверку готовности принтера, при обнаружении сигнала READY=1 вывести данные в порт PORTА, подтвердить вывод данных выводом сигнала стробирования #STB=0 для записи данных в принтер. Если принтер не готов к обмену микроконтроллер через заданный интервал времени повторяет операцию.
Режим синхронного ввода данных позволяет точно задать момент считывания данных с объекта. В этом режиме сигнал стробирования, подтверждающий готовность данных поступает с объекта в микроконтроллер. При появлении строба микроконтроллер должен осуществить ввод данных с порта.
Полудуплексный обмен.
Полудуплексным считается двунаправленный синхронный обмен, при котором в любой момент времени передача данных может производится только в одном направлении. Направление передачи данных порта меняется в процессе работы в зависимости от решаемой в текущий момент задачи. Пример: передача данных в параллельном формате осуществляется по линиям порта PORTA. Для выдачи и приема четырех сигналов управления обменом (сигналы квитирования): использованы две линии порта PORTB и входы запросов на прерывания INTO и INT1. При поступлении сигнала #STB IN=0 контроллер должен выставить сигнал подтверждения #ACK IN=0 и осуществить запись во входной регистр порта PORTA. При низком уровне сигнала #ACK IN объекта запрещается формировать новый сигнал #STB IN. По окончании записи контроллер снимает сигнал #ACK IN, разрешая повторную передачу данных. Работа микроконтроллера в режиме вывода аналогична. Микроконтроллер выводит данные в порт PORTA, подтверждая вывод сигналом #STB OUT=0. Объект формирует сигнал подтверждения #ACK OUT=0, сообщая контроллеру о готовности к приему данных. При снятии сигнала #ACK OUT контроллер должен снять сигнал #STB OUTи может вновь перейти к выводу данных.