- •Введение.
- •1.1. Основные характеристики.
- •1.2. Структурная схема микроконтроллера.
- •1.3. Блоки памяти.
- •1.4. Регистры состояния и управления.
- •1.5. Порты ввода-вывода.
- •2.0.Функциональные модули микроконтроллера pic16f873.
- •2.1. Таймеры.
- •2.1.2. Модуль таймера tmr1.
- •2.1.3. Модуль таймера tmr2.
- •2.2. Модуль сср.
- •2.2.2. Режим сравнения.
- •2.2.3. Режим широтно-импульсного преобразователя (шим).
- •2.3. Модуль ацп.
- •2.3.1.Работа модуля осуществляется в следующей последовательности:
- •2.3.2.Временные требования к работе модуля ацп.
- •2.3.4. Последовательность преобразования аналогового сигнала.
- •2.3.5. Выравнивание результата преобразования.
- •2.3.6. Работа модуля ацп в sleep режиме.
- •2.3.7. Пример программирования модуля ацп.
- •2.4.Универсальный синхронно – асинхронный приемопередатчик (usart).
- •2.4.1.Режим асинхронного полного дуплекса.
- •2.4.1.1. Асинхронный передатчик usart.
- •2.4.1.2. Асинхронный приемник модуля usart.
- •2.5.Модуль ведущего синхронного последовательного порта (mssp).
- •2.5.1. Режим ведомого i2c.
- •2.5.1.1.Прием данных.
- •2.5.1.2. Передача данных.
- •2.5.1.3.Поддержка общего вызова.
- •2.5.1.4.Работа в sleep режиме.
- •2.5.2. Режим ведущего i2c.
- •2.5.3. Подключение абонентов к шине i2c.
- •2.6. Прерывания.
- •2.7. Сторожевой таймер.
- •2.8. Система команд микроконтроллера.
- •Incf Прибавить 1 к содержимому регистра f.
- •Incfsz Прибавить 1 к регистру f, пропустить, если 0.
- •Iorlw Побитное «или» регистра w и константы k.
- •Iorwf Побитное “или» регистров w, f.
- •Xorlw Побитное «Исключающее или» константы и регистра w.
- •Xorwf Побитное «исключающее или» регистров w,f.
2.5.1. Режим ведомого i2c.
Структурная схема модуля MSSP в этом режиме показана на рис.21 Для своей работы модуль использует два вывода микроконтроллера: SCL и SDA (соответственно RC3 и RC4).
Работа модуля в данном режиме заключается в следующем. Рабочие сигналы в модуль поступают через два вывода микроконтроллера: SDA (RC4) – биты информации, SCL (RC3) – тактовые сигналы, поэтому оба вывода должны быть предварительно настроены на ввод. После включения модуля MSSP (установка бита SSPEN в регистре SSPCON) ожидается появление бита START, после чего принимается 8 бит, которые записываются в сдвиговый регистр SSPSR. Запись происходит по переднему фронту синхронизирующего импульса на входе SCL. По заднему фронту 8-го импульса SCL содержимое регистра SSPSR сравнивается с содержимым регистра SSPADD, где хранится адрес конкретного устройства – абонента сети. Если значения регистров совпадают (адрес опознан), и биты BF, SSPOV равны нулю (нет переполнения регистра SSPBUF), то производятся следующие действия:
- значение регистра SSPSR переписывается в регистр SSPBUF по заднему фронту 8 импульса SCL;
- устанавливается флаг BF (буфер полон) в регистре SSPSTAT;
- генерируется бит –ACK;
- устанавливается флаг SSPIF (PIR1 <3>) по заднему фронту 9-го импульса SCL. После приема и опознания адреса возможны два варианта продолжения работы модуля: прием от ведущего микроконтроллера или передача информации ведущему. Вид работы определяется состоянием бита R/-W (0 бит) в адресном байте.
2.5.1.1.Прием данных.
Если в принятом адресном байте бит R/-W равен нулю, то бит R/-W в регистре SSPSTAT также устанавливается в 0. Все последующие байты будут информационными, поэтому из регистра SSPSR переписываются в регистр SSPBUF, одновременно формируется бит ответа ASK и устанавливается флаг SSPIF (флаг SSPIF устанавливается после приема каждого байта). После установки флага содержимое регистра SSPBUF должно быть прочитано и программно должен быть сброшен флаг SSPIF. Если регистр SSPBUF до прихода очередного байта не был прочитан или не был сброшен флаг, то не будет сформирован бит ответа ASK, что приведет к сбою в работе модуля. При нормальной работе прием информации ведомым микроконтроллером продолжается до приема стоп-бита P (бит P в регистре SSPSTAT также устанавливается в 1). Восстановление работы модуля производится после его выключения и повторного включения (бит SSPEN в регистре SSPCON).
2.5.1.2. Передача данных.
Работа модуля по приему и опознанию адреса аналогична рассмотренному выше. Но если в принятом адресном байте бит R/-W равен 1, то бит R/-W в регистре SSPSTAT также устанавливается в 1. Одновременно бит CKR (4бит регистра CCPCON) устанавливается в 0, что блокирует линию SCL. Передаваемый байт записывается в регистр SSPBUF и устанавливается в 1 бит SKR, что означает освобождение линии SCL. Ведущее устройство контролирует линию SCL и при обнаружении тактовых импульсов начинает прием посылки по заднему фронту сигналов на линии SCL. На 9 такте на линии SCL ведущее устройство формирует сигнал ACK. Если сигнал ACK от ведущего не поступил, то ведомое устройство заканчивает прием установкой в 1 бита P (4бит в регистре SSPSTAT) и переходит режим ожидания сигнала START.