Поиск по сайту: |
|
По базе: |
|
Главная страница > Обзоры по типам > Микроконтроллеры > AVR |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
19.10. Описание регистров подчиненного модуля TWI19.10.1. CTRLA - регистр управления А подчиненного модуля TWI
С помощью бит INTLVL можно задать уровень прерываний подчиненного модуля TWI.
Установка бита DIEN разрешает прерывание по данным при установке флага DIF в регистре STATUS. Чтобы генерация прерываний стала возможной, биты INTLVL должны иметь отличное от нуля значение.
Установка бита APIEN разрешает генерацию прерывания при установке флага прерывания по адресу/условию STOP (APIF) в регистре STATUS. Чтобы генерация прерываний стала возможной, биты INTLVL должны иметь отличное от нуля значение.
Установка бита ENABLE активизирует работу подчиненного модуля TWI.
Установка бита PIEN разрешает генерацию прерывания при установке флага APIF в регистре STATUS, вызванное обнаружением условия STOP.
После установки бита PMEN логика сравнения адресов подчиненного устройства будет реагировать на все принятые адреса. Если же данный бит равен нулю, то логика сравнения адресов будет считать собственным адресом значение в регистре ADDR.
Установка бита SMEN активизирует работу в режиме SMART. В этом режиме, сразу после считывания регистра DATA отправляется бит подтверждения со значением, заданным битом ACKACT в регистре CTRLB. 19.10.2. CTRLB - регистр управления В починенным модулем TWI
Данные биты не используются и зарезервированы для использования в будущем. В целях совместимости с более новыми МК, выполняя запись в этот регистр, всегда записывайте нули в резервные биты.
Описание настроек бита ACKACT представлено в таблице 19.6. Таблица 19.3. Описание бита ACKACT
Запись в биты CMD инициирует выполнение подчиненным устройством операции в соответствии с таблицей 19.7. Биты CMD являются стробами и всегда считываются с нулевым значением. Выполняемая операция зависит от состояния флагов прерываний DIF и APIF подчиненного модуля. Подтверждение, заданное битом ACKACT, передается только при приеме от ведущего устройства байт данных или байта адреса. Таблица 19.7. Команды подчиненного модуля TWI
Запись команды в биты CMD приводит к сбросу флагов прерываний подчиненного модуля и флага CLKHOLD, а также освобождению линии SCL. Бит ACKACT и биты CMD можно записывать одновременно. В таком случае, перед запуском команды, будет выполнено обновление заданного подтверждения. 19.10.3. STATUS- регистр статуса подчиненного модуля TWI
Флаг прерывания по данным (DIF) становится равным единице в случае успешного приема байта данных (под успешным понимается прием без ошибок и коллизий). Запись единицы в данный бит приводит к сбросу флага DIF. Когда флаг равен единице, линия SCL удерживается в низком состоянии, что приводит к задержке периода синхронизации шины TWI. Сброс флагов прерываний приводит к освобождению линии SCL. Данный флаг автоматически сбрасывается после записи действительной команды в биты CMD регистра CTRLB.
Флаг прерывания по адресу/условию STOP (APIF) становится равным единице, когда подчиненное устройство обнаруживает прием действительного адреса или когда на шине обнаруживается коллизия. Данный флаг также устанавливается при обнаружении на шине условия STOP, но только при условии равенства единице бита PIEN в регистре CTRLA. Запись единицы в бит APIF приводит к сбросу флага прерывания по адресу/условию STOP. Когда данный флаг равен единице, линия SCL удерживается в низком состоянии, что задерживает период синхронизации шины TWI. Сброс флагов прерываний приводит к освобождению линии SCL. Данный флаг автоматически сбрасывается при идентичных флагу DIF условиях.
Равенство единице флага CLKHOLD сигнализирует о том, что подчиненный модуль удерживает линию SCL в низком состоянии. Данный флаг является статусным и, поэтому, доступен только для чтения. Он равен единице в случае установки любого из флагов DIF или APIF. Сброс всех флагов прерываний приводит к освобождению линии SCL, а, следовательно, и к обнулению рассматриваемого флага.
Флаг принятого подтверждения (RXACK) хранит значение последнего принятого бита подтверждения от ведущего устройства. Данный флаг доступен только для чтения. Равенство флага нулю указывает на то, что последним принятым от ведущего устройства подтверждением было ACK. В свою очередь, равенство флага единице, указывает, что бит подтверждения был принят со значением NACK.
Флаг обнаружения коллизии подчиненным устройством (COLL) становится равным единице, когда подчиненное устройство оказывается неспособным передать старший бит данных или бит NACK. В случае обнаружения коллизии, подчиненное устройство начнет свою нормальную работу, отключит выход данных и подтверждения, и заблокирует вывод низких уровней на линию SDA. Запись единицы в данный бит приводит к сбросу флага COLL. Флаг автоматически сбрасывается после обнаружения условия START или REPEATED START.
Флаг ошибки починенного модуля (BUSERR) становится равным единице в случае обнаружения во время передачи по шине недопустимого условия. К недопустимым условиям относятся условие REPEATED START или STOP, а также некратное девяти количество бит с момента последнего условия START. Запись единицы в данный бит приводит к сбросу флага BUSERR. Для обнаружения ошибок на шине должна быть активной логика контроля состояний шины, что в свою очередь происходит после разрешения работы ведущего модуля TWI.
Флаг направления чтения/записи сигнализирует о направлении передачи данных после последнего приема от ведущего устройства пакета адреса. Равенство данного бита единицы указывает на выполнение в данный момент операции "чтение ведущим устройством". Если же флаг равен нулю, то это указывает на выполнение операции "запись ведущим устройством".
Флага подчиненного адреса или условия STOP указывает, что именно, обнаружение действительного адреса или условия STOP, вызвало последнюю установку флага APIF в регистре STATUS. Таблица 19.8. Определение причины установки флага APIF
19.10.4. ADDR - регистр адреса подчиненного модуля TWI
Регистр данных (DATA) используется для передачи и приема данных. Передача и приема данных выполняется путем логических сдвигов регистра DATA через линию SDA. Из этого следует, что доступ к регистру DATA во время передачи байта невозможен (блокируется на аппаратном уровне). Доступ к регистру данных возможен, только если линия SCL удерживается подчиненным устройством в низком состоянии, т.е. когда бит CLKHOLD равен единице. Когда ведущее устройство считывает данные из подчиненного, подлежащие отправке данные должны быть записаны в регистр DATA. Передача байта начинается, когда ведущее устройство передаст бит подтверждения, а затем запустит синхронизацию для передачи подчиненным устройством байта данных. Флаги DIF и CLKHOLD становятся равными единице. Когда ведущее устройство записывает данные в подчиненное устройство и, в результате такой операции, в регистр DATA принят один байт данных, флаги DIF и CLKHOLD станут равными единице. Если активизирован режим SMART, то чтение из регистра DATA инициирует выполнение заданной битом ACKACT операции. Доступ к регистру DATA приводит к сбросу флагов прерываний подчиненного модуля и флага CLKHOLD. 19.10.6. ADDRMASK - регистр маски адреса подчиненного модуля TWI
Данные биты регистра ADDRMASK могут использоваться в качестве второго регистра сравнения адреса или в качестве регистра маски адреса, что зависит от значения бита ADDREN. Если ADDREN равен нулю, ADDRMASK используется в роли 7-битного регистра маски адреса подчиненного устройства. В таком случае, каждый бит ADDRMASK будет маскировать (исключать из процедуры сравнения) соответствующие биты адреса регистра ADDR. Если бит маски равен единице, то результат сравнения соответствующих бит принятого адреса и регистра ADDR игнорируется. Проще говоря, маскированные биты всегда считаются совпавшими. Если ADDREN равен единице, в сравнении принимаемого адреса, помимо регистра ADDR, будет участвовать заданное битами ADDRMASK значение. В этом режиме принимаемый адрес сравнивается с двумя значениями: одно в регистре ADDR и еще одно, заданное битами ADDRMASK.
По умолчанию, данный бит равен нулю и биты ADDRMASK выступают в роли маски адреса для регистра ADDR. Если же данный бит равен единице, биты ADDRMASK, в дополнение к регистру ADDR, будут участвовать в сравнении с принятым адресом.
Главная - Микросхемы - DOC - ЖКИ - Источники питания - Электромеханика - Интерфейсы - Программы - Применения - Статьи |
|
Впервые? | Реклама на сайте | О проекте | Карта портала тел. редакции: +7 (995) 900 6254. e-mail:info@eust.ru ©1998-2023 Рынок Микроэлектроники |
|