Читаем PIC-микроконтроллеры. Все, что вам необходимо знать полностью

Если ведомое устройство ожидает пакет от удаленного ведущего, то данные побитно вдвигаются через вывод SDA и после приема всех восьми битов полученный байт пересылается в регистр SSPBUF. Если ошибки переполнения не было, то модуль MSSP автоматически формирует подтверждение (АСК) во время 9-го тактовою импульса. Эта ошибка возникает в том случае, если ранее принятый байт не был в свое время считан из регистра SSPBUF.

После обнаружения состояния СТАРТ все ведомые устройства на шине принимают первый пакет от ведущего и сравнивают его содержимое со значением, записанным в регистре адреса SSPADD. При совпадении старших семи битов (0-й бит — бит направления передачи) соответствующее устройство формирует подтверждение (АСК) и готовится к обмену данными с ведущим. При этом устанавливаются оба флага — BF и SSPIF, сигнализирующие о событии на шине. Как мы уже видели на Рис. 12.15, 8-й бит первого пакета адреса указывает ведомому устройству, принимать или передавать данные до появления на шине следующего состояния СТАРТ или СТОП.

Как и в SPI-режиме, для конфигурирования модуля MSSP нам необходимо записать определенные значения в регистры управления и состояния. Формат регистров, приведенный на Рис. 12.19, соответствует четырем возможным режимам работы модуля SSP в качестве ведомого устройства I2С. В этом режиме используются те же регистры SSPSTAT и SSPCON. К сожалению, названия некоторых битов, используемых в этом режиме, например СКЕ, остаются прежними, хотя их назначение кардинальным образом меняется. По сравнению с более старыми модулями SSP модуль MSSP имеет второй регистр управления SSPCON2. За исключением 0-го и 7-го битов, этот регистр используется исключительно при работе модуля в качестве ведущего I2С.

Рис. 12.19.Регистры управления и состояния модуля MSSP при его работе в режиме ведомого I2С

∙ SSPEN

Установка бита SSPCON[5] разрешает работу синхронного последовательного порта. После любого сброса модуль MSSP отключен, а выводы RC3 и RC4 могут использоваться в качестве линий порта С.

∙ SSPM[3:0]

К нашему обсуждению относятся четыре комбинации этих битов выбора режима работы модуля SSP. Для простоты мы будем считать, что используется режим 7-битной адресации. При использовании 10-битной адресации сначала необходимо загружать в регистр SSPADD старший байт адреса b’1110А9А8’, а после его совпадения с принятым значением заменять на младший байт адреса Ь’А7А6А5А4А3А2А1’. Режимы Ь’0110’ и Ь’1110’ отличаются только тем, что в последнем при обнаружении состояний СТАРТ и СТОП устанавливается флаг прерывания SSP1F.

∙ BF, SSPIF

Установленный флаг BF свидетельствует о том, что с данными в регистре SSPBUF что-то произошло. Флаг SSPIF является флагом прерывания от модуля MSSP и устанавливается при любом событии на шине I2С.

Ведомый-приемник

При приеме кадра от ведущего и записи его содержимого в регистр SSPBUF устанавливается флаг BF, показывая тем самым, что новые данные доступны для обработки, а во время 9-го тактового импульса передается подтверждение (АСК). Также при этом устанавливается флаг SSPIF (PIR[3]), который может использоваться для генерации прерывания. При считывании полученного байта из буфера бит BF автоматически сбрасывается (этот флаг доступен только для чтения), однако флаг SSPIF необходимо сбрасывать вручную, как и остальные флаги прерываний.

В случае приема нового байта до считывания предыдущего значения, т. е. при установленном бите BF, он не пересылается в буфер SSPBUF. Вместо этого устанавливается флаг SSPOV, извещающий о возникновении переполнения. В этом случае подтверждение не посылается (NACK).

Ведомый-передатчик

В течение всего времени пересылки байта ведущему флаг BF остается установленным, показывая, что идет передача. Если в этот момент попытаться записать в регистр SSBUF новый байт, то вместо его пересылки в сдвиговый регистр SSPSR будет установлен флаг WCOL, извещающий о возникновении конфликта записи.

∙ SSPOV

При работе в режиме ведомый-приемник попытка считывания регистра SSPBUF до приема нового байта индицируется установкой данного флага. При этом ведущему передается NACK. Ведомый может намеренно передавать NACK, чтобы информировать ведущего о том, что тот может повторить попытку передачи позже. Это состояние сбрасывается при считывании регистра SSPBUF (при этом сбрасывается флаг BF) и ручном сбросе флага SSPOV.

∙ WCOL

Этот флаг устанавливается при попытке записи в регистр SSPBUF во время передачи, извещая о возникновении конфликта записи. Данный флаг должен быть сброшен вручную.

∙ S,P

Эти флаги индицируют обнаружение на шине состояний СТАРТ и СТОП соответственно. Обычно они имеют противоположные значения. Исключением из данного правила является их состояние после любого сброса микроконтроллера или при разрешении модуля (SSPEN — > 1) — в эти моменты оба флага сброшены.

Перейти на страницу:

Все книги серии Программируемые системы

PIC-микроконтроллеры. Все, что вам необходимо знать
PIC-микроконтроллеры. Все, что вам необходимо знать

Данная книга представляет собой исчерпывающее руководство по микроконтроллерам семейства PIC компании Microchip, являющегося промышленным стандартом в области встраиваемых цифровых устройств. В книге подробно описывается архитектура и система команд 8-битных микроконтроллеров PIC, на конкретных примерах изучается работа их периферийных модулей.В первой части излагаются основы цифровой схемотехники, математической логики и архитектуры вычислительных систем. Вторая часть посвящена различным аспектам программирования PIC-микроконтроллеров среднего уровня: описывается набор команд, рассматривается написание программ на ассемблере и языке высокого уровня (Си), а также поддержка подпрограмм и прерываний. В третьей части изучаются аппаратные аспекты взаимодействия микроконтроллера с окружающим миром и обработки прерываний. Рассматриваются такие вопросы, как параллельный и последовательный ввод/вывод данных, временные соотношения, обработка аналоговых сигналов и использование EEPROM. В заключение приводится пример разработки реального устройства. На этом примере также демонстрируются простейшие методики отладки и тестирования, применяемые при разработке реальных устройств.Книга рассчитана на самый широкий круг читателей — от любителей до инженеров, при этом для понимания содержащегося в ней материала вовсе не требуется каких-то специальных знаний в области программирования, электроники или цифровой схемотехники. Эта книга будет также полезна студентам, обучающимся по специальностям «Радиоэлектроника» и «Вычислительная техника», которые смогут использовать ее в качестве учебного пособия при прослушивании соответствующих курсов или выполнении курсовых проектов.

Сид Катцен

Радиоэлектроника

Похожие книги

Электроника для начинающих
Электроника для начинающих

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию для защиты от проникновения в дом, елочные огни, электронные украшения для одежды, устройство преобразования звука, кодовый замок, автономную роботизированную тележку и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий.Для начинающих радиолюбителей

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки