Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007) (1264222), страница 34
Текст из файла (страница 34)
Организация асинхронного параллельного обмена... 209 з установка бита подтверждения свывод на индикатор подтверждения от МК МАТТ ЯИ7 2с 1П зн 0 ьп вн 1 гп зн 2 1п зн 3 ;ввод 4-разрядного кода данных )ожидание повторного нажатия кнопки БИ7 зЬьс Ртио, 1пп чи гопр МАТТ ЯИ7 2 Ь1б зн сод,1ПГ чи гса11 ООПТЬЕР 1пс соипс вес) 1пс соиле срх соипг, 2 Ьгед 1Н 0102 поч гп баса, гп бьд вп г, 1п баса г3пр ВЕЯ АОК пк ;сброс запроса 'увеличиваем счетчики цифр ;если счетчик равен двум, то переходим к записи 2-й цифры, )иначе сохраняем 1-ю цифру ;*** Инициализация *** титТс 1бх Гепр, 1он(ВАМЕНР) ;установка оип ЯРЬ, Гепр указателя стека 1бб гепр, ььдь(РАменР) с на последнюю оис ЯРН, Гепр ячейку ОЭУ 1бь гь, Ох70 ;Ох0170 — начальный адрес Ьбь ги, ОхО1 памяти данных зег гепр ;настройка оип РРРВ, ГевР порта РВ на вывод с1г гепр ;настройка оип РРВР, Гепр порта РР вег гепр на оис РОНТР, ГепР ввод с1г зю соб с1г ьп бтд ;очистка операнда зег )Т=1 (БНЕС) 1с)1 соипс,о ;обнуление счетчиков 1б1 соипп зед, 0 с*я*начало цикла передачи одной цифры*** ;Инициализация регистра светодиодов (7,6 биты): ;начальные значения сигналов запроса и подтверждения ;по условию задания равны 0 1оорс 1бь гед 1еб,ОЬОО000000 гса11 ОРТЬЕР ;вывод на1Г: зЬьс Р1НР,1пс чи ;ожидание запроса г)вр на1С Ьгб зн соб, ьпс чи ;установка бита запроса гса11 ООТЬЕР Ь1б вн соб, ас)с пх гса11 ООТЬЕР 8 — 1998 210 6.
Организация ввода>вывода данных по параллельному ннп>ерфы>су 1И 0102> анар тп бата ог 1п бата, ьп бьд >запись второй цифоы в упакованном Формате > в память данных зт 2+, 1п бата 1б1 соцпт, 0 ВЕЗ АСК в>с: Ь1б зн соб, ас>с вх тса11 ООТРЕР >*** Сброс данных с1т 1п б19 ;сброс подтверждения от МК ;очистка для записи > новых значений ;если счетчик меньше четырех, то переход к новому циклу ввода >закончен ввод четырех циФР >для исключения повторного нажатия Задание 1. Составить программу на языке Ассемблер А ь>К для заданного варианта.
Выполнить отладку программы в отладочной среде АУК Яцс!!о 4. Загрузить программу в микроконтроллер и проверить ее работу в ЯТК500. Обмен данными между микроконтроллерами Обмен данными между двумя микроконтроллерами по параллельному интерфейсу может быть выполнен по протоколу с квитированием в случае занятости одного из них обслуживанием внешнего устройства. Протокол обмена рассмотрим на примере с двумя микроко>проллерами, когда один из них — МК1 — выполняет передачу данных в микроконтроллер МК2. ср1 сопят зеЧ, В Ьтпе 1оор гзвр 1п>.г >*** Индикация ввода *** ООТЬЕР:ест гед 1еб, зн соб сов гед 1еб оцт РОВТВ, тед 1еб сов геч 1еб с1т вн соб тса11 ВЕРАМ тет >*** Задержка *** РЕЬАХ: 1бт г19,10 1бг г20,255 1б1 г21,255 бб> бес г21 Ьтпе бб бес г20 Ьтпе бб бес т19 Ьгпе бб тес >с учетом предыдущего значения >инвертирование для вывода на светодиоды ;обратное инвертирование 62 Организация асинхронного парол зельного обмена...
21! Для выполнения одного сеанса передачи в микрокон лл МК1 следует предусмотреть следующие действ „. 1) посылку сигнала запроса в микроко>про МК2 2) ожидание сигнала, подтверждающего готовность МК2; 3) при получении ответного сигнала вывод очередного байта (или тетрады) на шину данных," 4) изменение сигнала запроса, используемое как признак присутствия данных на шине; 5) ожидание сигнала, подтверждающего прием данных микроконтроллером МК2; 6) выход из сеанса передачи.
За рамками сеанса связи микроконтроллер МК1 может выполнять любую работу, например подготовку очередного байта (или тетрады). Микроконтроллер МК2 после инициализации ожидает поступления сигнала запроса на один из входов внешнего прерывания. При поступлении запроса осуществляется вызов обработчика прерывания, в котором следует предусмотреть следующие действия: 1) возвращение запрашивающему микроконтроллеру МК! си~нала подтверждения готовности к обмену; 2) ожидание сигнала о присутствии данных на шине; 3) прием данных и сохранение в пямяти; 4) возвращение микроконтроллеру МК! сигнала подтверждения приема; 5) выход из прерывания. После приема байта (тетрады) микроконтроллер МК2 возвращается к выполнению прерванной программы. Задание 2.
Разработать проект, осуществляющий передачу из МК1 в МК2 многоразрядного двоично-десятичного числа, например код номера телефона, по 4-разрядной шине. В качестве исходного кода можно использовать данные, поступающие от оператора с кнопочного регистра, либо код, хранимый в программной памяти микроконтроллера МК1, обращение к которой начинается по сигналу от кнопки з1аг1. Микроконтроллер МК2 постоянно находится в режиме бесконечного цикла. После завершения приема он осуществляет в целях контроля последовательный вывод числовой последовательности на светодиодную линейку. Подготовить и отладить программы для обоих микроконтроллеров, используя АУК З!пс(10 4. Проверить работу схемы на модели, используя симулятор программы 1315 Рго1епз б.
Загрузить обе аз Контрольные вопросы АКЕс АПСО АОС7 212 б Организанин ввода(вывода данных но нараллельнотуинтерфейсу программы в микроконтроллеры двух 8ТК500. Выполнить необ- ходимые соединения между микроконтроллерами. Проверить ра- боту схемы на макете. Задания для самостоятельного программирования 1.
Создать проект (схему и программу), осуществляющий опрос клавиатуры по запросу прерывания от замкнутой кнопки. Подготовить программу и проверить ее работу в режиме симуляции. 2. Создать проект электронного калькулятора для выполнения целочисленных арифметических операций, используя программные модули из гл. 3. 3. Создать проект для чередуемого ввода и вывода (двунадавленный режим обмена) по 8-разрядной шине данных через порт РР, реализующий обмен данными по запросам от микроконтроллера с квитированием. Проверить работу программы в АЪ'К 81ийо 4, используя для запроса выход РВ.О и вручную симулируя в регистре РП4Р сигналы входных данных и на входе РОВ.1 сигналы квитирования от внешнего устройства. 1.
Как осуществляется асинхронный обмен данными по параллельному интерфейсу? Как остановить прием сообщения, длина которого заранее неизвестна? 2. Как организовать вывод данных из программной Р1аз)7- памяти микроконтроллера? Как записать данные в память программ микроконтроллера АТшейа8515 в процессе выполнения программы? 7. УСТРОЙСТВА ДЛЯ ОБРАБОТКИ АНАЛОГОВЫХ СИГНАЛОВ Цель работы — изучение основных режимов работы аналогоцифрового преобразователя (АЦП) и аналогового компаратора, их программирование и проведение исследований в 8ТК500. 7.1.
АНАЛОГО-ЦИФРОВОЙ ПРЕОБРАЗОВАТЕЛЬ В своем составе ряд микроконтроллеров: АТйпу15, АТ908-4433, АТ90$8535, АТшейа8х, АТше8а16х, АТшейа32х и др. имеют аналого-цифровой преобразователь. Структурная схема аналого-цифрового преобразователя микроконтроллера АТ9088535 приведена на рис. 7.1. Рне. 7Л. Схема аналого-цифрового преобразователя 215 7.2. Аназоговьт колзнаратор № разряда 4 3 АОРТО АРЕ!з! АРФ АРЕК АР!Р АР!Е АРРБ2 АРРЯ1 Имя 214 7.
Устройства для обработки аналоговых сигналов АЦП содержит 8-канальный аналоговый мультиплексор входных сигналов, регистр выбора входного сигнала АРМ1)Х, 10-разрядный цифроаналоговый преобразователь !конвертер), 8-разрядный регистр управления и состояния АРСВК, 16-разрядный регистр данных, схему формирования запроса прерывания АРС СС, схему компаратора и предварительный делитель !ПД) тактовой частоты.
Преобразователь работает по методу последовательных приближений, формируя 10-разрядный двоичный код, размещаемый в регистре данных. Работа преобразователя выполняется на частоте от 50 до 200 кГц. Для получения этой частоты используют делитель тактовой частоты с заданным коэффициентом деления. Значение коэффициента деления задают с помощью трех разрядов АРР82, АРР81, АРР80 регистра управления АРСВК !табл. 7.1) согласно табл.
7.2. Таблица 7.1. Формат регистра АРСКК Таблииа 7.2 Таблица коэффициентов деления Преобразование начинается после установки в 1 разряда АР8С в регистре АРСВК. После завершения преобразования устанавливается в 1 бит АКР регистра АОСВК, используемый для формирования запроса прерывания АРС СС при разрешающем значении 1 бита АИЕ регистра АРСИК. При переходе к прерывающей программе бит АИР аппаратно сбрасывается в нулевое состояние. Программно этот бит можно сбросить в 0 путем установки 1 в данный разряд. Результат преобразования, представляющий 10-разрядный двоичный код, размещается в старшей и младшей половинах регистра данных АРСН:АОС1., причем младшие восемь разрядов расположены в АРСЕ, оставшиеся два занимают младшие биты АРСН.
Считывание результата выполняется с помощью двух операций ввода. Сначала считывается младший байт АРСЕ, затем старший АРСН. Такой порядок обеспечивает принадлежность читаемых данных одному и тому же результату преобразования. Преобразователь может работать в одиночном режиме либо в циклическом.
Выбор режима осуществляется с помощью бита АПЕК. регистра АРСВК: при АРРК = 0 выполняется одиночный режим преобразования, при АРРК = 1 — циклический. В обоих случаях преобразование начинается после установки в 1 бита АРВС. В одиночном режиме после завершения преобразования для выполнения следующего необходимо снова установить бит АОВС. В циклическом режиме следующее преобразование начинается автоматически после завершения предыдущего и прекращается после сброса бита АПЕК. В обоих случаях время, затрачиваемое на первое преобразование, увеличивается для инициализации преобразователя. Для уменьшения помех, вызываемых работой процессора, предусмотрена возможность преобразования с переводом микроконтроллера в режим холостого хода.