Каталог статей

Главная » Статьи » Мои статьи

Портирование приложений с семейства PIC18 на семейство PIC24F - Часть 2a

1.5. Сброс и старт

Система сброса семейства PIC24F может быть рассмотрена как расширенная система сброса PIC18:

- сброс по включению питания (POR - Power-On Reset);

- сброс по снижению напряжения питания (BOR - Brown-out Reset);

- внешний сброс по выводу /MCLR;

- программный сброс (инструкция RESET);

- сброс по переполнению сторожевого таймера (WDT - Watch-Dog Timer);

- неустранимая ошибка стека (переполнение или опустошение).

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

Таблица 9. Основные различия источников сброса и процедуры старта семейств PIC18 и PIC24F

ПараметрPIC18PIC24F
Источники сбросаPOR, BOR, /MCLR, программный сброс, ошибка стека, сторожевой таймер
Дополнительные источники сбросаОшибка четности в слове конфигурации (PIC18FxxJ)Неверный код инструкции, неинициализированные рабочие регистры, ошибка четности в слове конфигурации, конфликт исключений
Конфигурация сброса по снижению напряжения питания (BOR)Конфигурируется, программный доступ в большинстве устройствПривязана к регулятору на кристалле
Сброс по ошибке стекаСброс Немаскируемое исключение
Состояние регистров специального назначения после сброса*Зависит от источника сбросаНе зависит от источника сброса
Таймер старта по включению питанияКонфигурируетсяПривязано к регулятору на кристалле

* за исключением RCON и OSCCON
1.5.1. Подробный отчет об источнике сброса

В микроконтроллерах PIC18 для отчета о причине сброса используется 7 битовых флагов, 5 из которых находятся в регистре RCON, и 2 - в регистре STKPTR (флаги ошибки стека). Микроконтроллеры PIC18 из семейства NanoWatt так же имеют контрольный бит SBOREN, состояние которого так же может косвенно говорить об источнике сброса. Все флаги в регистре RCON сбрасываются при возникновении события. Если флаг установлен, сброс произошел по другой причине. Проверка указанного набора флагов позволит судить приложению о точной причине сброса.

В семействе PIC24F для отчета о причине сброса используется 12 флагов, 11 из которых расположены в регистре RCON, и один (STKERR) - в регистре INTCON1. Каждый бит регистрирует одну из причин сброса. В дополнении к этому введены раздельные флаги режимов SLEEP и IDLE. В отличие от PIC18 флаги источников сброса устанавливаются при возникновении события.

Различия во флагах регистра RCON, индицирующих причину сброса для семейств PIC18 и PIC24F отмечены в Таблице 10. В Таблицах 11 и 12 указаны состояния флагов после событий сброса для семейств PIC24F и PIC18 соответственно.

Таблица 10. Основные различия флагов, индицирующих причину сброса для семейств PIC18 и PIC24F

Причина сбросаФлаги PIC18Флаги PIC24F
Внешний сброс по выводу /MCLR-EXTR
Программный сброс (инструкция RESET)/RISWR
Сброс по включению питания (POR)/PORPOR
Сброс по снижению напряжения питания (BOR)/BORBOR
Сброс по переполнению сторожевого таймера (WDT reset)/TOWDTO
Сброс при конфликте исключений-TRAPR
Неизвестный машинный код инструкции или не инициализированные рабочие регистры-IOPUWR
Ошибка четности слова конфигурации- CM
Режим SLEEP/PDSLEEP
Режим IDLE/PDIDLE
Переполнение стекаSTKFULSTKERR*
Опустошение стекаSTKUNFSTKERR*

* Событие вызывает аппаратное немаскируемое исключение, а не сброс

Таблица 11. Состояние отчетных флагов после сброса в семействе PIC24F

СобытиеСчетчик программ PCTRAPRIOPUWREXTRSWRWDTOSLEEPIDLECMBORPORSTKERR
Сброс по включению питания (POR)0x000000000Н010
Программный сброс (инструкция RESET)0x000001000Н000
Сброс по снижению напряжения питания (BOR)0x000000000Н100
Внешний сброс /MCLR:
- в нормальном режиме
- в IDLE режиме
- в SLEEP режиме

0x00

0

0

1

0

0

0

0

Н

0

0

0
PC + 20010001Н000
PC + 20010010Н000
Сброс по WDT:
- в нормальном режиме
- в IDLE режиме
- в SLEEP режиме

0x00

0

0

0

0

1

0

0

Н

0

0

0
PC + 20000101Н000
PC + 20000110Н0
0
Сброс по переполнению стека**0x000000000Н001
Сброс по опустошению стека**0x000000000Н001
Сброс при конфликте исключений0x001000000Н000
Неизвестный машинный код инструкции или не инициализированные рабочие регистры0x000100000Н000
Ошибка четности слова конфигурации0x00ННННННН1ННН
Переход на вектор прерывания:
- из режима IDLE
- из режима SLEEP

***

0

0

0

0

0

0

1

Н

0

0

