Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007) (1264222), страница 27
Текст из файла (страница 27)
При завершении обмена шина освобождается ведущим устройством. В микроконтроллерах АЧК реализация протокола обмена может быть осуществлена двумя способами: программно или программно-аппаратно. Программный способ реализуется с использованием библиотеки функций для формирования протоколов обмена. Этот способ применяется в микроконтроллерах, в которых отсутствуют встроенные аппаратные средства, реализующие протокол обмена. К ним относят микроконтроллеры семейств АТйпу и АТ90.
Микроконтроллеры семейства АТшейа (модели 8х, 1бх, 32х, 323х, 64х, 128х, 163х) имеют в своем составе модуль обмена по интерфейсу Т%1, что упрощает программирование ввода/вывода. Рассмотрим подробнее оба способа. 166 5. Обмен данными но последовательному интерфейсу Программная реализация протокола 12С Программная реализация протоколов 12С для разных случаев взаимодействия устройств представляет собой набор программ, эмулирующих работу ведущего и ведомых устройств с учетом функциональных требований. Наиболее сложным является случай, когда в качестве ведущего и ведомых выступают микроконтроллеры, которые могут быть как передатчиками, так и приемниками при обмене данными и не имеют встроенных средств обмена по !2С. Более простым считается случай, когда одно из устройств (микроконтроллер) является ведущим, а ведомые устройства содержат встроенный порт для обмена по 12С. Такие устройства (датчики, устройства памяти, часы реального времени и др.) широко выпускаются различными фирмами-производитшзями электронных компонентов и могут быть подключены к микроконтроллеру достаточно просто.
Решая общую задачу организации взаимодействия микроконтроллера с периферийными устройствами, рассмотрим необходимые механизмы программной реализации 12С. Это предполагает программную эмуляцию 12С, существенно упрощающую работу только со стороны ведущего микроконтроллера. Алгоритмы основных транзакций шины, записи н чтения, которые использованы при программировании, представлены на рис. 5.14, 5.15. Процедура транзакции записи (передача адресного байта и запись байта данных) начинается с захвата линии ЯЭА (Я)А = 0)— формирования стартового бита — и установки флага С = 1, косвенно используемого для выявления признака окончания цикла передачи. Путем циклического сдвига влево байта данных первый передаваемый бит вытесняет 1 из флага С в младший разряд регистра данных.
Это исключает возможность преждевременного выхода из цикла, когда в регистре данных во время передачи байта остаются нулевые биты. Линия БСЬ переводится в О. Значение бита С используется для управления состоянием линии ЯЗА. Если передаваемый бит, установленный в С, равен 1, линия БРА принимает значение ЯЭА = 1, в противном случае ЯЭА = О. Далее спустя время задержки устанавливается линия БСЬ в 1 и после проверки, если ведомое устройство не тормозит работу на линии БСЬ, выполняется циклический переход для вывода следующего бита данных.
На последующих итерациях цикла выполняется логический сдвиг. После выявления признака конца передачи, когда все биты регистра данных равны О, выполняется переход к процедуре проверки бита подтверждения. 5,3. Обмен данными ио интерфейсу!2С(ТИ7) 167 рка АСК Рнс. 5.14. Схема алгоритма записи байта данных Получение бита подтверждения АСК начинается с захвата линии БСЬ (БСЬ = 0) и освобождения ведущим линии Я)А (Я)А = = 1). После временной паузы линия БСЬ переключается в состояние 1 и, если она свободна от влияния ведомых устройств, значение БПА считывается в качестве сигнала подтверждения АСК (установка или сброс бита С). После паузы на линии БСЬ устанавливается О.
Практическая часть 168 5. Обмен даннычи по последовательному интерфейсу Рис. 5Л5. Схема алгоритма чтения байта данных Процедура транзакции чтения (прием данных от ведомого) начинается с установки признака конца приема (1) в младший разряд регистра данных. Цикл чтения битов данных начинается с захвата линии $СЬ (БСЬ = 0), установки 1 на линии $СЬ, подтверждения высокого уровня сигнала БСЬ = 1 и последующего ввода бита данных в регистр данных путем опроса линии ЯЭА и сдвига содержимого регистра данных. После очередной паузы выполняется проверка признака конца приема байта данных по значению флага С.
Если не все биты получены (С = 0), прием продолжается. Если приняты все биты (С = 1), ведущее устройство переходит к формированию бита подтверждения приема АСК для ведомого устройства. При необходимости формирования бита АСК линия ЯЭА устанавливается в О, линия ЗСЬ переводится в состояние 1. После подтверждения 8СЬ = 1 и паузы линия $СЬ вновь возвращается в состояние О. На этом чтение байта данных заканчивается.
Процедуры формирования стартового бита, стопового и повторного старта сводятся к установке исходных состояний сигналов 5.3. Обмен даннычи по интерфейсу 12С(Т<<<) 169 $ПА = БСЬ = 1 и последующих изменений согласно приведенным выше временным диаграммам. Используемые задержки времени (паузы) необходимы для обеспечения надежной передачи. Их устанавливают, согласно рекомендациям, на период и длительность сигнала БСЬ; время удержания неактивного состояния линий интерфейса; время, предшествующее повторному старту, и др. Работу интерфейса 12С рассмотрим на примере обмена данными между микроконтроллером АТ90$8515 и программируемым параллельным портом (ППП) РСА9554 фирмы Р)>й)рз.
Схема сопряжения микроконтроллера МК и параллельного порта ППП приведена на рис. 5.16. Переключатели Рис. 5. !6. Схема связи микроконтроллера с параллельным портом по интерфейсу!2С Порт представляет собой микросхему, имеющую канал последовательной связи 12С, с одной стороны, и 8-разрядный параллельный канал ввода/вывода, с другой стороны.
Разряды параллельного порта могут быть запрограммированы на ввод или вывод с помощью 8-разрядного управляющего слова, пересылаемого в регистр управления (конфигурации) порта. Для обращения к ППП в микроконтроллерной системе используется один из восьми адресов в диапазоне $40 — $47. При этом три младших разряда определяют путем установки сигналов логического 0 и логической 1 на входах А2 — АО. Для обращения к внутренним регистрам порта используется командный байт, значение которого определяет регистр и выполняемую операцию: 0 — чтение данных с входного регистра порта, 1 — запись данных в выходной регистр порта, 2— 170 5.
Обмен даннььии по последовательному интсрфейсу изменение полярности сигналов, 3 — запись в регистр конфигурации 1направления передачи). Обращение к порту содержит три посылки: первая служит для передачи адреса, вторая — команды, третья — данных. Обмен с портом выполняется по запросу прерывания, формируемому микросхемой ППП при изменении сигналов на входах порта. Для этого выход !(ь(Т ППП подключен к входу ПМТО микроконтроллера 1для АТ90К8515 линия порта РР2).
Задание 1 Подготовить программу для исследования передачи и приема данных по последовательному каналу 12С, используя в качестве ведомого программируемый параллельный порт. Алгоритмом основной программы предусмотрена такая последовательность действий: ° инициализация порта микроконтроллера с линиями интерфейса; ° настройка системы прерываний микроконтроллера; ° временная пауза; ° настройка конфигурации ППП; ° вылов процедуры обмена с ППП; ° перевод микроконтроллера в режим пониженного энергопотребления и ожидания прерываний от ППП. При поступлении запроса выполняются следующие действия: ° инициализация обмена с ППП; ° формирование состояния о(а(т и посылка адреса; ° запись в ППП команды ввода ($00); ° изменение направления обмена; ° повторный старт; ° чтение данных из ППП; ° обмен тетрадами; ° сохранение данных; ° формирование состояния о(ор; ° формирование состояния 5(аг( и посылка адреса; ° запись команды вывода ($01); ° обратная пересылка данных в ППП; ° формирование состояния Б1ор и выход из прерывания.
Далее приведен текст программы на языке Ассемблер для обмена с ППП с включенными процедурами обмена ведущего микроконтроллера по интерфейсу 12С. При программировании протокола 12С ведущего микроконтроллера за основу взята бета-версия 1.0 программы из библиотеки АЧК б(ц(110. В программе используются две библиотечные функции задержки: )2с Ьр с2е1ау минимум на 5 мкс и 12с с)р суе1ау минимум на 2,5 мкс. 5.3. Обмен данными по интерфейсу 72С(ТИ7) 171 Программа 5.5 сТестовая программа 5.5 для работы с программируемым ;параллельным сортом по интерфейсу 12С.
Для ввода и вывода ,"данных используются по четыре вывода порта. При изменении ;сигналов на входах порта на линии 1ИТО вырабатывается ;запрос прерывания низкого уровня. По прерыванию происходит ;запись входных значений порта ППП и их передача на линии ;вывода. ********************************************************* .огд Охооо гфшр везет .ога ОхОО1 гошр ОРОАтЕ ;обработка сброса собработчик прерывания от ППП ша1п: 1д1 г16,Н1ОН(КАМЕИО) ;установка оцг ар)с,г16 указателя 1дт г16,ЬОХ(КАННИО) ," стека оцс ар1, г16 Инициализация интерфейса 12С с1г 12сс)апа )очистка регистра данных оцг ООНО,г2сс(ага 1д1 12сдаса Ох04 оцс РОКТО,12сбаса Настройки микроконтроллера с11 1с(1 г16, 1«тнтО ;разрешение прерывания 1МТО ;(по спаду) оцс 01МЯК, г16 1дь г16, (1«ЯЕ)( (0«1ЯС01) ((0«1ЯСОО) одб МСОСК,г16 зе1 гса11 12с )ср де1ау гса11 12с )ср де1ау ;пауза в ожидании готовности всех устройств, гпс1цде 8515с)ет Тпс .ецц ЯСЬР = 6 .ецц ЯОАР = .дет 12сде1ау = г16 .с)ет 12садг = г17 .с(ес 12сдаса = г16 .ецц 12сгд = 1 .ечц г2снг = 0 .******я************** сфайл определений АТЭОЯЯ515 1 ЯСЬ-р1п (РО6) с ЯОА-рьп (РО7) ;счетчик цикла задержки )регистр адреса шины 12С регистр данных шины 12С 1 чтение ;0-запись 172 5.