Периферийные модули специального назначения

 

В данном МК работа модулей, режимы которых не должны изменяться в ходе выполнения программы задается с помощью регистра конфигурации, т.е. специального регистра, расположенного в памяти программ. В этом регистре содержатся биты конфигурации, которые предназначены для установки режимов работы некоторых модулей микроконтроллера, которые не должны изменяться в процессе выполнения всего программного кода. Эти режимы настраиваются в ходе программирования микроконтроллера и изменению не подлежат. Биты конфигурации расположены в памяти программ по адресу 2007, и могут быть установлены в '0' или в '1'.

Регистр конфигурации содержит следующие биты:

BG1:BG1 Биты калибровки сброса по снижению напряжения питания 00 = нижний предел калибровки; 11 = верхний предел калибровки
-CPD Бит защиты EEPROM памяти данных
-СР Бит защиты памяти программ
BODEN Разрешение сброса по снижению напряжения питания
MCLRE Выбора режима работы вывода GP3/-MCLR 1 = GP3/-MCLR работает как -MCLR 0 = GP3/-MCLR работает как цифровой канал порта ввода/вывода, -MCLR внутренне подключен к vdd
-PWRTE Разрешение работы таймера включения питания
WDTE Разрешение работы сторожевого таймера
FOSC2-0 Выбор сигнала тактового генератора
RC генератор вывод GP4/OSC2/CLKOUT работает как CLKOUT, RC цепочка подключается к выводу GP5/OSC1/CLKIN
RC генератор вывод GP4/OSC2/CLKOUT работает как канал порта ввода/вывода, RC цепочка подключается к выводу GP5/OSC1/CLKIN
INTOSC генератор вывод GP4/OSC2/CLKOUT работает как CLKOUT, вывод GP5/OSC1/CLKIN работает как канал порта ввода/вывода
INTOSC генератор вывод GP4/OSC2/CLKOUT работает как канал порта ввода/вывода, вывод GP5/OSC1/CLKIN работает как канал порта ввода/вывода
ЕС генератор вывод GP4/OSC2/CLKOUT работает как канал порта ввода/вывода, вывод GP5/OSC1/CLKIN работает как CLKIN
HS генератор резонатор подключается к выводам GP4/OSC2/CLKOUT, GP5/OSC1/CLKIN
XT генератор резонатор подключается к выводам GP4/OSC2/CLKOUT, GP5/OSC1/CLKIN
LP генератор резонатор подключается к выводам GP4/OSC2/CLKOUT, GP5/OSC1/CLKIN

 

 

Режимы системы тактирования МК MicroChip

Микроконтроллеры PIC12F675 могут работать в одном из восьми режимов тактового генератора. Выбрать режим тактового генератора можно при программировании микроконтроллера в слове конфигурации (FOSC2:FOSC0):

1)Внешний кварцевый/керамический резонатор

 

 

ZQ1 –резонатор

С1, С2 – запускающие конденсаторы

В зависимости от номинальной частоты резонатора рассматриваются 3 подрежима:

--HS – повышенная частоты (20-30 МГц)

--XT – номинальная частота (4МГц)

--LP – режим пониженной частоты (до 500 КГц). Используется при работе таймера TMR1 в асинхронном режиме, также модуля АЦП.

Конденсаторы С1, С2 используется для рассогласования плеч. Емкости в зависимости от режимов работы устанавливаются 10-60 пФ.

Достоинства: высокая точность, стабильность 0,001%.

Недостатки: 2 порта ввода/вывода используются не по назначению (используются как тактовый генератор), стоимость, сложность разводки печатных плат.

 

2)Режим от внешнего генератора

 

 

Используется, когда система состоит из большого числа синхронизированных между собой цифровых устройств.

Достоинства: высокая синхронизация нескольких цифровых устройств.

Недостатки: стоимость, габариты, технологичность разводки, один из портов/ввода вывода используется не по назначению.

 

3)От внешней RC цепочки

 

 

В качестве задающего генератора выступает времязадающая RC цепочка. Существует 2 подрежима:

--RC_CLKOUT (с выхода системной тактовой частоты на линию CLKOUT)

--RC_NTCLKOUT (порт GP4 работает как порт ввода/вывода)

Достоинства: стоимость, получение частоты различного диапазона.

Недостатки: низкая стабильность частоты, сложность разводки, использование 1 (2) портов ввода/вывода не по назначению.

 

4)От внутреннего RC генератор 4МГц

 

 

При данном задании системного тактирования внешне не подключаются никакие дискретные и активные элементы. Линии GP4, GP5 выполняют свои основные функции (порты ввода/вывода). Номинальная частота генератора 4 МГц.

Данный генератор имеет встроенную функцию калибровки, которая осуществляется с помощью регистра OSCCAL.

Данная система тактирования используется в системах, не связанных с отсчетом точных промежутков времени.

Достоинства: отсутствие дополнительных элементов систем (стоимость, технологичность), все порты ввода/вывода используются по назначению.

Недостатки: невысокая стабильность частоты.

