Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007) (1264222), страница 28
Текст из файла (страница 28)
Обмен данными по последовательному интерфейсу )гса11 12с Ьр де1ау ; подключенных к шине Подпрограмма обработки прерывания от ППП БРОАТЕ: 161 12сабг,Б40е12снг ;посылка адреса ПОП+записи гса11 г2с зпагс 1дй 12сбаса,Б00 гса11 12с нг1ге ;команда чтения данных из порта 1б1 12сас(г,Б40+12сгс( ;изменение направления обмена гса11 12с гер всего вег ;подтверждения после чтения ;не будет гса11 12с геаб анар 12сдаса шоч г20,12сдаса ;чтение данных ;обмен тетрадами ;сохранение ;генерация стопового бита ;сброс флага Т гса11 12с егор с1г 1бф 12сабг,Я40+12снг гса11 г2с вгагг 1бф 12сбапа,Б01 гса11 12с нггсе шоу 12сбага,г20 гса11 г2с нгфсе гса11 12с асор гег1 ;изменение направления обмена ;команда вывода данных в порт ;вывод данных ;генерация стопового бита *******Ф***********я****************************** ь ****** ИМПОРТИРОВАННЫЕ ПОДПРОРРАИМЫ, используемые для работы ведущего МК по протоколу 12С Настройка конфигурации микросхемы ППП 1бф 12садг,Б40.ь12снг ;посылка адреса ПОП+записи гса11 12с всагс ;генерация стартового бита 161 12сбаса,БОЯ гса11 12с нгфге ;команда записи в порт конфигурации 1бф 12сбага,БТО ;старшие 4 бита — на ввод, гса11 12с нгфге вмладшие 4 бита — на вывод гса11 12с вТор )генерация столового бита гса11 ОРОАТЕ ;ввод/вывод через ППП 1оор: в1еер ;переход в режим пониженного знергопотребления пор гфшр 1оор 5.3.
Обмен данными по интерфейсу 12С(Г%!) 173 )Для коммуникации используются линии порта РΠ— РОЯ(БСП) и ;Р07(ЯОА).управление выводами БОА, ЯСО с открытым стоком ;осуществляется путем начальной Установки битов РОНТх ;в 0 и в дальнейшем с помощью установки/сброса битов ;направления ВОНх. ;**** Основные функции: **** ;12с вгагг — стартовая посылка, посылка адреса и ;направления, ;12с гер всагс — посылка "повторного старта" (гереасеб )вгагг), ;12с нгфге — передача байта, 12с геаб — прием байта, ;12с егор — стоповая посылка *** * *** ******* *******в******************* ;Функции задержек *** * ** ******************************************** задержка (на 5 мкс минимум) 12с Ьр с(е1ау: 1бй 12сс1е1ау 2 12с Ьр бе1ау 1оор: бес 12сбе1ау Ьгпе 12с Ьр бе1ау 1оор гег задержка (на 2,5 мкс минимум) г2с с(р с1е1ау: 1б1 ь2сс(е1ау,1 12с с)р бе1ау 1оор бес 12сбе1ау Ьгпе 12с с)р бе1ау 1оор .******в***в*********в**************** * **ь***********в* ;Функция повторного старта подготавливает шину 12С к ;формированию стартового бита ;За данной функцией должен следовать вызов 12с вгагг *в*****в********************** * **** * **** 12с гер всагс: гса11 12с ср с1е1ау вЬ1 ЭОНО,ЕСОР ;захват линии ЯСО (выход БСО О) сЬТ ООНО,ЯОАР ;освобождение линии ЯОА гса11 12с Нр бе1ау ;задержка сЬ1 ООНО,ЯСПР восвобождение линии ЯСО (выход БС1=1) гса11 12с Чр бе1ау ;задержка ************************в*в*********в*******ь************ 12с впахп: шоч 12соага,12саох эЬЬ ОРКО,ЯОАР ;захват ЯРА 12с ихфге: ;установка флага С ;сдвиг первого бита в С эес хо1 12сдава хфшр 12с их1Хе 11хвс 12с ихфге ЬЬХ: 1э1 12сбага хех ;посылка следующего бита в С 12с их1Хе 11хэв: Ьхео 12с оег асй вЬЬ ОРКО,ЯСЬР Ьхсэ 12с ихфге Ь1аЬ ,"если бит установлен, освободить ЯРА, 12с их1Хе 1ои: эЬЬ РРКО,ЯРАР ;иначе захват БРА 12с хеай Ь11: эЬ1 ОРКО,БСЬР х3шр 12с ихфсе ое1ау 12с ихфсе Ь1оЬ: сЬЬ ОРКО,ЯОАР ,захват линии БСЬ хса11 12с Ьр бе1ау сЬЬ ОРКО,ЯСЬР ;задержка ;освобождение линии ЯСЬ ~освобождение линии БРА 12с их11е бе1ау: хса11 12с Ьр ое1ау сЬ1 РОКС,ЯСЬР х2с хеад спес'к нахв.
вЬЬв Р11яР,БСЬР ;задержка ;ОСВОбождение линии БС1, ;ожидание состояния ЯСЬ=1 хса11 12с Ьр бе1ау 12с ихфге спесх иа1Х: вЬ1э Р1НР,ЯСЬР ;задержка ;ожидание состояния БСЬ=1 вес 174 5. Обмен данными по последовательному интерфейсу ;Функция формирования стартового бита ;За данной функцией должен следовать вызов 12с ихфхе ******************************* * * * * * **** хса11 12с ор де1ау ;задержка ********************************* я *********************** ;Функция записи одного байта в ведомое устройство ;Также используется для передачи адреса ;За данной функцией должен следовать вызов 12с сев асА ********************************************************* ;переход, если передача завершена (регистр пуст~ ;захват линии ЯСЬ хфшр 12с ихЬХе спесй иа1Х хфшр 12с ихфхе ЬЬЬ *****************я**********************я**********я***** 5.
3, Обмен даниными но иптерфейху 12С(ТВ7) 175 ;Функция чтения подтверждения. Используется функцией 12с ихфве **************** ******* * ************ я * ** я ************** ** 12с аеХ асйи вЬЬ ОРКР,ЯСЬР ;захват линии ЯС1 сЬЬ ОРКР,ЯРАР ;освобождение линии ЯОА хса11 12с Ьр бе1ау;задержка сЬ1 ОРКР,БСЬР ;освобождение линии ЯСЬ 12с пех асх иа1х: эЬ1э Р1МР,ЯСЬР ;ожидание высокого уровня ЯС1. х1шр 12с оех асм иафх с1с ;сброс флага С эЬ1с Р1НР,ЯРАР >если ЯРА=1, вес ;установка флага С хса11 12с Ьр ое1ау ;задержка вЬЬ ОРКО,ЯСЬР ;захват линии ЯСЬ ;Функция чтения одного байта от ведомого в регистр ;12с бава ;Значение флага С=1 используется как признак конца приема ;После данной функции должна следовать функция 12с рцХ асй ************************************ я ******************** 12с хеада ;Загружаем Б01 — это после приема данных приведет к ;установке флага С 1б1 12сбага, Ох01 хфшр 12с хеао сйесА иафх хса11 12с Ьр де1ау ;задержка с1с ;сброс флага С вЬ1с Р1МР,ЯОАР ;если ЯРА=1, установка флага С хо1 12сбаха ;сохранение принятого бита Модуль интерфейса Т тт'1 задержка освобождение линии ЯС1.
Я»А ;Функция формирования ******************** >захват БРА >задержка >освобождение линии ЯСЬ ;задержка ;освобождение линии ЯРА ;задержка Рис 517 Структура модуля Т'и>'1 176 5, Обмен данными по последовательному интерфейсу Ь гсс '2с геаб Ьтг ;прием закончен, когда флаг С=1 ***************** к *********** * *** ******************* ;Функция формирования подтверждения. Используется функцией >12с геас >при значении флага т=1 подтверждение не формируется, ;после чего обычно формируется стоповый бит ;при Т=О формируется подтверждение приема «****** * * * ****************** *** ************ 12с рцг асх: зЬ1 РРНР,ЯСЬВ >захват линии БСЬ Ьггс т2с рцг асх 1он ;если Т=О, формируем подтверждение сЬ1 РРНР,ЯРАР ;освобождение линии ЯРА гзир 12с рцг асх Ь1ПЬ 12с рцг ас>с 1оьи зьф РРИР,ЯРАЯ ;захват БРА 12с рцг асх ЫЧЬ> гса11 т2с Ьр ое1ау сЬ1 РРИР,ЯСЬР 12с рцг асх иатг> зь1з Р1ИР,ясьр ;ожидание освобождения Бсь гзжр 12с рцг асх катг гса11 г2с Ьр ое1ау ;задержка зьг РРНР,БСЬР **************** * ** ******к***к****************к*я***в**** столового бита *******к****ее**в****к******я******** 12с егор> зЬ1 РРНР,ЯРАР гса11 12с Ьр бе1ау сЬ1 РРНР,БСЬр гса11 12с чр г>е1ау сЬ1 РРИР,ЯРАР гса11 12с Лр ое1ау гег Создать проект в АУК Вшйо 4 и загрузить тестовую программу.
Проверить работу МК в пошаговом режиме, наблюдая выходы 5.3. Обмен данными по интер>г>ейсу 12С!77!т) 177 порта Р)Э (Р!Эб, Р07). Эмуляцию сигналов с порта ППП при чтении данных можно выполнить, устанавливая ручным способом биты данных на линии ЯРА !разряд Р1!чР7). Чтобы ускорить прогон программы, рекомендуется перед компиляцией закомментировать строки программы с проверкой состояния линии ВС1.. Создать проект устройства, используя схему рис. 5.16, для проверки работы канала 12С с помощью программы 1313 6 РгоГез>йопа1 из пакета Рго!сця 6 Рго1езз1опа! фирмы 1,аЬсепгег Е1ес!п>шс. Проверить работу устройства в пошаговом режиме. Ряд микроконтроллеров семейства АТшеяа содержит встроенный модуль интерфейса Т%1, позволяющий выполнять обмен данными по последовательному каналу в различных режимах.
Упрощенная структурная схема модуля приведена на рис. 5.17. Модуль содержит блок шинного интерфейса (о1)А, ВС1.) с регистром данных ТЪЧЖ и контроллером состояний Вгагг>31ор, блок контроля адреса с регистром адреса ТЖАК и схемой сравнения, блок управления с регистрами управления ТЮСК и состояния Т%ВК, контроллер скорости передачи с предделителем и регистром скорости Т%ВК. 17Р № разряда 7 Имя Т%17ЧТ Т%ЕА Т%ЯТА Т%ЯТО Т%%С %1Е № разряда 3 2 Имя Т%$7 Т%36 7%34 Т%$3 %Р31 30 178 5. Обмен данными по последовательному интерфейсу Регистр данных Т%ПК обеспечивает параллельную загрузку байтов и последовательный вывод данных на линию БОА пугем сдвига содержимого регистра влево в сторону старших разрядов.