Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007) (1264222), страница 29
Текст из файла (страница 29)
Регистр адреса Т%АК используется при работе микроконтроллера в качестве ведомого. Код, записанный в семи старших разрядах регистра, представляет собственный адрес микроконтроллера. Этот код сравнивается компаратором с адресом, поступающим в микроконтроллер при появлении адресного пакета в регистре Т%13К. Младший бит Т%0СЕ регистра Т%АК разрешает распознавание общих вызовов (обращений с адресом $00). Если разряд Т%0СЕ = О, распознавание общих вызовов запрещено. Управление работой порта осуществляется с помощью регистров Т%СК (табл.
5.6) и Т%ЯК (табл. 5.7). Таблица 5.б. Формат регистра управления ТЖСК Таблица 5.7. Формат регистра состояния Т%8К Биты регистра Т%СК имеют следующее назначение: Т%ЕХ вЂ” бит разрешения работы модуля Т%1. При установке бита в состояние 1 выводы Я)А, БС1. подключаются к внешним выводам микроконтроллера РС1, РСО соответственно лля всех ранее названных молелей микроконтроллеров, кроме АТшеба8х (выводы РС4, РС5) и А1шеба 64х, 128х(РП1, РПО); Т%8ТА — флаг состояния 81ап. При установке бита в единичное состояние микроконтроллер может сформировать состояние 81аг1, если шина свободна.
Если шина занята, модуль ожидает появления состояния 81ор и лишь после этого захватывает шину, формируя состояние Йаг1; Т%8ТΠ— флаг состояния 81ор. Установка флага в состояние 1 приводит к формированию на шине состояния 81ор; Т%ЕА — бит разрешения подтверждения. При установке бита в 1 устройство формирует сигнал подтверждения, когда это необходимо; 5 3. Обмен данными по интерфейсу 12С(ТИТ) Т%1Е и Т%ПМТ вЂ” флаги разрешения и прерывания от модуля Т%1. Запрос прерывания генерируется, если Т%1МТ = 1 и Т%1Е = = 1.
Сброс флага Т%Пз)Т может быть осуществлен только при записи в него логической 1; Т%%С вЂ” флаг, устанавливаемый в 1 при попытке записи в регистр данных Т%0К, когда флаг прерывания Т%Пз)Т сброшен. Биты регистра Т%8К: Т%87...Т%83 — код состояния модуля Т%1; Т%Р81:Т%Р80 — коэффициент деления предделителя контроллера скорости передачи. Контроллер скорости передачи формирует последовательность овых сигналов поступающих на линию БСЬ. Частота фор- ВКи мируемых сигналов зависит от коэффициентов деления Т% и Таблица 5.Я.
Таблица коэффициентов Ллн выбора скорости обмена по Т%1 Т%РБ, загружаемых в регистры Т%ВК и Т%8К, и для разных моделей микроконтроллеров рассчитывается по формулам: — дла АТшеба163х, АТшеба323х юг =~сйк/(16 -> 2Т%ВК); — для моделей АТшеба 8х, 16х, 32х, 64х, 128х )наг = 1сйх l (16 + + 2Т%ВК*4 ). Значения коэффициентов деления для различных частот 7г 7,г и 6сг приведены в табл. 5.8.
При работе модуля в качестве ведомого скорость обмена зависит от импульсной последовательности, поступающей в микроконтроллер через вывод БСЬ. Молуль Т%1 может работать в следующих режимах: — ведущий с передачей байтов данных; — ведущий с приемом байтов данных; 180 5. Обмен данньаии по последоватепьному интерфейсу — ведомый с приемом байтов данных; — ведомый с передачей байтов данных. Процелура передачи одного байта данных от ведущего к ведомому представляет собой определенную последовательность действий.
1. В регистр Т%СК выводится команда для формирования состояния 81аг1. Для этого необходимо установить в 1 бит Т%8ТА (Т%8ТА = 1), сбросить флаг Т%ПчТ (Т%ПЧТ = 1) и установить бит активизации модуля Т%1 (Т%ЕХ = 1). После формирования состояния Маг! флаг Т%ПнТ устанавливается в 1. Для перехода к следующему действию выполняется проверка кода состояния $08 в регистре Т%8К. (Ожидание установки флага Т%1МТ можно заменить обработкой запроса прерывания. — Прим. авт.) Программная реализация функции старта представлена далее в программе 5.6 процедурой Кепс! Яаг1 . 2.
Содержимое пакета с адресом и нулевым значением бита направления записывается в регистр Т%1Ж. Передача инициализируется сбросом флага Т%!ХТ. После завершения передачи адреса и получения бита подтверждения флаг Т%ПМТ устанавливается в 1, а в регистре Т%$К устанавливается код статуса $18. Программная реализация функции записи представлена в программе процедурой Кепс! АсЬ . 3. После проверки кода статуса в регистр данных ТЪЧЖ загружается байт ланных для передачи и сбрасывается флаг Т%ПнТ.
По окончании передачи данных и получения бита подтверждения флаг Т%1ХТ устанавливается в 1, а в регистре Т%8К устанавливается код статуса $28. Эти действия обеспечивают передачу от ведущего устройства ведомому как команд, так и данных. Программная реализация функции вывода данных (а также команд) представлена в программе процедурой Яепс! Сот Оа1а. 4. После успешного завершения передачи выполняются команды для формирования состояния 81ор.
Программная реализация функции представлена в программе процедурой $гор. Кратко определим последовательность действий, выполняемых при приеме одного байта данных ведущим устройством; 1) в регистр Т%СК выводится команда для формирования состояния 81аг1; после формирования состояния 81аг1 флаг Т%П~)Т устанавливается в 1. Ддя перехода к следующему действию выполняется проверка кода состояния ($08) в регистре Т%8К. (Ожидание установки флага Т%Пч'Т также можно заменить обработкой запроса прерывания.
— Прим. авт.); 181 5, 3. Обмен данными по интерфейсу 12С~ТИ7) 2) содержимое пакета с адресом и единичным значением бита направления записывается в регистр Т%1Ж и инициализируется передача. После завершения передачи адреса и получения бита подтверждения флаг Т%ПнТ устанавливается в 1, а в регистре Т%БК устанавливается кол статуса ($40); 3) после сброса флага Т%1ХТ (разрешения приема) и получения байта ланных от ведомого данные из регистра Т%1Ж переписываются в один из регистров общего назначения. При успешном приеме код статуса в регистре Т%8К принимает значение $50. При необходимости формируется бит подтверждения приема; 4) после завершения приема выполняется команда для формирования состояния 81ор.
Последовательность действий, выполняемых при приеме одного байта данных ведомым устройством, можно определить следующим образом: 1) в регистр Т%СК выводится команда, сбрасывающая флаг Т%Пн'Т; 2) после приема первого байта с адресом ведомого устройства формируется запрос прерывания, проверяется код статуса в регистре Т%8К; если он равен $60, прием собственного адреса выполнен успешно; 3) передается бит подтверждения путем установки Т%ЕХ = 1 и выполняется сброс флага Т%1ХТ; 4) проверяется код статуса в регистре Т%8К (если он равен $80, значит в регистр Т%1Ж принят байт данных); передается бит подтверждения (Т%ЕХ = 1) и выполняется сброс флага Т%П~1Т; Действия 4-го шага повторяются, пока не будет принято все сообщение.
При поступлении состояния 81ор в регистре Т%БК формируется код статуса $АО (конец пакета). Подобным образом можно представить действия ведомого устройства при передаче данных. Подробное описание всех вариантов обмена и формируемые при этом значения статусных кодов можно найти в технической документации применяемой модели микроконтроллера. Практическая часть Работу встроенного модуля Т%1 рассмотрим на примере вывода данных из микроконтроллера АТшейа8х в параллельный порт РСА9554 для индикации. Схема сопряжения микроконтроллера МК и параллельного порта приведена на рис.
5.! 8. 183 ,после передачи алреса ;после передачи ланных .енц МТ ЯРА АСК = Ох18 .епц МТ РАТА АСК = Ох28 для частоты Рс1К = 4 Мгц ТХВН=12 ТХРЯ=О данные для вывола ;конфигурации ;настройка ППП на вывод ,"генерация стопового бита ;генерация стартового бита ;посылка адреса+записи Программа 5.6 свыходной регистр вывод данных .Ото Ох000 генерация столового бита т1вр Тпьт .Тпс1пде "в8дег.ьпс" .дет ЯРА Х = т17 .бег ВАТА = т18 ;файл определений Атвеоаа ;адресный байт ;байт данных (команды) ;1-чтение .еЧО 12стд = 1 .еЧО 12снт = 0 ;0-запись .еЧО БТАНТ = Ох08 ;после старта 182 5. Обмен данными по последовательному интерфейсу Рис.
5.18. Схема устройства для обмена данными с ППП по интерфейсу Т%1 Задание 2. Подготовить программу для проверки обмена данными между микроконтроллером и параллельным портом, используя встроенный модуль интерфейса Т%1. В качестве примера ниже приведена программа 5.6, которая выполняет вывод в порт инвертнруемого 8-разрядного кода данных. При передаче пакетов с адресами и данными использован механизм программной проверки условий установки в 1 флага ТРА(Т и состояний регистра Т14(8К.
Создать проект устройства, используя схему рис. 5.18, для проверки работы канала Т1й'1 с помощью программы 1818 6 РгоГе881опа! из пакета Рго(ецз 6 Рго(ВББ(опа!. Проверить работу устройства в пошаговом режиме. ,"Тестовая программа 5.6 для вывода данных в программируе;мый параллельный порт по интерфейсу ТХ1 ** к**к *********Я*******я ********к ******* к**************** **** Коды статуса в режиме ведущий передатчик **** 5,3 Обмен данными по интерфейсу 12С1™) тп1т: 1дт т16,НТБН(КАМЕМВ) ;инициализация оцт зрп,т16 указателя стека 1с(1 т16,).ОХ(КАМЕХР) опт зр1, т16 ;Подготовка ТХ1 к работе 1с(1 т16,12 опт ТХВК,т16 1с(1 т16,(1«ТХЕМ) ; Рзс1=100 Кгц оцт ТЕСН, т16 1дт т20,0хАА ;Настройка микросхемы ППП тса11 Бенд Ятатт ;генерация стартового бита 1дт БЕА Х,Б40+12снт ;посылка адреса+записи тса11 Бенд Абт 1с(1 РАТА, ВОЗ ;команда записи в порт тса11 Бепс( Сов Рата 1бь РАТА,Ох00 тса11 Яепс( Сов Вата тса11 Ягор ;Вывод данных 1оор: тса11 Бепс( Бтатт 1с(1 Я)А Х, 840+12снт тса11 Бенд Адт 1да РАТА,Б01 тса11 Бепд Сов Рата воя ВАТА,т20 тса11 Бенд Сов Рата тса11 Втор сов т20 т1пср 1оор ч******************** инвертирование ;повторение вывода ***************я******************** Функции режима ведущего передатчика ************** ****** ******************************* * ***** Бепб Ятатт: 1д т16 (1«ТХТМТ)((1«ТХЯТА))(1«ТХЕМ) оцт ТЕСН,т16 'услОвия для ООстояния ятхнт 5.
Обмен данными по последовательному интерфейсу 184 185 5.3. Обмен данными по интерфейсу 12С(Т~7) наьс1: Тп г16,ТХСН вЬгз г16,ТХТНТ гзшр на1Г1 Тп г16, ТХБК апдь г16,0хГ8 срь г16,БТАНТ Ьгпе еггог гег Яеп<( Адг: оцс ТХОН,БЬА Х 1дт г16,(1«ТИ1НТ) оцс ТИСЕ,г16 наьг2: ;ожидание установки флага тх1нт (проверка выполнения старта :загрузка пакета с адресом )(1«ТИЕЫ) ;передача еггог: гег тп г16,ТИСЕ вЬгз г16,ТХ1НТ )ожидание установки флага ТХ1НТ гзшр на).Г2 1п г16, ТХБЕ апд1 г16,0хг8 ср1 г1б,мт БЕА Аск;проверка выполнения передачи Ьгпе еггог гес Бепд Сош Васа: оцс ТХОЕ, ВАТА )загрузка байта данных 1дт г16,(1«ТХ1НТ))(1«ТХЕН) оцс ТИСЕ,г16 ;передача наггз: 1п г16,ТХСР, зЬгв г16,ТХ1НТ ;ожидание установки флага ТХ1НТ гдыр наьГЗ гп г16,ТХБЕ апдь г16,0хг8 срь г16,МТ ОАТА АСК ;проверка выполнения передачи Ьгпе еггог гег Есор: 1дт г16, (1«ТХТНТ)( (1«ТХЕН) ( (1«ТИБТО) оцс ТХСН,г16 условия для состояния ЯТОР 1д1 г16,0х11 на1Г4: с(ес г16 ;задержка для состояния БтоР Ьгпе наьс4 гес Рис.