|
|
8(495)909-90-01
8(964)644-46-00
pro@sio.su
|
|
Раздел: Документация0 ... 150 151 152 153 154 155 156 ... 195 при использовании внутреннего тактового сигнала (USICS1 = 0) защелка открыта постоянно. Применение триггера-защелки гарантирует, что считывание данных с входа и выдача их на выход будут осуществляться по противоположным фронтам тактового сигнала. Формат регистра управления USICR показан на Рис. 12.2, а описание его битов приведено в Табл. 12.1. Начальное значение USISIE | USIOIE | USIWM1 | USIWM0 | USICS1 | USICS0 | USICLK | USITC | R/W 0 | R/W 0 | R/W 0 | R/W 0 | R/W 0 | R/W 0 | W 0 | W 0 |
ATmega 165х ATmega325x/3250x ATmega645x/6450x Рис. 12.2. Формат регистра USICR Таблица 12.1. Биты регистра USICR Бит | Название | Описание | 7 | USISIE | Разрешение прерывания при обнаружении состояния СТАРТ. Если в этом бите записана лог. 1 и флаг I регистра SREG также установлен в 1, то прерывание от детектора состояния СТАРТ разрешено | 6 | USIOIE | Разрешение прерывания при переполнении счетчика. Если в этом бите записана лог. 1 и флаг I регистра SREG также установлен в 1, то прерывание от счетчика разрешено | 5 | USIWM1 | Режим работы модуля USI. Эти биты определяют функционирование выходных контактов модуля согласно Табл. 12.2. Эти биты не влияют на входы тактового сигнала и данных, поэтому прием данных, а также тактирование сдвигового регистра и счетчика внешним тактовым сигналом могут осуществляться, даже если выходы модуля отключены от контактов ввода/вывода микроконтроллера | 4 | USIWMO | 3 | USICS1 | Выбор тактового сигнала. Эти биты определяют источник тактового сигнала для сдвигового регистра и счетчика модуля согласно Табл. 12.3 | 2 | USICSO | 1 | USICLK | Строб тактового сигнала. Назначение этого бита зависит от установок битов Ш1С51:0(см.Табл. 12.3). Если выбран режим программного формирования тактового сигнала (USICS1:0 = 00), то установка данного бита в 1 вызывает сдвиг содержимого сдвигового регистра и инкрементирование счетчика. Сразу же после установки строба (в том же такте) изменяется состояние выхо+да модуля. В сдвиговый регистр вдвигается значение, считанное в предыдущем такте. При чтении бита возвращается 0. Если используется внешний тактовый сигнал (USICS1 = 1), то бит USICLK используется в качестве селектора — при установке его в 1 тактирование счетчика осуществляется при помощи бита USITC | 0 | USITC | Переключение состояния вывода тактового сигнала. При записи в этот бит лог. 1 состояние линии USCK/SCL меняется на противоположное. Если формируемый сигнал необходимо вывести наружу, бит DDB4 регистра DDRE должен быть установлен в 1. При чтении бита USITC возвращается 0. Если используется внешний тактовый сигнал (USICS1 = 1) и бит USICLK установлен в 1, то запись лог. 1 в бит USITC вызывает инкрементирование счетчика. Благодаря этому обеспечивается раннее обнаружение завершения обмена при работе модуля в качестве ведущего |
Таблица 12.2. Задание режима работы модуля USI | о | | | | Описание | 0 | 0 | Выходы модуля и детектор состояния СТАРТ отключены. Выводы РЕ4...РЕ6 работают как линии ввода/вывода общего назначения | 0 | 1 | Трехпроводный режим. Используются выводы DO, DI и USCK. Значение на выходе данных (DO) замещает значение соответствующего бита регистра порта. При этом направление передачи данных все равно определяется регистром DDRE. Если линия порта настроена на вход, управление подтяжкой осуществляется соответствующим битом регистра PORTE. Вход данных (DI) и линия тактового сигнала (USCK) не влияют на нормальное функционирование порта микроконтроллера. При работе в качестве ведущего генерация тактовых импульсов осуществляется переключением состояния бита регистра PORTE (для этого можно использовать бит USITC регистра USICR). При этом вывод микроконтроллера должен быть выходом (DDB4 = 1) | 1 | 0 | Двухпроводный режим. Используются выводы SDA и SCL. Оба вывода являются двунаправленными и подключены к выходным драйверам с открытым стоком. Эти драйверы включаются установкой в 1 соответственно битов DDB5 и DDB4 регистра DDRE. После включения драйвер линии SDA формирует на ней НИЗКИЙ уровень, если на выходе сдвигового регистра или в бите PORTE5 присутствует 0. В противном случае линия высвобождается. Аналогично, драйвер линии SCL формирует на ней НИЗКИЙ уровень либо по сигналу от детектора состояния СТАРТ (для высвобождения линии следует сбросить флаг USISIF регистра USISR), либо если бит PORTE4 сброшен в 0. Таким образом, внутренние подтягивающие резисторы на линиях РЕ4 и РЕ5 в этом режиме отключены. Состояние контактов, соответствующих линиям SDA и SCL, может быть считано обычным образом | 1 | 1 | Двухпроводный режим. Используются выводы SDA и SCL. Этот режим аналогичен предыдущему, за исключением того, что НИЗКИЙ уровень на линию SCL также выдается при переполнении счетчика. В этом состоянии линия удерживается до сброса флага переполнения USIOIF регистра USISR |
Таблица 12.3. Выбор тактовых сигналов модуля USI USICSl | USICSO | USICLK | Источник тактовых импульсов сдвигового регистра | Источник тактовых импульсов 4-битного счетчика | 0 | 0 | 0 | Тактовый сигнал отсутствует | Тактовый сигнал отсутствует | 0 | 0 | 1 | Программный строб (USICLK) | Программный строб (USICLK) | 0 | 1 | X | Блок сравнения таймера/счетчика ТО | Блок сравнения таймера/счетчика ТО | 1 | 0 | 0 | Внешний сигнал, нарастающий фронт | Внешний сигнал, оба фронта | 1 | 1 | 0 | Внешний сигнал, спадающий фронт | Внешний сигнал, оба фронта | 1 | 0 | 1 | Внешний сигнал, нарастающий фронт | Программный строб (USITC) | 1 | 1 | 1 | Внешний сигнал, спадающий фронт | Программный строб (USITC) |
Формат регистра состояния USISR показан на Рис. 12.3, а описание его битов приведено в Табл. 12.4. | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | | USISIF | USIOIF | USIPF | USIDC | USICNT3 | USICNT2 | USICNT1 | USICNT0 | Чтение (Р.)/Запись (W) Начальное значение | R/W 0 | R/W 0 | R/W 0 | R/W 0 | R/W 0 | R/W 0 | R/W 0 | R/W 0 |
ATmega 165х Рис. 12.3. Формат регистра USISR Таблица 12.4. Биты регистра USISR Бит | Название | Описание | 7 | USISIF | Флаг прерывания по обнаружению состояния СТАРТ. В двухпроводном режиме этот флаг устанавливается в 1 при обнаружении на шине состояния СТАРТ. В остальных режимах флаг устанавливается при инкрементирова-нии 4-битного счетчика. Если бит USISIE регистра USICR и флаг I регистра SREG установлены, то при установке данного флага генерируется прерывание (это прерывание выводит микроконтроллер из любого «спящего» режима). Флаг сбрасывается программно записью в него лог. 1. Одновременно со сбросом флага высвобождается линия SCL | 6 | USIOIF | Флаг прерывания по переполнению счетчика. Этот флаг устанавливается в 1 при переполнении 4-битного счетчика (при переходе от 15 к 0). Если бит USIOIE регистра USICR и флаг I регистра SREG установлены, то при установке данного флага генерируется прерывание, которое может использоваться для вывода микроконтроллера из «спящего» режима Idle. Флаг сбрасывается программно записью в него лог. 1. Одновременно со сбросом флага высвобождается линия SCL | 5 | USIPF | Флаг обнаружения состояния СТОП. В двухпроводном режиме этот флаг устанавливается в 1 при обнаружении на шине состояния СТОП. Флаг сбрасывается программно записью в него лог. 1 | 4 | USIDC | Флаг коллизии при выводе данных. Этот флаг устанавливается в 1, если значение 7-го бита сдвигового регистра отличается от состояния вывода микроконтроллера (действительно только в двухпроводном режиме). Данный флаг используется для реализации арбитража | 3 | USICNT3 | 4-битный счетчик. Эти биты отображают текущее значение счетчика. Это значение можно считывать и изменять в любой момент времени. Инкрементирование счетчика производится по каждому импульсу, формируемому либо аппаратно (детектором фронтов внешнего сигнала или выходом блока совпадения таймера/счетчика ТО), либо программно (с помощью битов USICLK или USITC регистра USISR). Источник тактового сигнала определяется состоянием битов USICShO и USICLK регистра управления USICR (см. Табл. 12.3) | 2 | USICNT2 | 1 | USICNT1 | 0 | USICNTO | 0 ... 150 151 152 153 154 155 156 ... 195
|
|