0
***0000010Н000
Режим IDLE (инструкция PWRSAV 1)PC + 20000001Н000
Режим SLEEP (инструкция PWRSAV 0)PC + 20000010Н000

Н = состояние не изменяется

** В микроконтроллерах семейства PIC24F ошибка стека вызывает немаскируемое исключение.
*** Счетчик программ PC загружается значением PC + 2, если приоритет прерывания меньше, чем текущий приоритет ядра, или значением вектора прерывания, если приоритет прерывания выше текущего приоритета ядра

Таблица 12. Состояние отчетных флагов после сброса в семействе PIC18

СобытиеСчетчик программ PCRCONSTKPTR
SBOREN*~RI~TO~PD~POR~BORSTKFULSTKUNF
Сброс по включению питания (POR)0x0011110000
Сброс по снижению напряжения питания (BOR)0x00Н**111Н0НН
Программный сброс (инструкция RESET)0x00Н**0НННННН
Внешний сброс /MCLR:
- в режиме Primary RUN
- в режиме Secondary RUN или RC RUN
- в IDLE или SLEEP режимах

0x00

Н**

Н

Н

Н

Н

Н

Н

Н
0x00Н**Н1ННННН
0x00Н**Н10НННН
Сброс по WDT:
- в нормальном режиме
- в IDLE или SLEEP режиме

0x00

Н**

Н

0

Н

Н

Н

Н

Н
PC + 2Н**Н00НННН
Сброс по переполнению стека (STVREN = 1)0x00Н**ННННН1Н
Сброс по опустошению стека (STVREN = 1 или 0)0x00Н**НННННН1
Выход по прерыванию из энергосберегающих режимовPC + 2 ***Н**НН0НННН

Н = состояние не изменяется

* Бит SBOREN не реализован в устройствах PIC18FxxJ и первых кристаллах с технологией NanoWatt
** Равен 1 при сбросе по включению питания и не изменяется при других источниках сброса, если программно разрешен сброс по снижению напряжения питания (конфигурационные биты BOREN1:BOREN0 = 01 и SBOREN = 1). В противном случае равен 0 при сбросе
*** При разрешении прерывания программный счетчик PC загружается адресом вектора прерывания
1.5.2. Дополнительные источники сброса в архитектуре PIC24F

В дополнении к источникам сброса, которые присутствуют и в микроконтроллерах PIC18, PIC24F имеет три дополнительных источника сброса:

IOPUWR: Сброс происходит при выборке команды с неизвестным машинным кодом (например, счетчик команд PC указывает на часть Flash памяти, в которой хранятся пользовательские константы). Так же этот вид сброса происходит при использовании неинициализированных W регистров в качестве указателей.

CM: Сброс производится если данные в конфигурационном слове не соответствуют его положению во Flash памяти (например, слово CON1 записано по адресу CON2), либо при ошибке четности конфигурационного слова.

TRAPR: Сброс производится при конфликте исключений, т.е. при возникновении второго исключения в то время, пока не обработано первое.

Эти источники сброса не имеют эквивалентов в архитектуре PIC18.

1.5.3. Ошибки стека

В микроконтроллерах PIC18 при возникновении переполнения или опустошения стека происходит полный сброс, если установлен конфигурационный бит STVREN. Даже если прерывание по ошибке стека запрещено, счетчик команд PC сбрасывается на ноль. В зависимости от вида ошибки (переполнение, опустошение) устанавливаются сигнальные флаги STKFUL или STKUNF.

В микроконтроллерах PIC24F ошибка стека вызывает программное исключение (soft trap), при этом в счетчик команд PC загружается адрес вектора обработчика этого исключения - 0x000A. Следует заметить, что ошибки переполнения и опустошения стека имеют один вектор прерывания и один сигнальный бит STKERR. Более подробно программные и аппаратные исключения архитектуры PIC24F будут рассмотрены в п. 1.6.2 "Немаскируемые исключения".

1.5.4. Конфигурация сброса по снижению напряжения питания (BOR)

В микроконтроллерах PIC18 сброс BOR может быть разрешен или запрещен, а порог напряжения питания, при котором производится сброс, программируется в конфигурационном слове битами BORV1:BORV0. Новые микроконтроллеры PIC18 из семейства NanoWatt имеют возможность программной конфигурации BOR-сброса в режиме выполнения кода.

В микроконтроллерах PIC24F логика сброса по снижению напряжения питания объединена со стабилизатором напряжения ядра, расположенного на кристалле. Сброс BOR всегда активирован, если включен стабилизатор, а порог сброса лежит в пределах 2.35 - 2.60 В. Возможность семейства PIC24F обеспечивать максимальную производительность во всем диапазоне питающего напряжения делает конфигурацию BOR ненужной, в то время как для семейства PIC18 это необходимо (максимальная производительность, а точнее частота тактирования, зависит от напряжения питания). Следует заметить, что микроконтроллеры PIC18FxxJ имеют схему BOR сброса, аналогичную PIC24F.

1.5.5. Состояние регистров специального назначения (SFR) после сброса