Модуль сброса (система сброса).

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

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

В данном МК различают следующие виды сброса:

а)Сброс по включению питания ( модуль POR).

б)Сброс по сигналу -MCLR в нормальном режиме работы

в)Сброс по сигналу -MCLR в SLEEP режиме

г)Сброс от WDT в нормальном режиме работы и в режиме sleep.

д)Сброс по снижению напряжения питания (модуль BOD)

При всех видах сброса (кроме сброса от WDT в режиме sleep)

Большинство регистров сбрасываются в начальное состояние при всех видах сбросов (кроме сброса WDT в SLEEP режиме sleep) производится переход в начальное состояние всех регистров и загрузка счетчика команд адреса FFFF. При сбросе сторожевого таймера в режиме sleep, который рассматривается как возобновление нормальной работы, состояние регистров не изменяется.

 

Внешний сброс -MCLR

Имеет внешнюю линию МК систему внутренних фильтров, не пропускающий короткие импульсы (минимум 4 цикла). Активным является 0, нормальная работа МК осуществляется при MCLR=1. Напряжение на выводе -MCLR большее, чем указано в электрических спецификациях, может привести к сбросу МК и большому току вывода. Стандартная схема подключения системы сброса:

 

R1 – токозадающий резистор. R1=UvDD /~1mA.

Для эффективного сброса системы после всех переходных процессов можно использовать дополнительную емкость С1. В этом случае время включения МК зависит от постоянной времени цепи. В большинстве МКС MCLR можно отключить с помощью бита конфигурации MCLRE.

 

Сброс по включению питания (режим POR)

Интегрированная схема POR удерживает микроконтроллер в состоянии сброса, пока напряжение VDD не достигнет требуемого уровня (аналоговый компаратор).

Когда микроконтроллер переходит в режим нормальной работы из состояния сброса, рабочие параметры (напряжение питания, частота и т.д.) должны соответствовать номинальным. В случае, если они не удовлетворяют требованиям, микроконтроллер находится в состоянии сброса.

Дополнительно с ним работают 2 модуля: модуль включения таймера (PWRT) и таймер запуска генератора (OSC).

Таймер включения питания обеспечивает задержку в 72мс (номинальное значение) по сигналу схемы сброса POR или BOR. Таймер включения питания работает от внутреннего RC генератора и удерживает микроконтроллер в состоянии сброса по активному сигналу от PWRT. Задержка PWRT позволяет достигнуть напряжению vdd номинального значения.

Таймер запуска генератора обеспечивает задержку в 1024 такта генератора (вход OSC1) после окончания задержки от PWRT (если она включена). Это гарантирует, что частота кварцевого/керамического резонатора стабилизировалась. Задержка OST включается только в режимах HS, XT и LP тактового генератора после сброса POR или выхода микроконтроллера из режима SLEEP.

Детектор пониженного напряжения питания BOD

Микроконтроллеры PIC12F675 имеют интегрированную схему сброса по снижению напряжения питания. В случае, если напряжение vdd опускается ниже vbor на время большее (или равное) tbor то происходит сброс по снижению напряжения питания.

Уровень напряжения питания может задаваться аппаратно-программными средствами с помощью дополнительных битов BG0, BG1, которые характеризуют 4 уровня:

 

По умолчанию уровень сброса равен 2.4 В.

При любом виде сброса микроконтроллер находится в состоянии сброса, пока напряжение vdd не будет выше vbor- После нормализации напряжения питания микроконтроллер находится в состоянии сброса еще 72мс, если -PWRTE=0.

Если напряжение питание vdd стало ниже vbor во время работы таймера по включению питания, микроконтроллер возвращается в состояние сброса BOR, а таймер инициализируется заново. Каждый переход напряжения питания vdd через границу vbor инициализирует PWRT , создавая задержку в 72мс. При включении схемы BOD всегда нужно включать таймер PWRT.

Последовательность удержания микроконтроллера в состоянии сброса

При включении питания выполняется следующая последовательность удержание микроконтроллера в состоянии сброса:

1)сброс POR.

2)сброс модуля BOD

3)аппаратный сброс линии MCLR (если обеспечена времязадающая цепь).

4)задержка PWRT и задержка OST.

Полное время задержки изменяется в зависимости от режима работы тактового генератора и состояния бита -PWRTE.

Если сигнал -MCLR удерживается в низком уровне достаточно долго (дольше времени всех задержек), после перехода -MCLR в высокий уровень программа начнет выполняться немедленно, что может быть полезно при одновременном запуске нескольких микроконтроллеров, работающих параллельно.

Для отслеживания вида сброса МК содержит 4 информационных бита:

1)TO/PD (регистр STATUS) – определяют сброс от сторожевого таймера или линии MCLR.

2) POR, BOD (регистр PCON) –флаги сброса МК.

Бит BOD имеет неопределенное значение после сброса по включению питания. Для определения сброса по снижению напряжения питания пользователь должен программно установить этот бит в 1 и проверять его программно при возникновении сброса МК.

