Главное меню

Микросхемы

Все выводы порта В имеют встроенную отключаемую нагрузку в виде резисторов, подключенных к шине питания (подтягивающие резисторы). Нагрузка включается и отключается одновременно для всех выводов при помощи бита 7 RBPU регистра OPTION_REG. При включении питания RBPU= 1 и нагрузка отключена. Программное обнуление бита RBPU подключает нагрузку, но для линий, настроенных на вывод нагрузка автоматически отключается.

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

Это прерывание выводит контроллер из состояния SLEEP.

Рисунок 3.4 - Блок-схема порта В, линии RB7-RB4 (а) и RB3-RB0 (b)

Модуль TIMER0 и регистр TMR0

TIMER0 является программируемым модулем таймера/счетчика. Он имеет в своем составе:

- 8-битный таймер/счетчик TMR0, доступный для чтения и записи как регистр,

- программируемый предварительный делитель (предделитель) мультиплексор входного сигнала

- генератор прерывания по переполнению регистра TMR0 с FFh в 00h.

Предделитель

Предделитель является 8-битным счетчиком, который также может быть использован, как выходной делитель (постделитель) сторожевого таймера. Если предделитель подключен к модулю TIMER0, то он не может использоваться со сторожевым таймером, и наоборот. Когда предделитель подключен к таймеру/счетчику, все команды, использующие запись в регистр TMR0, обнуляют предделитель. Если предделитель подключен к сторожевому таймеру, они обнуляются совместно, командой CLRWDT. Предделитель недоступен для прямой записи или чтения.

Подключение предделителя может быть изменено "на лету", то есть во время выполнения программы.

Работа с EEPROM

Память данных EEPROM доступна для чтения и записи во всем рабочем диапазоне питающих напряжений и предназначена для хранения 8-битных значений. Перед записью нового значения предыдущее стирается. Микроконтроллеры PIC16F84 имеют 64 байта EEPROM с адресами от 00h до 3Fh, но эти ячейки недоступны путем прямой адресации в адресном пространстве микроконтроллера. Для доступа к ним используется косвенная регистровая адресация через специальные регистры. Всего при работе с EEPROM используется четыре специальных регистра:

- EECON1

- EECON2

- EEDATA

- EEADR

Регистр обмена EEDATA содержит 8-битные данные чтения/записи. EEADR хранит адрес ячейки, к которой происходит обращение. Несмотря на то, что в PIC16F84 физически существует только 64 байта EEPROM, декодируются все биты адреса. Поэтому необходимо следить за значением в EEADR, чтобы не выйти за пределы адресного пространства. При записи в EEPROM требуется строго выдерживать временной интервал, который контролируется встроенным таймером. Время записи может варьироваться от кристалла к кристаллу, а также в зависимости от питающего напряжения и температуры.

Когда у микроконтроллера установлен бит защиты кода, процессор может читать и записывать EEPROM, но для программатора эта память становится недоступна.

Регистры EECON1 и EECON2

Регистр EECON1 является контрольным регистром, у которого физически доступны младшие пять бит. Старшие три недействительны и всегда читаются как "0".

bit 7-5 Физически недоступны, всегда читаются как "0"

bit 4 EEIF - флаг прерывания по окончанию записи

1 = запись завершена (должен быть сброшен программно)

0 = запись не завершена или не начиналась

bit 3 WRERR - флаг ошибки записи в EEPROM

1 = запись преждевременно прервана

0 = запись прошла успешно

bit 2 WREN - разрешение записи в EEPROM

1 = разрешен цикл записи

0 = запрещена запись

bit1 WR - бит управления записью

1 = начать цикл записи. Программная установка бита является командой начать цикл записи. Сбрасывается этот бит только аппаратно, когда цикл записи окончен.

0 = цикл записи данных завершен

bit1 RD - бит управления чтением

1 = начать чтение данных из EEPROM. Чтение занимает один командный цикл. Программная установка бита является командой начать чтение. Бит сбрасывается только аппаратно.

Перейти на страницу: 1 2 3 4 5 6 7 8 9 10

Другое по теме:

Многоканальная связь на железнодорожном транспорте
...

Copyright © www.techproof.ru