В микроконтроллерах PIC18 после сброса регистры специального назначения могут находиться в двух различных состояниях в зависимости от причины сброса. После сбросов по включению питания (POR) и снижению напряжения питания (BOR) регистры специального назначения находятся в первом состоянии. После всех остальных причин сброса регистры специального назначения находятся во втором состоянии. В зависимости от назначения регистра его значение в двух состояниях после сброса может быть одинаковым, однако для большинства регистров оно различно.

В микроконтроллерах PIC24F после любого вида сброса регистры специального назначения переходят в одно состояние по умолчанию, в зависимости от назначения регистра. Исключением являются регистры RCON и OSCCON. Состояние первого определяется причиной сброса, второго - словом конфигурации.

Для микроконтроллеров PIC18 определено состояние регистров специального назначения после выхода из энергосберегающего режима по переполнению сторожевого таймера. Для большинства регистров это состояние соответствует выходу из энергосберегающего режима по внешнему событию (wake-up event). Для микроконтроллеров семейства PIC24F состояние регистров SFR не меняется при выходе из энергосберегающего режима. За более подробной информацией можно обратиться к [1].

1.5.6. Задержка старта после сброса

В микроконтроллерах PIC18 присутствует специальный таймер с фиксированным периодом, задерживающий контроллер в состоянии сброса после подачи питания. Период таймера TPWRT выбран таким образом, чтобы все периферийные модули успели инициализироваться, а регистры специального назначения перейти в требуемое состояние. Таймер, задерживающий запуск микроконтроллера, может быть включен или выключен установкой бита в конфигурационном слове. В зависимости от выбранного источника тактирования и использования PLL к периоду таймера добавляется некоторое время, которое требуется для запуска генератора и установления петли ФАПЧ.

Для микроконтроллеров PIC24F время удержания в сбросе после событий BOR или POR зависит от конфигурации стабилизатора напряжения ядра. Если стабилизатор выключен, время удержания в сбросе равно TSTARTUP = TPWRT. Если стабилизатор включен - время удержания в сбросе равно TVREG. Интервал TPWRT фиксирован и составляет 64 мс, что сравнимо с задержкой старта семейства PIC18. Время TVREG составляет 10 мкс. Этого достаточно для запуска регулятора и стабилизации напряжения ядра. В дополнении к этому при сброшенном бите VREGS (RCON<8>) к интервалу задержки добавляется дополнительное время, которое требуется для запуска и стабилизации генератора и установления петли ФАПЧ, если используется умножение тактовой частоты.

1.5.7. Дополнительные возможности

Многие микроконтроллеры PIC18 с поддержкой технологии NanoWatt позволяют конфигурировать вывод внешнего сброса /MCLR как порт общего назначения (только на вход). Функция вывода /MCLR определяется битом конфигурации MCLRE.

В микроконтроллерах PIC24F вывод /MCLR не может выполнять функции вывода общего назначения и всегда является выводом внешнего сброса.

1.5.8. Рекомендации по портированию приложения

Для приложений, в которых необходимо определять источник сброса, часть кода, отвечающая за опрос флагов сброса, должна быть изменена. Флаги причин сброса в PIC24F аналогичны флагам в PIC18, однако их больше, и они имеют несколько другие причины установки. В PIC24F нет необходимости проверять все флаги с целью принятия решения о причине сброса - для большинства ситуаций достаточно определить, какой флаг установлен. Следует помнить, что в PIC18 флаги сброса имеют активную величину 0, в то время как в PIC24F - 1.

В микроконтроллерах PIC24F время удержания микроконтроллера в сбросе будет больше, если не используется внутренний стабилизатор напряжения ядра. Если же стабилизатор напряжения ядра используется, то автоматически включается функция сброса по снижению напряжения питания (BOR).

Внимание: внутренний стабилизатор напряжения ядра не предназначен для питания внешних устройств! Микроконтроллер может быть поврежден при превышении тока, на который рассчитан стабилизатор.

Рекомендуется для архитектур PIC18 и PIC24F подтягивать вывод внешнего сброса /MCLR к шине VDD резистором с номиналом 1 кОм. В случае нештатных ситуаций он ограничит ток, втекающий в вывод /MCLR. При этом система может остаться частично работоспособной даже при физическом повреждении драйверов других портов.

Категория: Мои статьи | Добавил: MAS (25.11.2012)
Просмотров: 502 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Категории раздела
Мои статьи [51]
Справочные данные [165]
Справочные данные
Наш опрос
Оцените мой сайт
Всего ответов: 30
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Баннер
$$
Друзья сайта
  • Спортсменам
  • Огородникам СЮД(А
  • Строим вместе
  • Мир развлечений
  • Кто хочет похудеть
  • Здоровье у нас одно
  • Юмор
  • Кулинарные рецепты
  • Картинки_Заставки_Демотивоторы
  • Семья
  • Кто на мальчишник
  • Металлообработка
  • Кто на девишник
  • Блоки питания
  • Смерть соседям
  • Радиомедведь
  • Кибермедведь
  • Радиосайт
  • Деревообработка
  • Поиск