Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Глава 14

.pdf
Скачиваний:
26
Добавлен:
18.02.2016
Размер:
1.11 Mб
Скачать

приведено на рис. 134. Ограничения на используемые комбинации бит этого регистра связаны с тем, что некоторые из 16 возможных комбинаций бит PCFG3 – PCFG0 могут установить недопустимые для контроллера TTF 5.0 режимы АЦП

(рис. 133):

-напряжения, которые поступают на контакты RA2, RA3 далее могут использоваться как ОПОРНОЕ напряжение для работы АЦП, что в силу их неопределенности приведет к искажению результата «оцифровки»;

-перевод контактов RE0 – RE2 в режим «цифровых» с последующей попыткой «оцифровки» реально поступающего аналогового сигнала также приве-

дет к искажению результата «оцифровки», т.к. конденсатор CHOLD при этом отключен, а соответственно и процесс преобразования невозможен.

Еще одна особенность программирования регистра ADCON1, которую необходимо учитывать, состоит в том, что ОТСУТСТВУЕТ КОМБИНАЦИЯ БИТ PCFG3 – PCFG0 (рис. 135), позволяющая установить состояние контактов

16F877, которая бы соответствовала их подключениям в контроллере TTF 5

(таблица в правой части рис. 133). Даже «разрешенная» на рис. 134 комбинация «0000» кроме «нужных» контактов RE0 – RE2 делает «аналоговыми» (т.е. сигналы с этих контактов могут подаваться на входы АЦП) и «цифровые для TTF 5» контакты RA0 – RA5. Если при этом ошибочно установить биты CHS2 – CHS0 (регистра ADCON0), «оцифровываться» начнет дискретный сигнал с этих контактов.

Поэтому, если в программе одновременно используются и цифровые и аналоговые входы контроллера TTF, необходимо НЕПОСРЕДСТВЕННО ПЕРЕД ЛЮБЫМИ ОПЕРАЦИЯМИ С ПОРТАМИ А и Е ИЗМЕНЯТЬ ИХ СОСТОЯНИЕ НА ТРЕБУЕМОЕ в соответствие с таблицей на рис. 135, т.к. всегда будут появляться ненужные, но запрограммированные режимы работы контактов портов.

14.2.3 Пример ПО для непрерывного измерения амплитуды аналогового сигнала

Постановка задачи: разработать программу, осуществляющую непрерывное (с частотой выполнения программы) измерение текущего значения напряжения, поступающего на вход RA0 микроконтроллера PIC 16F876, в диапазоне от 0 до +5В и записывает его в ОЗУ. Тактовая частота микроконтроллера 4 МГц.

Примечание: в контроллере TTF 4, для которого приводится пример программы и используется микроконтроллер PIC 16F876, контакт RA0 – является аппаратным аналоговым входом. Назначение каналов АЦП для контроллера TTF 5 приведено на рис. 133 и ОТЛИЧАЕТСЯ от рассматриваемого в этом примере.

Блок-схема алгоритма ПО представлена на рис. 136 и имеет следующие особенности:

- в тело алгоритма внесены обязательные дополнительные изменения ASM файла (подробнее о них см. «Методические указания к лаб. работам по курсу ПЦУ»), необходимые для правильной компиляции и получения hex-файла

Подключение файла инструкций PIC16F876.inc, введение вспомога-

 

тельных регистров, установка Reset вектора

 

 

1

 

 

 

Выбор нулевой страницы ПЗУ команд

2

 

 

 

 

 

Установка макс. времени задержки срабатывания WDT

3

 

 

 

 

Настройка порта А как входа

 

 

 

Настройка порта А как аналогового входа, величины источника

 

опорного напряжения АЦП и формата размещения 10-ти разряд-

 

ного результата (ADCON1)

 

 

 

Выбор аналогового канала RA0

 

 

 

и источника тактовых импульсов 8 ТOSC для АЦП (ADCON0)

 

Включение питания на модуль АЦП (ADON=1)

 

 

 

Вызов процедуры задержки Small_delay (при W=5) на

 

 

30 мкс для зарядки СHOLD

 

 

 