Бит POR аппаратно сбрасывается в 0, при возникновения сброса от модуля POR.

 

Сторожевой таймер WDT

Встроенный сторожевой таймер WDT работает от отдельного RC генератора, не требующего внешних компонентов. Это позволяет работать сторожевому таймеру WDT при выключенном тактовом генераторе (выводы OSC1, OSC2) в SLEEP режиме микроконтроллера. Структурная схема данного генератора непосредственно связана со схемой TMR0.

WDT имеет номинальное время переполнения 18мс (без предделителя). Если требуется большее время переполнения WDT, необходимо программно подключить предделитель в регистре OPTION_REG с коэффициентом деления от 1:2 до 1:128. С включенным предделителем время переполнения может достигать 2.3с.

WDT обеспечивает сброс в 2-х режимах работы:

1)в режиме нормальной работы – происходит обнуление всех регистров и переход выполнения программы на нулевой адрес. Для корректного выполнения программного модуля необходимо в теле программы устанавливать команды сброса сторожевого таймера, что не позволяет организовывать сброс программы в неопределенное время.

2)в режиме энергосбережения – при формировании сброса происходит запуск основного тактового генератора и выполнении следующей команды: CLRWDT – команда очистки сторожевого таймера, а также бит управления регистра конфигурации. Для контроля сброса используется признак регистра STATUS.

 

Модуль формирования режима энергосбережения

Предназначен для уменьшения суммарного энергопотребления системы. При переходе в режим энергосбережения выполняются следующие биты:

--Сторожевой таймер WDT сбрасывается, но продолжает работать

--В регистре STATUS бит -PD сбрасывается в '0'

--Бит -ТО устанавливается в «1»

--Тактовый генератор микроконтроллера выключен

--Порты ввода/вывода остаются в том же состоянии, что и до выполнения команды SLEEP (высокий уровень, низкий уровень, третье состояние).

--Периферийные модули, работа которых связана с системной тактовой частоты, отключаются, а работа которых связана асинхронно, продолжают работать (TMR1 в асинхронном режиме, компаратор, АЦП в режиме LP генератора).

Для снижения энергопотребления в SLEEP режиме все каналы ввода/вывода должны быть подключены к vdd или VSS при отсутствии токов из внешней схемы. Данный режим позволяет уменьшить энергопотребление систему в 1000 раз (до 1 мкА).

Выход из режима энергосбережения возможен по однмоу из следующих событий:

1)Внешний сброс по сигналу на входе -MCLR;

2)Переполнение сторожевого таймера WDT (если он разрешен);

3)Периферийное прерывание (по сигналу INT, изменение уровня сигнала на входах GPIO и др.).

Внешний сброс по сигналу -MCLR вызывает сброс микроконтроллера и выполнение программы начинается с 0-го адреса. Два других события вызывают продолжение выполнения программы. При переполнении сторожевого таймера выполнение программы выполняется со следующей команды после команды sleep.

При периферийном прерывании выполнение программы возможно 2-мя способами:

1)Общее и частное прерывание разрешено. Программа выполнит следующую команду после выхода из режима sleep и перейдет на адрес-вектор 004. После выхода из подпрограммы основная программа выполняется последовательно в установленном режиме.

2)При запрете на прерывание. Флаг события вызывается выход из режима sleep и программа выполняется последовательно в соответствием с основным модулем.

При выходе из режима sleep происходит аппаратный сброс сторожевого таймера, независимо от источника сброса.

Виды прерываний:

--внешнее прерывание по сигналу INT

--от таймера TMR1 в режиме асинхронного счетчика

--от компаратора

 

Дополнительные модули

1)Модуль защиты памяти программ и данных (CP и CPD)

Обеспечивает защиту памяти программ и EEPROM память данных соответственно от считывания (просмотра) содержимого с помощью аппаратных средств (программатора). Предназначены для защиты авторских прав разработчиков систем.

2)модуль идентификаторов

Представляет собой 4 ячейки памяти программ для хранения специальных идентификаторов для хранения вспомогательной информации о разрабатываемом устройстве. Данные ячейки недоступны программе МК, читается/изменяется при программировании самой системы (используется только 4 младших бита каждой ячейки).

3) модуль последовательного программирования

Обеспечивает возможность загрузки и просмотра программного модуля МК с помощью последовательного интерфейса. Для организации программирования используются 5 линий:

а)ISCPDAT – линия последовательных данных

б)ICSPCLK – линия синхронизации

в)VPP – напряжения программирования

г)GND, VDD - работа цифровых модулей МК

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

МК переходит в режим программирования при удержании выходов GP0, GP1 в нулевом состоянии во время перехода сигнала на MCLR от 0 к 1. После данного события линия GP0 становится тактовым входом, GP1 – входом данных, также счетчик команд сбрасывается в 0 и можно передавать 6-разрядную команду. В зависимости от команд можно записывать или читать 14-разрыдные данные в/из МК.

Линии, используемые для программирования, одновременно используются для выполнения основных задач в системе и не влияют друг на друга.