www.chms.ru - вывоз мусора в Балашихе 

Динамо-машины  Однокристальные микроконтроллеры 

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [ 50 ] 51 52 53 54 55 56 57 58 59 60 61 62 63

так как в противном случае (при сбросе ENS1) состояние активизации шины будет потеряно. Для этих целей задействуется флаг АА;

бит STA - флаг START. Бит STA устанавливается в laquo;1 raquo; в случае необходимости перехода порта в master-режим. Аппаратные средства порта проверяют состояние линий SDA и SCL, генерируют условие Start в случае свободной шины. Если шипа не свободна, порт ждет появления на шине условия Stop и генерирует условие Start. Если бит STA будет установлен повторно после того, как получено или передано несколько байтов, будет сгенерировано повторное условие Start. Бит STA может также устанавливаться в режиме slave-порта. Состояние STA = 0 - сброс бита STA, отсутствие генерации условия Start, повторения условия Start;

бит STO - флаг STOP. Бит STO устанавливается в laquo;1 raquo; в master-режиме, когда но шине ГС необходимо передать условие Stop. Когда условие Stop появилось на шине, бит STO будет очищен. В случае работы в slave-режиме бит STO может быть использован для исправления ошибок. В этом случае условие Stop на шину передано не будет, но аппаратные средства порта 1С станут вести себя так, как будто условие Stop получено, и переключат порт в неадрссуемое slave-состояние. Бит STO автоматически очистится. Когда STO = О, условие Stop не передается;

бит SI устанавливается в случае генерации прерывания от порта ГС. Если SI = 1 и если регистры ES1 и ЕА (interrupt enable registers) - регистры прерываний (не рассмагриваются нами в данной книге) - соответствующим образом сконфигурированы, будет происходить генерация прерываний от порта 1С;

бит АА - флаг подтверждения АСК. Если бит АА = 1, будет сгенерирован сигнал АСК в случае получения собственного slave-адреса, общего адреса запроса (general call address), при получении байта данных в master-режиме, при получении байта данных в slave-режиме. Если АА = О, АСК не будет сгенерирован;

биты CRO, CR1, CR2 биты задания тактовой часготы SCL в master-режиме. Сосгояние битов и значение генерируемой так-



товой частоты приведены в табл. 4.1. В режиме slave-порт 1С автоматически синхронизируется с любой тактовой частотой в пределах 100 кГц.

Таблица 4.1

Тактовая частота i,

6 МГц

12 МГц

16 МГц

6,25

12,5

0,25 lt; 62,5

0,5 lt; 62,5

0,67 lt; 56

Структура регистра статуса приведена на рис. 4.8.

3 2

sco] 0

Рис. 4.8. Регистр S1STA

Регистр статуса доступен только по операции чтения. Три младших бита (2...0) всегда остаются нулевылш, а биты SC4...SC0 содержат код состояния. Особая ситуация, связанная с выдачей кода F8h, будет описана далее.

Порт 1С может обеспечивать четыре основных режима:

Master Transmitter (master-передатчик);

Master Receiver (master-приемник);

Slave Receiver (slave-приемник);

Slave Transmitter (slave-передатчик).

Рассмотрим подробнее эти режимы применительно к описываемому микроконтроллеру.

Master Transmitter. В этом режиме master-устройство передает данные к slave-абоненту. Прежде чем перевести порт микроконтрол-



лера в режим master transmitter, необходимо провести инициализацию в регистре S1C0M согласно рис. 4.9, а также задать комбинацию бит CR0...CR2 в соответствии с предполагаемой скоростью передачи (bit rate). Бит АА может быть либо установлен, либо сброшен. Если бит АА сброшен, порт не сможет при приеме подтвердить собственный slave-адрес или general call address с другого master-устройства, желающего стать laquo;хозяином raquo; шины.

S1C0N

ENS1

Рис. 4.9. Инициализация режима master-transmitter

Итак, как только шина становится свободной, порт 1 С генерирует условие Start, после чего в регистре статуса S1 STA устанавливается код 08h, устанавливается флаг SI. Этот код может быть использован для обработки нрерьшания. По прерыванию может быть загружен регистр S1DAT slave-адресом и битом направления данных R/W - в данном случае W. Бит SI в регистре S1C0N должен быть сброшен, прежде чем будет возобновлена передача. Когда slavc-ад-рес и бит направления были переданы, получен сигнал АСК, флаг S1 снова устанавливается. Регистр статуса в данном случае может содержать варианты кодов: 18h, 20h, 38h - в случае разрешения работы только в качестве master-абонента или 68h, 78h, BOh - в случае разрешения slave-режима (бит АА установлен в laquo;1 raquo;). Действия, которые нужно предпринимать при получении данных кодов, приведены в табл. 4.2.

После выполнения условия laquo;повторный Start raquo; генерируется код lOh, производится загрузка регистра S1DAT slavc-адресом с условием R.

Master Receiver. В этом режиме данные поступают от slave-nepe-датчика к master-приемннку. Инициализация производится точно так же, как и в предыдущем случае. После передачи условия Start программа обработки прерывания должна загрузить регистр S1DAT 7-разрядным slave-адресом и битом R направления данных. После этого могут быть продолжены операции обмена. После передачи



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [ 50 ] 51 52 53 54 55 56 57 58 59 60 61 62 63