Хартов В.Я. Микроконтроллеры AVR. Практикум для начинающих (2007) (1264222), страница 26
Текст из файла (страница 26)
5.2. Работа последовательного канала БР1 161 Предварительно выделив правой кнопкой мыши переключатель и щелкнув левой кнопкой, в открывающемся окне назначаем ему новое имя — 8%5. Сохраняем проект, создав для него новую папку (например, $атр1е/БР/). С помощью команд меню Боигсе/АсИ /1!етауе Яоигсе7)!ех. добавляем файлы с программами передачи и приема. Для этого воспользуемся подготовленными в АЧК Ягойо 4 файлами с расширением .аяп. Выполняем совместную компиляцию программ командой Яоигсе/Ви!Ы А!1.
При отсутсзвии ошибок связываем микроконтроллеры с соответствующими им Ьехфайлами. Для этого нужно, выделив предварительно на схеме правой клавишей мыши обозначение микроконтроллера, щелчком левой клавиши мыши открыть окно, в котором указывается путь к файлу. (Микроконтроллеры можно связать также с Ьех-файлами, полученными при компиляции в АЧК Яшйо 4, не прибегая к компиляции в 1818. — Прим.
авт.) Чтобы перейти к отладке, выполним команду меню Реби8IБгагг/Вез!аг! 12ебидд/пд. Открыв окна 1/О Ве8злгегл, 1пгегпа1 ВАМ Яоигсе Сас1е для обоих АЧК устройств (Ш, ()2), осуществляем пошаговую отладку, нажимая клавишу Г11, наблюдая за состоянием регистров ЯР1 и ячеек ЯВАМ и замыкая- размыкая 8%5 для вывода данных в порт РС (для светодиодов). Для ускорения работы при отладке в пошаговом режиме вызов подпрограммы задержки в программе следует закомментировать. Задание 2.
Изменить программу 5.3, организуя однократное переключение сигнала из 1 в О иа линии РВО перед выводом первого байта и, таким образом, сохраняя постоянно уровень сигнала 0 для всех последующих передач. Проверить работу интерфейса на модели путем симуляции, Задание 3. Изменить обе программы, задав СРО1. = 1. Проверить работу интерфейса на модели путем симуляции.
Обратить внимание на изменение полярности сигналов на линии РВ7 (ЯСК). Задание 4. Изменить обе программы, задав ПОЙ0 = 1. Проверить работу интерфейса на модели. Обратить внимание на изменение порядка вывода битов данных на линию МОЯ, т. е. начиная с младшего разряда.
Задание 5. Экспериментальная проверка передачи и приема по интерфейсу ЯР1 в ЯТК500. Запрограммируем микроконтроллеры МК! и МК2, используя две платы ЯТК500. Отключив питание, выполним необходимые соединения между портами микроконтроллеров: РВОмк! с РВ4мкз, пару (РВ5, РВ7)мк! с парой (РВ5, РВ7)мкз, обеспечивающие передачу данных в одном направлении — из МК1 в МК2. 162 5. Обмен данными по последовательному интерфейсу При необходимости платы 8ТК500 после программирования можно отсоединить от кабелей К8-232. Соединим между собой выводы ОХП обеих плат. На плате 8ТК500-2 соединим шлейфом порт РС вЂ” ЬЕП, РП5 — 8%5. Включив питание, кнопкой КЕЗЕТ запустим программу микроконтроллера МК2 для приема данных, переведя его в режим ожидания установки фдага приемника 8Р(Р.
Затем, запустив кнопкой КЕВЕТ про~ рамму микроконтроллера МК1, выполняем передачу. По окончании приема (светодиоды включены) проверяем работу интерфейса. Нажимая кнопку 8%5 на плате 8ТК500 второго МК, наблюдаем на индикаторах принятые байты данных. Повторим передачу несколько раз, перезапуская программы микроконтроллеров (сначала МК2, затем МК1) и просматривая принимаемые данные. Задания для самостоятельного программирования 1.
Модифицировать программы 5.3, 5.4, заменив программную проверку флага готовности 8Р1Р обработкой запросов прерываний 8Р! 8ТС. После начала передачи перевести микроконтроллер МК! в режим ожидания, прерывая его по запросам прерываний. Микроконтроллер МК2 после выполнения инициализации ввести в режим ожидания.
2. Написать программы для микроконтроллеров АТх8515 для обмена данными по интерфейсу 8Р! в полудуплексном режиме. Микроконтроллер МК1, работающий в режиме шая1ег, после передачи данных переводится в режим з1аие по сигналу, поступающему на вход /88 от ведомого микроконтроллера МК2, для приема ответного сообщения. После приема данных вывести полученные данные в порт РС для индикации. Построить схемы алгоритмов программ для каждого из микроконтроллеров, связанных между собой каналом 8Р1. Провести отладку программ сначала в АЧК 8тш)1о 4, а затем проверить нх работу в 8ТК500.
3. Написать программы для микроконтроллеров АТх8515 для обмена данными по интерфейсу 8Р! в дуплексном режиме. Одновременно с передачей данных из микроконтроллера МК1 осуществить прием данных от ведомого микроконтроллера МК2. Принимаемые данные сохранить во внутренней памяти микроконтроллеров. После приема данных перевести микроконтроллеры в режим просмотра принятых данных при нажатии кнопки ЯЪ'5.
Отладить программы с помощью системы виртуального моделирования 1Я8 6 РгоГева1опа1. 5.3. Обмен данными по интерфейсу 12С(ТИ7) 163 5.3. ОБМЕН ДАННЫМИ НО ИНТЕРФЕЙСУ 12С (ТЪУ1) Цель работы — изучение приема и передачи информации по последовательному каналу 12С (1пгейгагеп Сйсий) и программирование ввода/вывода. Двухпроводный последовательный интерфейс 12С и подобные ему (Т по-яйге 8еПа1 1п1сгГасе, ТЖ1) обеспечивают взаимодействие МК с множеством микросхем (знергонезависимой памятью, контроллерами параллельных портов, ЬСП-дисплеями, микроконтроллерами и различными специализированными устройствами).
ЯЭА ЗС1. Рнс. 5.11. Схема соединения устройств по интерфейсу 12С Данный интерфейс позволяет объединить до !28 устройств по схеме, приведенной на рис. 5.11. Интерфейс представляет собой две линии: одна (8ПА) исполь-, зуется для передачи данных, другая (8СЬ) — для тактовых сигналов, Через резисторы К1, К2 обе линии подключены к источнику питания ЧСС. Выходы устройств выполнены по схеме с открыл ым коллектором (стоком), что позволяет реализовать функцию «монтажное И» для выходных сигналов. Низкий уровень сигнала логического 0 на выходе любого из устройств устанавливает низкий уровень на всей линии. Высокий уровень на линии устанавливается, когда выводы всех устройств находятся в третьем (высокоимпедансном) состоянии.
Устройство, подключенное к шине, может иметь статус ведущего (шаыег) или ведомого (з!аде). Статус микроконтроллера устанавливается программно. Протоколом работы шины предусмотрены: ° посылка ведущим устройством стартового бита начала обмена; ° передача последовательности из семи разрядов адреса ведомого устройства; ° транзакция чтения или записи 8-битовых данных; ° получение ведущим устройством битов подтверждения передачи адреса и данных; 164 5. Обмен данными по последовательному интерфейсу ° формирование бита подтверждения после приема данных; ° посылка ведущим устройством столового бита. Шина 12С (Т%1) является последовательной: все данные и адреса передаются по линии ВРА поразрядно.
Каждый передаваемый бит сопровождается тактовым сигналом на линии ВСЕ. В течение всего времени действия сигнала ВСЕ (ВСЕ = 1) состояние линии 8РА должно оставаться неизменным. Изменение данных на линии ВРА происходит при отсутствии тактового сигнала на линии 8СЬ (ВСЕ = О). Исключение составляют стартовый и столовый 5.3. Обмен данными по интерфейсу!2С/7тг7/ 165 распознавании ведомым устройством своего адреса оно возвращает на линию ЯЗА сигнал подтверждения АСК низкого уровня во время 9-го тактового сигнала БСЕ.
Если по каким-либо причинам ведомое устройство не способно обслужить запрос ведущего, оно удерживает на линии ВРА сигнал высокого уровня. Нулевой адрес используется для общего вызова всех устройств. Управляющий бит в этом случае устанавливается в О, чтобы обеспечить передачу одного и того же сообщения всем устройствам.
После передачи адреса начинается передача данных. Кадр байта данных (рис. 5.13, б) содержит восемь битов данных и один бит Б Аб А5 А4 АЗ А2 А1 АО К/% АСК зава зьор Змп Бьвп повторно 5~ар Рис. 5.12. Временные диаграммы сигналов интерфейса 12С биты, определяющие начало и конец обмена. Стартовый бит формируется путем изменения уровня сигнала на линии БРА с 1 на О при ВСЕ = 1, столовый бит — при изменении сигнала ВРА с О на 1 также при ВСЕ = 1. Диаграмма изменения состояний линий интерфейса приведена на рис.
5.12. Кроме названных особых случаев на диаграмме представлен бит повторного старта, который можно сформировать сразу после передачи байта данных. Это позволяет ведущему устройству организовать передачу нового байта данных сразу без потери контроля над шиной. Протокол обмена по шине предполагает передачу двух типов кадров (пакетов): с адресом и данными (рис. 5.13). Кадр 7-разрядного адреса содержит: 8 — стартовый бит; А — 7-разрядный адрес ведомого устройства, передаваемый ведущим, начиная со старшего разряда; К/% — управляющий бит, определяющий тип транзакции на шине (К/% = Π— запись, й/% = 1 — чтение); АСК вЂ” бит подтверждения.
Адрес, передаваемый ведущим устройством после захвата шины, поступает ко всем устройствам, подключенным к ней. Каждое из устройств сравнивает поступающий адрес с собственным. При Р7 116 115 04 113 122 тз! 120 АСК б Рис. 5.13. Формат кадра адреса (а) и кадра данных (б) подтверждения, формируемый приемником. Данные, так же как и адрес, передаются последовательно бит за битом, начиная со старшего разряда. После приема каждого байта данных приемник вырабатывает сигнал подтверждения АСК путем выдачи на линию ВРА сигнала низкого уровня.
Высокий уровень сигнала свидетельствует об ошибке или невозможности продолжить прием. Не получив подтверждения от приемника, ведущий может прекратить передачу данных, сформировав сигналы состояния Яор. После завершения передачи байта данных работа может быть продолжена либо для передачи следующего байта в том жс направлении без изменения ведомого, либо выбором нового ведомого и(или) сменой направления обмена.