- •Введение.
- •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.Модуль ведущего синхронного последовательного порта (mssp).
Модуль MSSP предназначен для связи по последовательному каналу между различными устройствами: элементы памяти, драйверы ЖКИ, другие микроконтроллеры и т.п.
Модуль может работать в двух режимах:
Шинный интерфейс I2C (Inter-Integrater Circuit).
Последовательный периферийный интерфейс (SPI).
Из этих режимов наибольший интерес для создания разветвленных систем управления представляет первый, т. е. решим шинного интерфейса. Рассмотрим его подробнее. Поскольку микроконтроллеры в данном случае представляют собой некоторую сетевую структуру, базирующуюся на протоколе шинного интерфейса I2C, то каждый из абонентов этой структуры может быть либо ведомым, либо ведущим в зависимости от программы работы модуля MSSP. Модуль MSSP в этом режиме настраивается и управляется с помощью трех регистров специального назначения:
- SSPSTAT (адрес 94h) – регистр статуса,
- SSPCON (адрес 14h) – регистр управления 1,
- SSPCON2 (адрес 91h) – регистр управления 2.
Распределение и обозначения разрядов этих регистров приведены в таблицах 25…27
Таблица 25 ( для регистра SSPSTAT)
Номер разряда |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Обозн. разряда |
SMP |
CKE |
D/-A |
P |
S |
R/-W |
UA |
BF |
где:
7 бит: SMP – фаза выборки бита: «1» - управление длительность фронта выключено, «0» - управление длительность фронта включено.
6 бит: CKE: выбор фронта тактового сигнала: «1» - входные уровни соответствуют спецификации SMBus, «0» - входные уровни соответствуют спецификации I2C.
5 бит: D/-A: бит данные/адрес: «1» - последний принятый или переданный байт является информационным, «0» - последний принятый или переданный байт является адресным.
4 бит: P: бит STOP: «1» - бит STOP был обнаружен последним, «0» - бит STOP не является последним.
3 бит: S: бит START: «1» - бит START был обнаружен последним, «0» - бит START не является последним.
2 бит: R/-W: бит чтения/записи:
для ведомого режима: «1» - чтение, «0» - запись. Бит действует только после совпадения адреса и до приема бит START, STOP, ASK.
для режима ведущего: «1» - выполняется передача данных, «0» - передачи данных нет.
1 бит : UA: флаг обновления адреса устройства: «1» - необходимо обновить адрес устройства в регистре SSPADD, «0» - обновление адреса не требуется.
0 бит : BF: бит статуса буфера SSPBUF: для приема – «1» - прием завершен, буфер полон,
«0» - прием не завершен, буфер пуст; для передачи – «1» - выполняется передача, буфер полон, «0» - передача завершена, буфер пуст.
Таблица 26 ( для регистра SSPCON)
Номер разряда |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Обозн. разряда |
WCOL |
SSPOV |
SSPEN |
CRP |
SSPM3 |
SSPM2 |
SSPM1 |
SSPM0 |
где:
7 бит : WCOL: Бит конфликта записи: для ведущего режима: «1» - запись в SSPBUF была выполнена при несоблюдении условий шины I2C, «0» - конфликта не было; для ведомого режима: «1» - была предпринята попытка записи в SSPBUF во время передачи предыдущего байта, «0» - конфликта не было.
6 бит: SSPOV: бит переполнения приемника: «1» - принят новый байт в то время как SSPBUF содержит предыдущие данные, «0» - переполнения нет.
5 бит: SSPEN: бит включения модуля MSSP: «1» - модуль MSSP включен, выводы SCK, SDO, SDI, -SS (RC3, RC5, RC4,RA5 соответственно) подключены к модулю MSSP, «0» - модуль выключен, перечисленные выводы работают как цифровые входы/выходы.
4 бит: CKP: бит выбора полярности тактового сигнала:(только для ведомого режима, для ведущего не используется) «1» - тактовый сигнал не управляется, «0» - тактовый сигнал удерживается в низком логическом уровне (используется для подготовки данных).
3 – 0 биты: SSPM3: SSPM0: режимы работы модуля MSSP:
SSPM3:SSPM0
0110 - ведомый режим, 7-ми разрядная адресация,
0111 - ведомый режим, 10-ми разрядная адресация,
1000 – ведущий режим, тактовый сигнал = Fosc/(4*(SSPADD +1),
1011 - программная поддержка ведущего режима ( ведомый режим выключен),
1110 – программная поддержка ведущего режима, 7-ми разрядная адресация с
разрешением прерываний по приему бит START и STOP,
1111 – программная поддержка ведущего режима, 10-ти разрядная адресация с
разрешением прерываний по приему бит START и STOP.
Таблица 27 ( для регистра SSPCON2).
Номер разряда |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
Обозн. разряда |
GCEN |
ACRSTAT |
ACKDT |
ACKEN |
RCEN |
PEN |
RSEN |
SEN |
где:
7 бит: GCEN: бит разрешения поддержки общего вызова (только для ведомого режима): «1» - разрешить прерывания при приеме в регистр SSPSR адреса общего вызова (0000h),
«0» - поддержка общего вызова выключена.
6 бит: ASCSTAT: бит статуса подтверждения (только для ведущего режима). Подрежим передачи: «1» - подтверждения от ведомого не получено, «0» - подтверждение от ведомого получено.
5 бит: ACKDT: бит подтверждения (только для ведущего режима). Подрежим приема ведущим: «1» есть подтверждение, «0» - нет подтверждения.
4 бит: ACKEN: формирование бита подтверждения (только для ведущего режима). «1» - на выводах SCL, SDA – формируется бит ACKDT, «0» - подтверждение не формируется.
3 бит: RCEN: Разрешение приема данных (только для ведущего режима): «1» - разрешить прием данных с шины I2C, «0» - приемник ведущего выключен.
2 бит: PEN: формирование бита STOP (только для ведущего режима), «1» - на выводах SCL, SDA – формируется бит STOP, «0» - бит STOP не формируется.
1 бит: RSEN: формирование бита повторный START (только для ведущего режима): «1» на выводах SCL, SDA формируется бит повторный START, «0» - бит повторный START не формируется.
0 бит: SEN: формирование бита START (только для ведущего режима): «1» - на выводах SCL, SDA формируется бит START, «0» - бит START не формируется.
Как было сказано выше, в сетевой структуре микроконтроллеров есть два вида: ведомые и ведущие, каждый из которых может принимать и передавать информацию. Рассмотрим каждый вид в отдельности.