Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
Шаг 6. Осваиваем все возможности микроконтроллера ATtiny231 3 497 Режимы синхронизации интерфейса USI соответствуют аналогичным режимам передачи данных 0 и 1 интерфейса SPI. Обратимся теперь к временной диаграмме (рис. 6.43), отражающей процесс передачи данных по последовательной шине. Этот процесс вклю чает в себя следующие шаги. Шаг 1. Устройство Slave и устройство Master подготавливают систему передачи данных в соответствии с выбранным протоколом (точки А и В). Подготовка производится путем загрузки байта данных, предназначен ного для передачи, в сдвиговый регистр. Причем данные загружает как Master, так и Slave, — каждый в свой сдвиговый регистр. Настройка направления передачи информации (соответствующих выводов канала связи) производится при помощи того же самого регистра (DDR), который определяет направление пере дачи информации в обычном режиме работы порта ввода-вывода. Операции, обозначенные точками А и В, можно выполнять в любом порядке. Главное, чтобы обе они завершились не позже половины такто вого цикла синхросигнала USCK до начала следующего этапа (точка С), где происходит выборка данных. Это необходимо, чтобы гарантировать своевременную подготовку данных. Четырехразрядный счетчик на этом этапе сбрасывается в ноль. Шаг 2. Ведущий микроконтроллер (Master) программным путем выра батывает один импульс тактового сигнала, дважды переключая значение USCK (точки С и D). По переднему фронту сигнала USI (точка С) проис ходит выборка значений на входах DI обоих устройств (Slave и Master). По заднему фронту тактового сигнала (точка D) происходит изменение сиг нала на выходах DO тех же устройств. Четырехразрядный счетчик увели чит свое значение как по переднему, так и по заднему фронту. Шаг 2 повто ряется восемь раз до окончания передачи все восьми битов (байта). Шаг 3. После восьми тактовых импульсов (то есть после 16 фронтов синхроимпульса) произойдет переполнение счетчика, что послужит сиг налом конца передачи (точка Е). Управляющая программа должна обра ботать полученные данные перед тем, как начинать передачу новых. Для обработки данных можно использовать прерывание. Прерывание по переполнению четырехразрядного счетчика способно пробудить микро контроллер из режима сна (только из режима Idle). Пример операции SPI для ведущего устройства Следующий программный пример (см. Листинг 6.17 и 6.18) показывает, как можно использовать модуль SPI в качестве ведущего устройства SPI. Данный программный код оптимизирован по размеру и содержит только восемь команд (плюс команда ret). Предполагается, что ранее
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==