- •Глава 1. Архитектура микроконтроллерa Atmega 128
- •Организация памяти
- •Память программ
- •1.1.2. Память данных
- •1.2.Счетчик команд и выполнение программы
- •1.2.1.Счетчик команд
- •1.2.2.Функционирование конвейера
- •1.2.3.Стек
- •Глава 2
- •2.1Тактовый генератор
- •2.3Режимы пониженного энергопотребления
- •Idle (ждущий режим)
- •2.4. Сброс
- •Глава3. Прерывания
- •Глава4. Порты ввода/вывода
- •Глава5. Таймеры
- •Глава 6. Аналоговый компаратор
- •6.1. Функционирование компаратора
- •Глава7. Аналого-цифровой
- •7.1 Общие сведения
- •7.2. Функционирование модуля ацп
- •Глава 8. Универсальный асинхронный
- •8.1 Общие сведения
- •8.2. Использование модулей usart
- •Глава 9. Последовательный
- •9.1 Функционирование модуля spi
- •9.2 Режимы передачи данных
- •Глава 10. Последовательный двухпроводный интерфейс
- •10.1 Общие сведения
- •10.2. Принципы обмена данными по шине twi
- •10.3. Модуль twi
- •10.4. Взаимодействие прикладной программы
- •10.5. Режимы работы модуля twi
10.3. Модуль twi
Структурная схема модуля TWI приведена на Рис. 10.9. Как видно из рисунка, модуль включает в себя несколько блоков, каждый из которых выполняет определенные функции.
Взаимодействие программы с модулем TWI осуществляется посредством пяти регистров ввода/вывода. Названия и назначение этих регистров, а также их положение в адресном прост ранстве ввода/вывода приведено в Табл.10.2
Рис.10.9. Структурная схема модуля TWI
Таблица10.2. Регистры ввода/вывода модуля TWI
Ре_ гистр |
|
Назначение |
TWBR |
($70) |
Регистр скорости передачи |
TWSR |
($71) |
Регистр состояния |
TWAR |
($72) |
Регистр адреса |
TWDR |
($73) |
Регистр данных |
TWCR |
($74) |
Регистр управления |
Рассмотрим подробнее составные части модуля TWI.
Выводы SCL и SDA
Используются для подключения модуля к одноименным линиям шины TWI. В соответствии со спецификацией интерфейса TWI выходные каскады, подключенные к выводам, содержат ограничители скорости нарастания сигнала, а входные каскады содержат фильтр, подавляющий паразитные импульсы длительностью менее 50 нс.
Оба вывода являются линиями портов ввода/вывода микроконтроллера SDA-линия данных, вывод PD1, SCL- линия тактового сигнала, вывод PD0.
Контроллер скорости передачи (Bit Rate Generator)
Этот блок задает период следования импульсов на линии SCL при работе микроконтроллера в режиме ведущего. Вместе с регистром TWBR используются два младших разряда (TWPS1:TWPS0) регистра TWSR. Для этих моделей частота формируемого сигнала SCL определяется выражением fSCL = fCLK/(16 + 2TWBR · 4TWPS).
В приведенных формулах fCLK — тактовая частота процессора,TWBR — значение, записанное в регистре TWBR, TWPS — значение разрядов TWPS1:TWPS0 регистра TWSR. И регистр TWBR, и разряды TWPS1:TWPS0 регистра TWSR доступны как для чтения, так и для записи в любой момент времени. При работе в режиме ведомого содержимое указанных разрядов безразлично, однако тактовая частота микроконтроллера в этом случае должна быть, как минимум, в 16 раз выше частоты сигнала SCL.
Любое устройство, подключенное к шине TWI, может увеличивать длительность паузы между тактовыми импульсами, снижая, таким образом, скорость передачи данных по шине.
Блок шинного интерфейса (Bus Interface Unit)
В состав этого блока входят два узла:
• контроллер состояний СТАРТ/СТОП формирует и обнаруживает состояния СТАРТ, ПОВСТАРТ и СТОП. Мониторинг состояния шины ведется даже при нахождении микроконтроллера в «спящем» режиме. Благодаря этому обеспечивается при необходимости выход микроконтроллера из «спящего» режима при адресации его каким -либо ведущим;
• контроллер арбитража определяет наличие конфликтов на шине при работе микроконтрол лера в режиме ведущего. В случае потери устройством приоритета контроллер информирует об этом блок управления, который производит необходимые действия и формирует соответствющие коды состояния.
Кроме того, в состав блока входит сдвиговый регистр адреса/данных TWDR, который содержит данные передаваемого или принимаемого пакета. Одновременно с выдвиганием содержимого регистра на шину данные с нее вдвигаются в этот регистр. Таким образом, почти всегда, за исключением момента выхода микроконтроллера из «спящего» режима, в регистре TWDR содержится последний байт, имевшийся на шине. При включении питания все разряды этого регистра устанавливаются в «1». При этом инициализация регистра пользователем может быть осуществлена только после генерации первого прерывания.
Помимо регистра TWDR в составе блока имеется специальный регистр, один из разрядов которого содержит значение переданного или принятого бита подтверждения. При приеме состояние этого бита задается одним из разрядов регистра управления TWCR, а при передаче состояние полученного бита подтверждения может быть определено по коду, находящемуся в регистре состояния TWSR.
Блок контроля адреса (Address Match Unit)
Блок контроля адреса проверяет принятый адрес на соответствие значению, находящемуся в старших семи разрядах регистра адреса TWAR. Также он проверяет наличие общих вызовов, если разрешено их распознавание.
При обнаружении корректного адреса он информирует об этом блок управления, который форми рует или не формирует подтверждение получения адресного пакета. Контроль адресных пакетов осуществляется блоком даже при нахождении микроконт- роллера в «спящем» режиме, что позво ляет перевести микроконтроллер в рабочий режим в случае адресации его ведущим устройством.
Формат регистра TWAR показан на Рис.10.10, а описание его разрядов приведено в Табл. 10.3
Рис.10.10. Формат регистра TWAR
Таблица 10.3. Разряды регистра адреса TWAR
Блок управления (Control Unit)
Этот блок осуществляет управление всем модулем TWI в соответствии с установками регистра управления TWCR и информацией, поступающей к нему от остальных блоков модуля. При наступлении определенных событий, указанных ниже, блок управления формирует в регистре состояния TWSR код статуса, соответствующий событию и устанавливает флаг запроса на прерывание TWINT регистра TWCR. До момента сброса этого флага на линии SCL удерживается НИЗКИЙ уровень, приостанавливая тем самым передачу данных по шине.
Формирование запроса на прерывание осуществляется при возникновении следующих событий:
• окончание формирования состояния СТАРТ/ПОВСТАРТ;
• окончание передачи адресного пакета (SLA+R/W);
• окончание передачи байта адреса;
• потеря устройством приоритета;
• адресация устройства или наличие общего вызова;
• окончание приема байта данных;
• возникновение ошибок на шине, обусловленных недопустимыми условиями формирования состояний СТАРТ/СТОП.
Формат регистра TWCR показан на Рис.10.11, а описание его разрядов приведено в Табл. 10.4 Формат регистра TWSR показан на Рис.10.12, а описание его разрядов приведено в Табл. 10.5
Рис.10.11. Формат регистра TWCR
Таблица 10.4. Разряды регистра управления TWCR
Рис.10.12 . Формат регистра TWSR
Таблица10.5. Разряды регистра состояния TWSR
