Все выводы порта В имеют встроенную отключаемую нагрузку в виде резисторов, подключенных к шине питания (подтягивающие резисторы). Нагрузка включается и отключается одновременно для всех выводов при помощи бита 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
Другое по теме:
Исследование методов резервирования систем Для заданных расчетно-логических схем систем: 1. Получить методами интегральных, дифференциальных уравнений и методом графов (не менее чем двумя методами) для указанных в задании типов систем общие соотношения и расчетные формулы для к ...