- •Введение.
- •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.3.Поддержка общего вызова.
Данная процедура используется при необходимости передавать одну и ту же информацию для всех абонентов, подключенных к шине I2C. Для распознавания общего вызова используется зарезервированный для этого случая адрес, в котором все разряды, включая бит R/-W равны 0. Данный режим включатся ведомым устройством путем установки в 1 бита GSEN (7 бит регистра SSPCON2). Далее процедура работы модуля аналогична работе при приеме данных.
2.5.1.4.Работа в sleep режиме.
В SLEEP режиме микроконтроллер может принимать байты адреса или данных. При этом микроконтроллер выходит из SLEEP режима, если имеется разрешение работы модуля MSSP по прерываниям.
2.5.2. Режим ведущего i2c.
Режим ведущего включатся путем установки бит SSPM3:SSPM0 в регистре SSPCON, при этом выводы SCL и SDA управляются аппаратно (переключаются в режим выхода). Структурная схема модуля в режиме ведущего приведена на рис. Работает модуль следующим образом. При передаче данных модуль формирует сигнал START путем установки бита SEN в регистре SSPCON2, после чего ожидает прерывания или установки флага SSPIF (бит 3 в регистре PIR1). При получении этих условий в регистр SSPBUF записывается адрес абонента (7 старших разрядов и направление обмена – R/-W =0 – передача байта), одновременно устанавливается бит BF регистра SSPSTAT (буфер SSPBUF полон), после чего байт адреса переписывается в сдвиговый регистр SSPSR и передается абоненту. После перезаписи байта из регистра SSPBUF в регистр SSPSR сбрасывается бит BF регистра SSPSTAT. Получив в ответ сигнал ACK, ведущий записывает 1 в бит ACKSTAT регистра SSPCON2 и по заднему фронту 9-го тактового сигнала устанавливается флаг SSPIF, означающий что предыдущий байт передан абоненту и можно передавать следующий: либо непосредственно по опросу флага, либо по прерыванию. После этого записью в регистр SSPBUF на линию выдается байт данных. После прохода 8 тактовых импульсов ожидается бит ACK и устанавливается бит ACKSTAT. По заднему фронту 9-го тактового импульса устанавливается флаг SSPIF. Далее продолжается по данному циклу передача всех байтов информации. После передачи всего массива данных записью 1 в бит PEN (2 бит) регистра SSPCON2 инициируется сигнал STOP.
При приеме информации ведущим адресная часть цикла аналогична вышеизложенному, но в адресном байте бит R/-W равен 1, поэтому после приема сигнала ACK не устанавливается флаг SSPIF. Ведущий переходит в режим ожидания, контролируя сигнал на линии SCL (этот сигнал задерживается ведомым для перехода в режим передачи). После «отпускания» линии SCL, ведущий принимает 8 бит, записывает 1 в бит ACKDT регистра SSPCON2, формирует ответ ACK и устанавливает флаг SSPIF, по которому принятая информация должна быть прочитана (иначе она будет потеряна при приеме следующего байта. По окончании передачи массива данных ведомое устройство инициирует на шине сигнал STOP.
Ведущий отслеживает и возникновение конфликта на шине I2C. Суть обнаружения конфликта заключается в том, что при переходе сигнала на линии SCL в высокое состояние сигнал на линии SDA меняться не должен и если это произошло, значит шину пытается захватить другое устройство. Обнаружив конфликт, ведущее устройство устанавливает бит BCLIF в регистре PIR2, прекращает работу на шине и переходит в режим ожидания, контролируя возникновение на шине сигнала STOP. После обнаружения этого сигнала устройство может продолжить работу, «захватив» шину обычным способом.
С другими режимами работы модуля MSSP, например, с режимом синхронного последовательного интерфейса SPI можно ознакомиться в [ ].
SCL