Старт преобразования АЦП (GO_DONE=1) и ожидание сигнала о его

завершении от самого АЦП (GO_DONE=0)

 

 

Вызов процедуры задержки Small_delay (при W=10) на 55 мкс для формирова-

ния паузы АЦП и корректности следующего цикла преобразования

Вызов процедуры передачи данных на ПК send_data

 

 

Вызов процедуры задержки Big_delay (при W=0) на 328 мс для

 

корректности процесса передачи

 

 

 

Рис. 136 Блок-схема алгоритма непрерывного измерения температуры с

передачей данных на ПК для м/к PIC16F876

 

 

при его работе в составе контроллеров серии TTF, на рис. 136 эти 3 процедуры

показаны цифрами в кружочках 1 – 3. Далее следует стандартная настройка кон-

такта RA0 как входа;

-в соответствие с рекомендациями рис. 134 настраиваем регистр ADCON1 для перевода контакта RA0 в аналоговый режим. Выбираем стандартное правое выравнивание двухбайтового результата измерения напряжения при его размещении в регистрах ADRESH, ADRESL и выбираем величину источника опорного напряжения для модуля АЦП не менее максимально возможной величины входного сигнала, т. е +5В (питание микроконтроллера);

-в соответствие с рекомендациями рис. 132 и Табл.10 из п. 14.2.1 настраиваем регистр ADCON0 для выбора длительности преобразования одного бита

(частоту дискретизации) TAD = 8 ТOSC (т.к. при тактовой частоте контроллера 4 МГц это минимально возможное время «оцифровки» одного бита, удовлетво-

ряющее аппаратному ограничению контроллера TAD ≥ 1,6 мкс) при котором получаем TAD = 0,25*8=2 мкс. Кроме этого здесь же выбираем «нулевой» канал АЦП - RA0;

-закончив предварительные процедуры по настройке управляющих регистров АЦП, подаем на него питание, установив бит ADON=1;

-на этом этапе начинается процесс заряда конденсатора CHOLD, поэтому, в соответствие с рис. 129, формируем задержку выполнения дальнейших преобразований, путем вызова процедуры задержки Small_delay. Оформление задержки

ввиде отдельной процедуры удобно, т.к. она будет вызываться еще в одном месте программы. Задержка реализована путем циклического выполнения нескольких строк программного кода W = 5 раз и должна быть не менее 20 мкс (см. рис. 129). В нашем случае время задержки установлено 30 мкс;

-по окончании заряда CHOLD, запускаем старт преобразования АЦП, уста-

новив бит GO_DONE = 1;

-длительность аналого-цифрового преобразования составляет не менее

12TAD = 12*2 = 24 мкс, поэтому на это время не производим никаких действий с сигналом, ожидая результат о получении которого модуль АЦП сообщит автоматически, установив бит GO_DONE = 0;

-по истечении этого времени «оцифровка» закончена и в регистрах ADRESH, ADRESL оказывается 10-ти разрядный эквивалент мгновенного значения входного сигнала.

Примечание: строго говоря, на этом работа программы закончена и в этом месте ее можно было бы зациклить для осуществления «непрерывного» измерения. Однако, далее, на примере этой программы будет показано, как можно организовать передачу полученных данных в ПК. Это сделано с помощью специальной процедуры send_data, реализующей передачу содержимого памяти данных микроконтроллера в специальную программу-монитор, функционирующую на ПК (подробнее об этом см. «Методические указания к лаб. работам по курсу ПЦУ») и позволяющую наблюдать в режиме реального времени изменения состояния регистров памяти данных микроконтроллера. Программно это реализовано путем вызова процедуры send_data после выполнения одного цикла программы измерения;

-формируем задержку (пауза на рис. 129, длительностью не менее 2TAD = 4 мкс) путем вызова процедуры задержки Small_delay, с параметром W = 10, что

составляет 55 мкс; - далее тоже следует вызов еще одной вспомогательной процедуры

Big_delay, реализованной аналогично, но формирующей гораздо более длительную задержку - 328 миллисекунд (реально требуемое время не менее 200 мс), необходимую для корректного завершения процессов обмена данными между ПК и контроллером.

