- •Введение.
- •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.3. Подключение абонентов к шине i2c.
Для надежной работы шины необходимо выполнять определенные требования к абонентам по их нагрузочным характеристикам. На рис.23 приведена схема подключения устройств к шине.
Подтягивающие резисторы Rp определяются из условия минимально допустимого тока при наименьшем уровне напряжения на линии (уровень логического 0 – 0,4 в.).
Например:
VDD = 5в + 10%
VOL = 0,4 в
Rp min = (5,5 – 0,4)/ 0,003 = 1,7 кОм.
Максимальное значение входного резистора Rs определяется допустимым уровнем шума.
Устройства на шине I2C должны иметь один источник питания, к которым подключены подтягивающие резисторы.
С другими режимами работы модуля MSSP, например, с режимом синхронного последовательного интерфейса SPI можно ознакомиться в [ ].
В качестве примера рассмотрим задачу создания фрагмента системы управления, состоящую из нескольких ведомых и одного ведущего микроконтроллеров. Принципиальная схема фрагмента показана на рис.24
Настройка ведущего модуля:
Регистр SSPCON = 0x2E;
Что соответствует условиям:
Модуль MSSP включен,
Ведущий режим, 7-разрядная адресация, с разрешением прерываний.
Регистр SSPCON2 = 0x0F;
Что соответствует условиям:
Режим общего вызова не используется,
Прием разрешен,
Бит STOP формируется,
Бит повторный START формируется,
Бит START формируется.
Регистр SSPSTAT = 0x00; - при передаче и SSPSTAT = 0x04; - при приеме.
Что соответствует условиям:
1.Включено управление длительностью переднего фронта импульсов,
2.Уровни входных сигналов соответствуют требования шины I2C,
Регистр SSPADD = 0x00; Что соответствует нулевому адресу ведущего модуля
Настройка ведомых модулей:
Регистр SSPCON = 0x36;
Что соответствует условиям:
Модуль MSSP включен,
Ведомый режим, 7-разрядная адресация,
Тактовым сигналом не управлять, (можно записывать в бит CKR=1 при необходимости подготовки данных для передачи ведущему, с последующим сбросом данного бита).
Регистр SSPCON2 = 0x0F;
Регистр SSPSTAT = 0x00;
Регистр SSPADD = 0x01; - для первого ведомого модуля,
SSPADD = 0xnn; - для последующих ведомых модулей.
Настроечная часть программ работы системы микроконтроллеров будет иметь вид:
А. Ведущий модуль:
#define XTAL_FREQ 4MHZ
#define byte unsigned char
#define word unsigned int
#include <pic.h>
#include <stdio.h>
__CONFIG(HS & WDTDIS & PWRTEN & LVPDIS & DUNPROT & WRTEN);
void main() {
TRISC = 0xFF;
SSPSTAT = 0x00;
SSPCON = 0x2E;
SSPCON2 = 0x0F;
SSPADD = 0x 00;
Для ведомых модулей
TRISC = 0xFF;
SSPSTAT = 0x 04;
SSPCON = 0x36;
SSPCON2 = 0x0F;
SSPADD = 0xnn; //nn –соответствует адресу конкретного абонента
Рабочие части программ определяются фактическими задачами обмена информацией, включая конкретные диагностические фрагменты, (например, фрагменты контроля ошибок формата и т. п.).