Ниже приведен исходный код программы с комментариями.

PROCESSOR PIC16F876

#include <P16F876.inc>

fCOUNTER equ 0x20 fCOUNTER2 equ 0x21

org 0x000

;директива принудительной установки типа микроконтроллера для компилятора (см. Методические указания к лаб. работам по курсу ПЦУ)

;подключение файла инструкций среды разработки (см. Методические указания к лаб. работам по курсу ПЦУ)

;введение вспомогательных регистров, используемых в работе процедур задержки small_delay, big_delay (см. Методические указания к лаб. работам по курсу ПЦУ)

;директива указания адреса расположения первой команды ПО в памяти программ (см. Методические указания к лаб. работам по курсу ПЦУ)

clrf STATUS movlw 0x00 movwf PCLATH goto Begin

Begin

bcf

STATUS, RP1

 

bsf

STATUS, RP0

 

movlw

b'00001111'

 

movwf

OPTION_REG

;установка «нулевой» страницы памяти программ микроконтроллера (см. Методические указания к лаб. работам по курсу ПЦУ)

;принудительный переход к началу выполнения программы (см. Методические указания к лаб. работам по курсу ПЦУ)

;выбор «первого» банка памяти данных, где находится регистр OPTION_REG, и установка с его помощью максимального коэффициента предварительного делителя, включенного перед сторожевым таймером WDT и настроенного на подсчет внутренних тактовых импульсов (см. Методические указания к лаб. работам по курсу ПЦУ»

 

movlw

0xff

 

movwf

TRISA

 

clrf

ADCON1

 

bsf

ADCON1, ADFM

 

bcf

STATUS, RP0

 

clrf

ADCON0

 

bsf

ADCON0, ADCS0

Start

bsf

ADCON0, ADON

 

movlw

.5

 

call

Small_delay

 

bsf

ADCON0, GO_DONE

WLoop

btfsc ADCON0, GO_DONE

 

goto

WLoop

;настройка порта А в режим входов

;настройка контакта RА0 в режим аналогового вхо-

да, а величины источника опорного напряжения Еоп = +5 В, путем обнуления бит PCFG0-3 (см. рис. 134, с учетом отличий контроллера 16F876 от 16F8777, приведенного на этом рисунке)

;установка режима правого выравнивания при расположении 10-ти битного результата в 2-х регистрах

(см. рис. 131)

;выбираем «нулевой» банк памяти данных для последующего обращения к регистру ADCON0

;выбираем канал АЦП RA0 (биты CHS0-2 рис. 132, с учетом отличий контроллера 16F876 от 16F8777, приведенного на этом рисунке) и период тактовых импульсов 8 ТOSC (биты ADSC0-1)

;включаем модуль АЦП, при этом начинается заряд накопительной емкости CHOLD

;вызываем процедуру задержки на 30 мкс, с параметром W=5 (см. описание процедуры Big_delay в п. «Методические указания к лаб. работам по курсу

ПЦУ»), необходимую для того чтобы CHOLD успел зарядиться

;старт преобразования, GO_DONE=1

;ожидаем, пока АЦП не окончит процесс преобразования и выставит GO_DONE=0

movlw

.10

call

Small_delay

call

send_data

movlw

0x00

call

Big_delay

goto

Start

 

Big_delay:

…………………….

return

Small_delay:

bcf

STATUS, RP1

bcf

STATUS, RP0

movwf

fCOUNTER

SD_Loop:

clrwdt

decfsz fCOUNTER,f goto SD_Loop return

send_data:

………………………

return

; выдерживаем паузу (не менее 4 мкс для периода

тактовых импульсов 8 ТOSC ) 55 мкс для корректности следующего цикла преобразования, путем вызо-

ва процедуры Small_delay с W=10 (cм. рис. 129)

;вызываем процедуру передачи состояния регистров памяти данных на ПК (см. «Методические указания к лаб. работам по курсу ПЦУ»)

;формируем задержку на 328 мкс (описание процедуры приведено в «Методические указания к лаб. работам по курсу ПЦУ»)

;зацикливаем ПО для обеспечения непрерывного отсчета входного сигнала

;процедура задержки для корректной передачи данных на ПК

;Процедура задержки на (5W + 5) мкс. Работа процедуры основана на двух свойствах:

- время выполнения одной команды контроллера 16F67__ в контроллере TTF равна 1 или 2 мкс;

- в теле процедуры группа таких команд выполняется W раз

; процедура передачи данных на ПК (см. п. «Методические указания к лаб. работам по курсу ПЦУ»)

end

; окончание программы

 

Обратите внимание, что тела всех процедур расположены в конце тела основной программы.

14.3 Способы организации взаимодействия микроконтроллера PIC 16F877 с FLASH памятью данных

Существует два способа организации работы PIC контроллеров с энергонезависимой памятью данных (рис. 137), определяемые их аппаратной архитектурой. В первом случае, энергонезависимая (EEPROM) память является внутренней и входит состав контроллера, и АЛУ контроллера взаимодействует с ней через группу специальных регистров без использования специализированных аппаратных интерфейсов (хотя и используются различающиеся между собой логические протоколы обмена данными). Во втором - память является внешней по отношению к микросхеме контроллера и реализуется в виде отдельной микросхемы (группы микросхем). Обмен данными между АЛУ микроконтроллера и микросхемой памяти в этом случае осуществляется с помощью внутреннего специального SPI модуля, реализующего заданный интерфейс и протокол обмена, например - Serial Peripheral Interface (SPI), подключаемого к внешней микросхеме через один из портов контроллера. Строго говоря, PIC 16F877 имеет еще один

ALU

SFR

EEPROM

256 байт

PIC 16F877

внутренняя

память

ALU

 

 

SFR

 

 

SPI

PORT

SPI

 

модуль

 

интерфейс

 

 

PIC 16F877

 

 

внешняя

память

Рис. 137 Способы взаимодействия PIC контроллера с FLASH памятью данных

микросхема EEPROM

аппаратный интерфейс для работы с микросхемами памяти – I2C, но, учитывая, что в контроллере TTF он аппаратно не подключен, в данном пособии он не рассматривается. В обоих случаях память физически реализуется с использованием FLASH технологии с электрическим стиранием.

14.3.1 Организация взаимодействия микроконтроллера PIC 16F877 с микросхемой EEPROM типа 25C04

14.3.1.1 Структура и программирование SPI интерфейса

А. Структура и сигналы SPI магистрали

Взаимодействие микроконтроллера с микросхемами репрограммируемой памяти типа 25С04 (MicroChip) осуществляется с использованием встроенного модуля SPI интерфейса, предназначенного для внутрисхемного обмена данными между master-контроллером и внешними slave-устройствами. Поэтому вначале рассмотрим структуру и сигналы SPI интерфейса с учетом того, что спецификация указанного интерфейса содержит требования не только аппаратного характера, но и оговаривает структуру логического протокола обмена данными между мастер- и slave-устройствами.

Определение: SPI (Serial Peripheral InterfaceТМ, Motorola) – интерфейсом

называется совокупность аппаратных средств и логических правил, обеспечи-

вающих сетевой (с топологией «общая шина») синхронный одномастерный режим последовательного одновременного двунаправленного обмена дан-

ными между более чем двумя микросхемами.

На рис. 138 представлена типовая структура соединения периферийных микросхем с master-контроллером, которая позволяет сформулировать общие

 

 

 

 

 

принципы построения SPI ин-

 

 

SDO

 

контроллер

терфейса:

 

 

 

 

 

 

SDI

Память Slave-

 

1. Аппаратно интерфейс яв-

 

 

 

 

 

 

 

 

 

 

SCK

ляется 4-х проводным: SDO – вы-

 

SDI

ход

данных

в

последовательном

Master-controller

СS

SDO

коде, SDI – вход данных в после-

 

SCK

SDO

довательном коде, SCK – выход (у

 

мастер-контроллера) или вход (у

 

 

PORT

SDI

slave-устройства) тактовых син-

SCK

хроимпульсов, определяющих на-

 

 

 

 

 

 

 

 

 

СS

 

 

чало

отсчетов

значений

 

битов

 

 

 

 

 

внутри пакета при их последова-

 

 

SDO

 

 

тельной передаче или чтении по

 

 

Датчик

 

контактам SDO/SDI соответствен-

 

 

SDI

 

 

 

 

но. Провод CS (выбор микросхе-

 

 

SCK

 

 

 

 

мы) в явной форме не входит в со-

 

 

 

 

 

 

 

 

 

 

 

СS

 

 

став SPI магистрали, в качестве

 

 

 

 

 

 

 

 

 

 

этой

линии

используются

один

Рис. 138 Типовая структурная схема

или несколько выходных разрядов

какого-либо

 

порта

мастер-

 

 

SPI магистрали

 

 

 

 

 

 

 

контроллера. Линия CS предна-

 

 

 

 

 

 

 

 

 

 

значена для активизации (выбора)

одной из slave-микросхем, подключенной к общей 3-х проводной шине. При

формировании мастер-контроллером низкого уровня на одном из своих выходов

CS, slave-микросхема, подключенная своим входом CS к этому разряду порта

контроллера, переходит из высокоимпедансного (по входам/выходам) в активное

состояние и начинает реагировать на сигналы на своем входе SDI. Остальные

микросхемы (на входах CS которых присутствует «1») при этом продолжают на-

ходиться в высокоимпедансном состоянии и не влияют на состояние линий SDI,

SDO. Таким образом, осуществляется адресация устройств, подключенных к SPI

магистрали, при этом одновременный выбор нескольких slave-устройств исклю-

чается на программном уровне за счет работы порта мастер-контроллера в коде

«1 из m».

 

 

 

 

 

 

 

 

 

2.В сети принудительно и изначально выделяется ОДИН мастерконтроллер (за счет его соответствующего программирования), осуществляющий управляемую генерацию импульсов синхронизации на своем выходе SCK, ВСЕ остальные slave-устройства (за счет своей аппаратной струкутры) принимают их по своим входам SCK.

Примечание: при использовании SPI интерфейса для связи двух и более контроллеров, встроенный модуль одного из них изначально программируется как мастер, других – как подчиненные устройства.

3.После выбора мастер-контроллером конкретной микросхемы (по ее входу CS), с которой будет осуществляться обмен данными, дальнейшие процессы происходят в соответствии с Рис. 139:

- момент времени 1 – активизация мастер-контроллером одного из slave-

 

CS

 

 

 

 

 

 

 

 

 

 

SCK

 

 

пауза

 

 

пауза

 

 

пауза

 

 

 

 

 

 

 

 

 

 

 

SDO/SDI

передача

 

передача

 

 

прием/передача

 

 

 

 

 

 

 

 

 

 

 

7 инструкция 0

7

адрес

0

 

7

данные

0

1

2

…………….

9 10

…………….

 

17 18

…………….

25 26

 

 

Рис. 139 Типовая последовательность сигналов SPI магистрали

устройств по его входу CS, после этого с небольшой задержкой мастер-

контроллер автоматически начинает передавать (формировать) на своем выходе

SCK последовательность синхроимпульсов;

 

 

 

 

 

-момент времени 2 – начало передачи мастером на своем выходе SDO 7-го (старшего) бита инструкции (команды, которую мастер-контроллер посылает подчиненному slave-устройству, которую оно должно выполнить) по программируемому перепаду 1-го импульса SCK. По другому перепаду этого же синхроимпульса подчиненное устройство может осуществить отсчет (прием) переданного бита в байте команды на своем входе SDI; Строго говоря, по этому же (второму) перепаду мастер тоже может принимать сигналы по своему входу SDI (так достигается одновременность процессов приема-передачи), но на практике этот сигнал (ответ slave-устройства) придет только после того как подчиненное устройство выполнит полученную от мастера команду;

-………….. ;

-момент времени 9 – начало передачи мастером на своем выходе SDO последнего 0-го (младшего) бита инструкции (по перепаду 8-го импульса SCK). После этого мастер прекращает генерацию синхроимпульсов – интервал ПАУЗА на рис. 139. Эта задержка необходима ему для подготовки передачи второго байта (в данном случае - адреса). Другими словами, генерация синхроимпульсов осуществляется только во время приема/передачи информационных битов;

-моменты времени 10-17 – передача мастером адреса (начиная со старшего бита, при этом автоматически включается его генератор синхроимпульсов) в последовательном коде, начинается по фронту (срезу) фактически 9-го синхроимпульса и производится в случае если команда предусматривает в качестве своего параметра адрес, например, адрес ячейки памяти в slave-микросхеме внешней памяти;

-моменты времени 18-25 – передача мастером 8-ми бит данных (тоже

начиная со старшего бита) подчиненному устройству (или прием мастером по своему входу SDI 8 бит данных, переданных подчиненным устройством на своем выходе SDO в ответ на только что выполненную команду), осуществляется аналогично по фронту (срезу) следующих 8-ми синхроимпульсов SCK;

- момент времени 26 – завершение работы мастер-контроллера с конкретным подчиненным устройством путем его «отключения», т.е. перевода в высокоимпедансное состояние (CS=1).

4. Структура распределения битов внутри пакета команд, адресов, данных не определяется спецификацией SPI интерфейса, а зависит только от типа конкретного slave-устройства.

Б. Схема и режимы работы модуля SPI

На рис. 140 приведена структурная схема встроенного в PIC 16F877 модуля синхронного последовательного порта в мастер-режиме (MSSP), реализующего SPI интерфейс. Модуль обеспечивает решение 3-х основных задач интер-

фейса:

-автоматическую генерацию на выходе SCK (разряд RC3 порта С) синхросигнала (с управляемой частотой и начальным уровнем) для синхронизации начала и окончания процессов приема-передачи и передачу его slaveустройствам;

-передачу данных (инструкций, адресов) в последовательном коде на выходе SDO (разряд RC5 порта С) от мастер-контролера к slave-устройствам сети;

-прием данных в последовательном коде, поступающих на его вход SDI (разряд RC4 порта С), от slave-устройств сети к мастер-контроллеру;

Рассмотрим работу SPI модуля при генерации на выходе SCK (разряд RC3 порта С) синхросигнала по структурной схеме. Работа модуля начинается с его включения путем установки бите SSPEN = 1 в специальном управляющем регистре SSPCON. При этом контакты RC3 – RC5 перестают быть просто контактами порта С, и начинают выполнять роль контактов интерфейса SPI. После вклю-

Внутренняя шина данных контроллера PIC 16F877

 

 

 

 

 

 

 

 

 

 

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

передача(запись

 

 

 

прием(чтение)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W

 

 

 

BF = 0

SSPSTAT (0)

 

 

 

WCOL = 1

 

CONTROL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

W

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

WRITE

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SSPCON (7)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сброс

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

RG памяти

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПО

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

6

 

5

4

 

3

 

2

 

1

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SDO (RC5)

 

 

 

 

 

 

 

SSPBUF (0x13)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SSPOV = 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CONTROL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

READ

 

 

SSPCON (6)

 

 

 

 

 

 

 

1

 

 

BF = 1

 

SSPSTAT (0)

 

 

 

 

 

 

 

SDI (RC4)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SСK (RC3)

 

 

 

 

RG сдвига

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

6

5

4

3

2

1

0

 

 

 

 

сдвиг SDO

 

SSPSR

 

отсчет

SDI

 

ИЛИ

 

 

 

 

 

 

 

8 имп

ON/OFF

 

 

Делитель

 

Выбор фронта и

 

 

 

 

 

 

 

 

 

 

 

Выбор момента отсчета бита

 

FOSC

:4

:16

:64

 

пассивного

 

 

 

 

 

SDI

Рис. 140 Структурная

 

 

 

 

 

уровня SCK

 

 

 

 

 

 

 

 

 

 

схема модуля SPI (MSSP)

 

 

 

 

 

 

 

 

 

 

 

контроллера PIC 16F877 в

SSPEN (5) SSPM0 – SSPM3 (0-3)

 

CKP (4)

CKE (6)

SMP (7)

 

 

ведущем (master) режиме

 

 

 

 

 

 

 

 

 

 

 

SSPCON (0x14)

SSPSTAT (0x94)

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]