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

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

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

1.6. Контроллер прерываний

Функции контроллера прерываний ядра PIC24F значительно расширены по сравнению с семейством PIC18. Увеличено количество векторов прерываний, количество уровней приоритета, добавлены аппаратные и программные исключения (trap). Сравнение контроллеров прерываний архитектур PIC18 и PIC24F приведено в Таблице 13.

Таблица 13. Сравнение контроллеров прерываний семейств PIC18 и PIC24F

ПараметрPIC18PIC24F
Уникальный бит разрешения и флаг для каждого источника прерываниядада
Глобальное разрешение прерыванийдада
Программно сбрасываемые флаги прерыванийдада
Флаг прерывания устанавливается вне зависимости от разрешения прерываниядада
Пользовательский код может генерировать любое прерывание перифериидада
Автоматическое сохранение/восстановление контекстадада
Выход из энергосберегающих режимовдада
Доступные приоритеты прерыванийвысокий и низкий8 уровней, определяется пользователем
Время реакции на внешнее прерывание (по выводу INT или изменению значения порта PORTB)3 или 4 командных такта5 командных тактов (фиксировано)
Приоритетный выход из режимов SLEEP и IDLEнетда
Возможность запрета вложенных прерыванийнетда
Программный выбор текущего приоритета ядранетда
Векторы исключенийнетда (4 вектора)
Уникальный вектор прерывания для каждого источниканетда
Альтернативная таблица векторов прерыванийнетда
Немаскируемые прерываниянетда
Возможность запрещения прерываний на определенное количество командных тактовнетда
1.6.1. Новые возможности контроллера прерываний ядра PIC24F

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

Приоритет, задаваемый пользователем. Каждому источнику прерывания может быть задан приоритет от 0 до 7, что позволяет изменять аппаратно заданные естественные адресные приоритеты.

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

Вложенные прерывания. Использование службы приоритетов позволяет проектировать системы с большим уровнем вложенности прерываний. Вложенность может быть аппаратно заблокирована.

Программные (soft) и аппаратные (hard) исключения (traps). До восьми немаскируемых исключений с наивысшим приоритетом используются для отслеживания критических ошибок, таких как математические (деление на ноль), ошибки стека, сбой тактового генератора, ошибка выравнивания адреса программ и данных.

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

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

Все возможности и особенности контроллера прерываний ядра PIC18 так же поддерживаются в ядре PIC24F.

1.6.2. Немаскируемые исключения

В архитектуре PIC24 предусмотрено четыре немаскируемых исключения (событий, вызывающих критическую ошибку):

- ошибка декодирования адреса;

- сбой тактового генератора;

- ошибка стека;

- математическая ошибка.

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

В ядре PIC24F зарезервировано еще четыре вектора исключений, которые могут быть добавлены в следующие версии кристаллов.

Архитектура PIC18 не имеет эквивалента исключениям PIC24F. В PIC18 ошибка стека вызывает сброс контроллера.

1.6.3. Изменение имен и размещения битов

Микроконтроллеры семейств PIC24F и PIC18 имеет похожие структуры управления прерываниями. Обе архитектуры имеют набор битов разрешения прерываний, флагов прерываний и установки приоритетов прерываний (именуются как xxxIE, xxxIF и xxxIP соответственно, где xxx - мнемоника источника прерывания). Однако есть два значительных отличия.

Первое различие - использование в PIC24F трех битов установки приоритета прерывания вместо одного в PIC18. Они именуются как xxxIP2, xxxIP1, xxxIP0 и позволяют установить прерыванию приоритет от 0 до 7.

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

1.6.4. Инициализация и разрешение прерываний

Для инициализации и разрешения прерывания в семействе PIC18 необходимо:

- сбросить флаг прерывания в соответствующем регистре PIRx или INTCONx;

- установить бит разрешения прерывания в соответствующем регистре PIEx или INTCONx.

Дополнительно при необходимости:

- выбрать систему приоритетов прерываний, установив или сбросив бит IPEN (RCON<7>);

- установить приоритет прерывания в соответствующем регистре IPRx.

Для инициализации и разрешения прерывания в семействе PIC24F необходимо:

- установить бит NSTDIS (INTCON1<15>), если необходимо запретить вложенность прерываний;

- сбросить флаг прерывания в соответствующем регистре IFSx;

- установить бит разрешения прерывания в соответствующем регистре IECx.

Дополнительно при необходимости:

- установить требуемый приоритет прерывания в соответствующем регистре IPCx. Приоритет прерывания выбирается пользователем в соответствии с требованиями к ПО. Если все прерывания должны быть равных приоритетов, требуется установить биты приоритета равными для всех разрешенных прерываний. После сброса все прерывания имеют приоритет 4.

1.6.5. Запрещение пользовательских прерываний

Для запрещения всех прерываний в микроконтроллерах семейства PIC18 необходимо и достаточно сбросить бит GIE (или GIEL и GIEH, если используется приоритетная система).

Для запрещения всех прерываний в микроконтроллерах семейства PIC24 необходимо:

- поместить текущее значение регистра STATUS в программный стек, используя инструкцию PUSH;

- переключить текущий приоритет ядра на уровень 7, используя операцию побитового ИЛИ константы 0x0E и младшего байта регистра STATUS (SRL). Для разрешения прерываний необходимо восстановить значение регистра STATUS из стека, используя инструкцию POP.

Используя инструкцию DISI можно запретить прерывания с приоритетами 1-6 на фиксированное количество командных тактов.

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

Ядро PIC18 позволяет назначить прерываниям только два уровня приоритета - высокий и низкий. Контроллер прерываний PIC24F использует приоритетную модель с большим количеством уровней приоритета (доступные пользователю - от 0 до 7, аппаратно фиксированные для немаскируемых исключений - от 8 до 15). Таким образом, при портировании приложения необходимо как минимум пересмотреть назначение приоритетов используемым источникам прерываний.

В обоих семействах для выхода из обработчика прерываний используется инструкция RETFIE, однако ее действие в PIC18 и PIC24F несколько отличается. Для семейства PIC18 инструкция RETFIE устанавливает бит GIE, разрешая, таким образом, немаскированные прерывания. Так как бит GIE отсутствует в архитектуре PIC24F, при выполнении инструкции RETFIE восстанавливается предыдущий приоритет ядра в регистре STATUS.

1.7. Тактовый генератор

Система тактирования микроконтроллеров PIC24F поддерживает многие возможности системы тактирования семейства PIC18 NanoWatt, предоставляя при этом дополнительные функции. Обе архитектуры используют три основных источника тактирования: первичный генератор, внутренний RC генератор и выход внутреннего умножителя частоты на 4 с PLL. Так же оба семейства имеют опции, увеличивающие надежность и функциональность системы: программное переключение источника тактирования, определение неисправности тактового генератора (Fail-Safe Clock Monitor) и запуск с использованием двух источников тактирования (Two-Speed Start-Up). Семейство PIC24F в дополнении к этому имеет большую гибкость при конфигурации тактового генератора, программного переключения источника тактирования и использования PLL.

Несмотря на то, что большинство функций схемы тактирования PIC18 и PIC24F похожи, есть значительные различия в реализации этих функций. Так как источник тактирования является неотъемлемой частью системы, необходимо хорошо понимать эти различия для осуществления переноса приложения с PIC18 на PIC24F.

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

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

ПараметрPIC18PIC24F
Режимы первичного (внешнего) источника тактированияHS, XT, EC, LP и внешний RC*HS, XT и EC (все устройства)
Вторичный (Timer 1) генератордада (SOSC)
Внутренний RC генератор 8 МГцдада (FRC)
Внутренний RC генератор 31 кГцдада (LPRC)
Опции внутреннего умножителя на 4 с PLL:
XTPLL (MSPLL)
ECPLL
INTOSCPLL/FRCPLL

нет
только некоторые MCU
только некоторые MCU

да
да
да
Настройка внутреннего INTOSC/FRC генератораразрешение 5 бит, диапазон ±12%разрешение 6 бит, диапазон ±12%
Программное переключение источников тактированиятолько между генераторамимежду всеми возможными источниками тактирования; использование безопасного переключения
Режим дозирования (DOZE)нетда
Определение неисправности тактового генераторадада
Запуск с использованием двух источников тактированиядада

* Такой набор режимов имеют практически все устройства PIC18. В настоящее время устройства серии PIC18FxxJ имеют только режимы HS и XT первичного источника тактирования и не имеют внутреннего RC генератора.
1.7.1. Изменения по сравнению с архитектурой PIC18

Функции, впервые представленные в семействе PIC24F:

Расширенные возможности умножителя с PLL - система тактирования PIC24F позволяет полностью программно контролировать работу PLL и использовать PLL со всеми доступными типами первичного (внешнего) источника тактирования.

Режим дозирования (DOZE) - позволяет тактировать ядро и периферию разными частотами. При этом ядро может работать на более низкой частоте что позволяет экономить энергию, а периферийные модули (последовательные интерфейсы, ШИМ, АЦП) тактируются основной частотой генератора.

Функции системы тактирования PIC18 отсутствующие в архитектуре PIC24F:

- режимы LP и External RC первичного (внешнего) источника тактирования. Для замены можно использовать режимы SOSC (вторичный источник на генераторе TMR1) и FRS (внутренний RC генератор 8 МГц) соответственно.

- режим XT первичного источника тактирования присутствует, однако диапазон поддерживаемых частот отличается от PIC18 и составляет от 3.5 МГц до 10 МГц.

1.7.2. Биты управление источниками тактирования

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

Таблица 15. Отличия в битах, управляющих схемой тактирования в семействах PIC18 и PIC24F

Параметры функционированияPIC18PIC24F
Конфигурация стартового генератораFOSC3:FOSC0(CONFIG1H<3:0>)*FNOSC2:FNOSC0(CW2<10:8>)
Конфигурация типа первичного источника тактированияPOSCMD1:POSCMD0(CW2<1:0>)
Конфигурация назначения вывода OSC2 в режиме ECOSCIOFCN(CW2<5>)
Запуск вторичного генератораT1OSCEN (T1CON<3>)SOSCEN (OSCCON<1>)
Выбор постделителя внутреннего RC генератораIRCF2:IRCF0 (OSCCON<6:4>)RCDIV2:RCDIV0 (CLKDIV<10:8>)
Программное переключение источников тактированияSCS1:SCS0 (OSCCON<1:0>)NOSC2:NOSC0, OSWEN(OSCCON<10:8, 0>), FCKSM0(CW2<6>)
Мониторинг активного источника тактированияOSTS, IOFS, T1RUNCOSC2:COSC0
Разрешение запуска с использованием двух источников тактированияIESO (CONFIG1H<7>)IESO (CW2<15>)
Разрешение определения неисправности тактового генератораFCMEN (CONFIG1H<6>)FCKSM1:FCKSM0(CW2<7:6>)

* Только для устройств PIC18Fxxxx. Для выпускаемых на данный момент кристаллов PIC18FxxJ - FOSC2:FOSC0 (CONFIG2H<2:0>)
1.7.3. Первичный источник тактирования (POSC)

Первичный генератор последних версий микроконтроллеров семейства PIC18 с функциями NanoWatt поддерживает большое количество режимов работы: запуск от кварцевых и керамических резонаторов, внешних RC цепей, работа с внешним генератором (режим EC). Для запуска первичного генератора необходимо подсоединить резонатор или RC цепочку к выводам OSC1 и OSC2 или подать внешнюю тактовую частоту на вывод OSC1. Для того чтобы генератор запустился и потреблял минимальную энергию, режим работы должен быть правильно установлен битами FOSC3:FOSC0 в конфигурационном слове.

Первичный генератор микроконтроллеров PIC24F поддерживает почти все режимы работы, присутствующие в PIC18 NanoWatt за исключением режима LP (внешний низкочастотный резонатор, низкое потребление) и использования внешней RC цепочки. Вместо этих режимов рекомендуется применять вторичный генератор и внутренний RC генератор 8 МГц, что не повлияет на гибкость системы.

Режим работы первичного генератора задается битами FNOSC2:FNOSC0 и POSCMD<1:0> конфигурационного слова. Так же как и в семействе PIC18 режим работы должен соответствовать реально используемой резонансной цепи для обеспечения устойчивой работы и минимального потребления.

1.7.4. Вторичный источник тактирования (SOSC)

Семейство PIC18 имеет возможность использовать генератор таймера TMR1 в качестве вторичного источника тактирования. Обычно этот генератор используется с низкочастотным часовым резонатором 32 кГц, подключенным к выводам TOSC1 и TOSC2, для реализации часов реального времени. Генератор управляется программно с помощью бита T1OSCEN (T1CON<3>).

Система тактирования семейства PIC24F так же предусматривает вторичный источник тактирования, идентичный PIC18. Различие только в том, что он управляется программно с помощью бита SOSCEN в регистре OSCCON. Выводы для подключения резонатора имеют названия SOSCI и SOSCO.

Вторичный источник тактирования SOSC в семействе PIC24F можно использовать вместо режима LP первичного источника в семействе PIC18. Для использования вторичного источника по умолчанию после сброса контроллера необходимо корректно установить биты конфигурации FNOSC2:FNOSC0 и разрешить функционирование генератора установкой бита SOSCEN.

1.7.5. Внутренние RC генераторы (FRC и LPRC)

Внутренние RC генераторы семейств PIC18 и PIC24F идентичны с точки зрения функционирования, однако имеют разные названия. Обе архитектуры имеют два независимых внутренних RC генератора - экономичный низкочастотный 31 кГц и высокостабильный калиброванный 8 МГц. Обе архитектуры содержат делитель частоты высокочастотного 8 МГц генератора, позволяющий получить сетку частот тактирования от 31 кГц до 4 МГц (включая 8 МГц при отключенном делителе). И PIC18 и PIC24F позволяют программно переключаться между генераторами, а так же программно подстраивать высокочастотный генератор в диапазоне ±12% от центральной частоты.

Различия в реализации внутренних RC генераторов PIC18 и PIC24F минимальны. Для семейства PIC18 внутренние RC генераторы названы INTOSC и INTRC (31 кГц и 8 МГц соответственно). Для семейства PIC24F - LPRC и FRC (Low-Power RC - экономичный RC генератор 31 МГц и Fast RC - высокоскоростной RC генератор 8 МГц соответственно). Для подстройки INTRC генератора в семействе PIC18 используется 5 бит, для подстройки FRC генератора в семействе PIC24F - 6 бит, что позволяет увеличить разрешение. Наконец, в семействе PIC18 делитель INTRC генератора по умолчанию установлен так, что частота тактирования при старте контроллера составляет 1 МГц, а в семействе PIC24F - 4 МГц.

1.7.6. Умножитель частоты с ФАПЧ (PLL)

Оба семейства PIC18 и PIC24F имеют в составе системы тактирования умножитель на 4 с петлей ФАПЧ, предназначенный для получения высокой тактовой частоты. В обоих случаях генерация на выходе умножителя стабильна только в диапазоне входной частоты от 4 МГц до 10 МГц. Реализация и функционирование умножителя PIC24F значительно отличается от PIC18.

Для большинства микроконтроллеров PIC18 с поддержкой технологии NanoWatt использование умножителя тактовой частоты с первичным генератором (как правило, только в режиме HS, в последних кристаллах возможно использование умножителя с режимом EC) задается в слове конфигурации, и умножитель не может быть отключен программно. Если умножитель используется с внутренним RC генератором (только для частот 4 МГц и 8 МГц), то он может быть программно подключен и отключен с помощью бита PLLEN (OSCTUN<6>).

В семействе PIC24F умножитель управляться полностью программно. Данная возможность реализована для всех режимов работы первичного источника тактирования и внутреннего RC генератора (если частота на выходе не меньше 4 МГц). Для использования умножителя достаточно переключить PLL в требуемый режим и дождаться установки флага стабильности частоты на выходе умножителя LOCK (OSCCON<5>).

1.7.7. Переключение источников тактирования

Методы переключения источников тактирования в семействах PIC18 и PIC24F значительно различаются. Концептуально оба семейства имеют три категории генераторов: первичный (внешние компоненты подключены к выводам OSC), вторичный (внешние компоненты подключены к выводам T1OSC или SOSC) и внутренний RC генератор. Семейство PIC18 позволяет определить только один из режимов первичного генератора в слове конфигурации (см. п. 1.7.3 "Первичный источник тактирования (POSC)"), который всегда используется для тактирования микроконтроллера после подачи питания и любого сброса. Только после этого устройство может программно выбрать вторичный источник тактирования или RC генератор, используя биты SCS1:SCS0. Режим первичного тактового генератора, используемый для начального запуска, не может быть изменен программно без перепрограммирования слова конфигурации.

Для микроконтроллеров PIC24F в качестве стартового может быть выбран любой источник тактирования: первичный, вторичный или RC - пользователь теперь не привязан к первичному источнику тактирования. Во время выполнения программы любой из источников тактирования может быть выбран программно. Кроме того, возможно программное включение и отключение умножителя с PLL.

Такие возможности позволяют использовать вторичный генератор или LPRC генератор в качестве стартового после сброса, а не переключаться на него программно после начала работы на первичном генераторе, как это требовалось в PIC18 NanoWatt. Возможно полное отключение первичного генератора для экономии энергии, что невозможно в PIC18.

Более гибкие возможности переключения источников тактирования требуют более сложных действий для выполнения этой задачи. Новый генератор выбирается с помощью битов NOSC2:NOSC0 и установкой бита разрешения переключения OSWEN. Для защиты от случайного переключения микроконтроллеры PIC24F используют метод разрешения переключения путем записи специальной последовательности констант в регистр OSCCON. Переключение источника тактирования будет завершено, когда бит NOSC совпадет с битом COSC, или бит OSWEN будет сброшен. Более подробная информация по переключению источников тактирования приведена в документации на семейство PIC24F [1].

1.7.8. Запуск с использованием двух источников тактирования

Возможности запуска с двумя источниками тактирования в семействах PIC18 и PIC24F идентичны. В обоих случаях функция контролируется битом IESO в слове конфигурации.

1.7.9. Определение неисправности тактового генератора

Функция определения неисправности тактового генератора в микроконтроллерах PIC24F контролируется битами FCKSM1:FCKSM0 в слове конфигурации. Реализация режима идентична PIC18 - в обоих семействах при остановке первичного генератора микроконтроллер переключается на тактирование от внутреннего RC-генератора. Единственное различие - событие, происходящее после переключения генератора. Для микроконтроллеров PIC18 при остановке первичного генератора устанавливается флаг прерывания OSCFIF и, если прерывание разрешено, в программный счетчик загружается адрес вектора прерывания. Для микроконтроллеров PIC24F устанавливается флаг CF (OSCCON<3>) и флаг OSCFAIL (INTCON1<1>), а так же генерируется немаскируемое аппаратное исключение. Для выхода из обработчика исключения необходимо сбросить установленный флаг.

1.7.10. Портирование типового приложения

При портировании большинства приложений с семейства PIC18 NanoWatt на PIC24F можно использовать те же источники и частоты тактирования в случае, если первичный генератор работает в режиме HS или XT (используя резонатор с частотой от 3.5 до 10 МГц), или если используется внутренний RC генератор.

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

Для портирования приложений, в которых используется внешний RC генератор или режим XT с частотой резонатора меньше 3.5 МГц, необходимо использовать внутренний FRC генератор. Биты конфигурации должны быть установлены таким образом, чтобы FRC генератор являлся стартовым при сбросе контроллера.

Если используется программное переключение тактовых генераторов, необходимо изменить функцию переключения, добавив запись защитной разблокирующей последовательности (см. п. 1.7.7 "Переключение источников тактирования").

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

При портировании любого приложения необходимо внимательно пересмотреть исходный код, отвечающий за тактирование микроконтроллера. Необходимо выбрать корректный режим работы тактового генератора, чтобы избежать сбоев и повышенного потребления.

1.8. Режимы пониженного энергопотребления

Режимы пониженного энергопотребления микроконтроллеров PIC18 и PIC24F практически полностью соответствуют в плане функциональности. Оба семейства допускают программное переключение источников тактирования, режимы IDLE и SLEEP, выход из режимов пониженного энергопотребления по прерыванию или событию сброса. Однако реализация этих функций в PIC24F несколько отличается от PIC18. Кроме того, добавлены дополнительные методы, увеличивающие гибкость системы и позволяющие значительно снизить среднее потребление энергии. Сравнение режимов пониженного потребления для микроконтроллеров PIC18 и PIC24F приведено в Таблице 16.

Замечание: здесь и далее до конца пункта 1.8 под термином "семейство PIC18" будут подразумеваться микроконтроллеры с поддержкой технологии NanoWatt.

Таблица 16. Сравнение возможностей режимов пониженного энергопотребления семейств PIC18 и PIC24F

РежимPIC18PIC24F
Программное переключение источников тактированиядада
Переход в режим пониженного энергопотребленияинструкция и установка служебного битаинструкция с аргументом
Режим IDLE
отдельно для каждой периферии
да
нет
да
да
Режим SLEEPдада
Режим DOZEдада
Полное отключение периферийных модулей (PMD Option)нетда
1.8.1. Программное переключение источников тактирования

Семейства PIC18 и PIC24F имеют одинаковые типы источников тактирования (первичный, вторичный и внутренний RC генератор). Режимы SLEEP и IDLE так же реализованы подобным образом. Различие присутствует только в терминологии. Так как PIC24F обеспечивает более гибкое переключение источников тактирования, названия энергосберегающих режимов PIC18 (PRI_RUN, SEC_IDLE, и т. п.) не используются. Однако полностью эквивалентные режимы так же доступны в PIC24F. Например, программная конфигурация битов NOSC2:NOSC0 для переключения на внутренний FRC генератор эквивалентна переключению в режим RC_RUN в семействе PIC18.

В семействе PIC18 переключение источников тактирования осуществляется с помощью конфигурации битов SCS1:SCS0 (OSCCON<1:0>). Для устройств PIC24F переключение источников тактирования осуществляется записью необходимого значения в биты NOSC2:NOSC0 совместно с процедурой записи защитной последовательности в OSCCON (см. п. 1.7.7 "Переключение источников тактирования"). Кроме того, в PIC24F возможность переключения тактовых источников может быть аппаратно запрещена установкой бита FCKSM1 в конфигурационном слове CW2.

Функционально переключение источников тактирования в PIC18 и PIC24F осуществляется аналогично с временными задержками одного порядка.

1.8.2. Режимы SLEEP и IDLE

Для перехода в режимы IDLE (x_IDLE) и SLEEP в семействе PIC18 используется инструкция SLEEP. Режим определяется значением бита IDLEN (OSCCON<7>): SLEEP - если бит сброшен, и IDLE - если бит установлен.

Эквивалентная инструкция в семействе PIC24F - PWRSAV. Инструкция используется с аргументом (константой), определяющим, в какой режим энергосбережения переходит микроконтроллер. Если аргумент равен '1' - переход осуществляется в режим IDLE, если аргумент равен '0' - переход осуществляется в режим SLEEP.

1.8.3. Выборочное отключение периферии в режиме IDLE

В микроконтроллерах PIC18 невозможно отключение работающих периферийных модулей в режиме IDLE.

В семействе PIC24F большинство периферийных модулей может быть отключено в режиме IDLE. Для управления функцией используется бит xxxIDL (xxx - мнемоника периферийного модуля), состояние которого определяет, будет ли периферийный модуль автоматически частично отключен в режиме IDLE или будет продолжать работу. Эта функция позволяет значительно снизить потребление в критичных приложениях.

1.8.4. Выход из режимов энергосбережения

Выход из режимов энергосбережения в семействах PIC18 и PIC24F может осуществляться по разрешенному прерыванию или по сбросу. Сброс по переполнению сторожевого таймера WDT или прерывание выводит микроконтроллер из режима энергосбережения, при этом контроллер будет тактироваться от источника, используемого при входе в режим. Все остальные события переключают источник тактирования на внутренний тактовый генератор RC 8 МГц, если разрешен режим запуска с использованием двух источников, до тех пор, пока частота первичного генератора не стабилизируется.

1.8.5. Режим дозирования (DOZE)

Функция DOZE в микроконтроллерах PIC24F позволяет значительно снизить потребление при сохранении полезного функционирования приложения. В режиме DOZE ядро микроконтроллера тактируется уменьшенной тактовой частотой, в то время как периферийные модули работают на частоте тактового генератора. Режим DOZE включается установкой бита DOZEN (CLKDIV<11>). Отношение частоты, которой тактируется ядро, к частоте тактового генератора выбирается с помощью битов DOZE (CLKDIV<14:12>) и может составлять от 1:128 (наиболее низкая частота тактирования ядра) до 1:1 (делитель DOZE выключен). Возможно автоматическое отключение режима DOZE при входе в прерывание, для этого необходимо установить бит ROI (CLKDIV<15>).

Семейство PIC18 не имеет режимов энергосбережения, эквивалентных DOZE в PIC24F.

1.8.6. Полное отключение периферийных модулей (PMD)

Функция полного отключения периферийных модулей позволяет уменьшить ток, потребляемый модулем, до минимальной величины. Периферийные модули, поддерживающие функцию полного отключения, имеют управляющий бит в регистре специального назначения PMD. Когда режим используется, все источники тактирования отключаются от периферийного модуля, и все регистры специального назначения, связанные с модулем, становятся недоступными. Режим PMD отличается от режима выборочного отключения в режиме IDLE, так как в последнем случае периферийный модуль частично запитан, и его регистры доступны.

Семейство PIC18 не имеет режима, аналогичного PMD в микроконтроллерах PIC24F.

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

Внутренний стабилизатор напряжения питания ядра может быть переведен в режим пониженного потребления установкой бита VREGS (RCON<8>). В этом режиме мощности внутреннего стабилизатора достаточно только для поддержания состояния ОЗУ. Если хотя бы один периферийный модуль активен, этот режим не доступен.

1.8.8. Портирование типового приложения

Для прямого портирования приложения, использующего режимы энергосбережения, с архитектуры PIC18 на PIC24F необходимо, как минимум, изменить инструкции входа в режим. При использовании переключения источников тактирования необходимо заменить обращение к битам SCS1:SCS0 на NOSC2:NOSC0, добавив защитную последовательность перехода.

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

Зависимости максимальной тактовой частоты от напряжения питания для семейств PIC18 и PIC24F значительно различаются. Семейство PIC24F имеет диапазон питающих напряжений от 2.0 В до 3.6 В, при этом максимальная производительность обеспечивается во всем диапазоне напряжений питания. Для микроконтроллеров PIC18 максимальная производительность зависит он напряжения питания прямо пропорционально. Приложения на PIC18, переключающие тактовую частоту в зависимости от напряжения питания, не требуют этой функции при переносе на PIC24F.

Примечание: микроконтроллеры семейства PIC18FxxJ имеют зависимость максимальной тактовой частоты от напряжения питания, аналогичную PIC24F.

Так как максимальное значение напряжения питания PIC24F составляет 3.6 В, большинство приложений, переносимых с PIC18, требуют аппаратной доработки.

1.9. Сторожевой таймер (WDT)

Реализация сторожевого таймера в PIC24F очень похожа на реализацию WDT в семействе PIC18. И в PIC18, и в PIC24F работа сторожевого таймера и его период задаются в слове конфигурации; реализуется выход из энергосберегающих режимов по переполнению сторожевого таймера; период и разрешение работы могут конфигурироваться программно. Однако сторожевой таймер PIC24F имеет дополнительные функции, такие как конфигурируемый предделитель и оконный режим сброса. Отличия реализации сторожевого таймера в семействах PIC18 и PIC24F приведены в Таблице 17.

Таблица 17. Основные отличия реализации сторожевого таймера в семействах PIC18 и PIC24

ФункцияPIC18PIC24F
Конфигурируемый периоддада
Программное разрешение работыдада
Выход из энергосберегающих режимов по переполнению WDTдада
Диапазон длительностей периода1 мс - 131 сек1 мс - 131 сек
Предделительнетда
Функция оконного сбросанетда
1.9.1. Общие особенности для PIC18 и PIC24F

Работа сторожевого таймера в семействах PIС18 и PIC24F может быть разрешена в слове конфигурации прибора. Для PIC24F сторожевой таймер включается / выключается битом FWDTEN (CW1<7>). Период сторожевого таймера устанавливается битами WDTPS<3:0> (CW1<4:0>) и может варьироваться от 1 мс до 131 сек. Дискретность установки периода одинакова для PIC18 и PIC24, а точность периода зависит от точности внутреннего низкочастотного RC генератора (32 кГц). При разрешении работы WDT внутренний низкочастотный RC генератор включается автоматически.

Выход из энергосберегающих режимов SLEEP и IDLE может осуществляться при переполнении сторожевого таймера. Если переполнение WDT произошло в одном из этих режимов, выполнение продолжается с инструкции, следующей за инструкцией перехода в энергосберегающий режим. Работа сторожевого таймера может быть разрешена программно установкой бита SWDTEN (RCON<5>), если она запрещена в слове конфигурации. В обоих семействах сторожевой таймер сбрасывается при выполнении микроконтроллером следующих инструкций:

- CLRWDT;

- переход в энергосберегающий режим;

- изменение частоты внутреннего RC генератора.

1.9.2. Новые особенности сторожевого таймера семейства PIC24F

Сторожевой таймер семейства PIC24F имеет предделитель, коэффициент которого (1:128 или 1:32) устанавливается битом в слове конфигурации FWPSA (CW1<4>). Для того чтобы диапазон периодов WDT соответствовал реализации сторожевого таймера в PIC18, необходимо установить бит FWPSA, выбрав коэффициент предделителя 1:128.

Функция оконного сброса (windowed WDT) разрешается битом WINDIS в конфигурационном слове. Если функция разрешена, сброс сторожевого таймера можно проводить только в последнюю четверть его периода. Сброс в любой другой момент времени вызовет сброс микроконтроллера.

1.9.3. Портирование типового приложения

Работа WDT в семействе PIC24F разрешается установкой бита FWDTEN в конфигурационном слове, либо программно установкой бита SWDTEN в регистре RCON. Период таймера выбирается записью необходимого значения в биты конфигурации WDTPS<3:0>. Коэффициент предделителя необходимо установить равным 1:128, записью '1' в бит конфигурации FWPSA. Сторожевой таймер в архитектуре PIC24F может использоваться таким же образом, как и в PIC18, - для выхода из энергосберегающих режимов, отслеживания недопустимого изменения счетчика команд или случайного зацикливания программы.

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

Сторожевой таймер PIC24F будет сброшен при любом изменении источника тактирования, например при срабатывании функции отслеживания сбоя источника тактирования (Fail-Safe Clock Monitor) или при программном изменении тактового генератора. В семействе PIC18 сброс сторожевого таймера происходит при изменении частоты внутреннего RC генератора (см. п. 1.9.1 "Общие особенности PIC18 и PIC24F").

При переполнении сторожевого таймера в семействе PIC18 сбрасывается бит /TO (RCON<3>), а в семействе PIC24F устанавливается бит WDTO (RCON<4>). При сбросе по включению напряжения питания (POR) и снижению напряжения питания (BOR) состояние этих битов не определено. Они должны быть корректно инициализированы для дальнейшего определения таймаута по переполнению WDT.

1.10. Встроенные функции

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

- возможность конфигурации устройства;

- защита программного кода;

- встроенный стабилизатор напряжения ядра.

1.10.1. Конфигурация устройства

Микроконтроллеры Microchip имеют специальную область конфигурации в энергонезависимой памяти, предназначенную для записи и хранения основных настроек аппаратных модулей. Неверная конфигурация может привести к неправильному функционированию или сбою запуска. Для семейств PIC18 и PIC24F реализация конфигурации устройства значительно различается.

В семействе PIC18 слова конфигурации расположены по адресам от 0x300000 до 0x30000F включительно, то есть вне пространства памяти программ. Большинство микроконтроллеров PIC18 имеют программный доступ к этой области только на чтение и не могут ее программно изменять, т.е. изменение конфигурации может осуществляться только при помощи внешнего перепрограммирования. В ранних моделях PIC18 конфигурационная область представляла собой однократно программируемую память, т.е. запись слов конфигурации являлась одноразовой процедурой.

В последних версиях микроконтроллеров PIC18, таких как подсемейство PIC18FxxJ, слова конфигурации расположены в последних четырех словах программной памяти. При подаче питания информации из этой области переписывается в область конфигурации по адресам 0x300000 … 0x30000F, которая используются в дальнейшем и не может быть изменена программно или при помощи внешнего доступа. Если слова конфигурации в программной памяти изменены программно, то эта конфигурация не вступит в силу до следующего сброса по включению питания. Следует заметить, что бит защиты может быть изменен только в случае полного стирания и перепрограммирования Flash памяти. Область конфигурации (реальные регистры конфигурации по адресам 0x300000 … 0x30000F) защищена битом четности. При ошибке четности производится сброс микроконтроллера.

Так же как и в микроконтроллерах PIC18FxxJ, в PIC24F слова конфигурации расположены в конце программной памяти. Однако значение слов конфигурации переписывается в реальную область конфигурации при любом виде сброса, включая программный сброс (инструкцию RESET). Это означает, что конфигурация устройства (исключая бит защиты) может быть программно изменена и обновлена в любой момент. Бит защиты, как уже было сказано, может быть изменен только при полном стирании и перепрограммировании Flash памяти. Реальная область конфигурации так же, как и в PIC18FxxJ, защищена от случайного изменения.

1.10.2. Защита программного кода

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

Реализация защиты кода в семействе PIC18 различается для разных кристаллов в зависимости от деления программной памяти на специальные блоки. Некоторые микроконтроллеры PIC18 содержат загрузочный (boot) блок, который защищается от чтения индивидуальным битом, что позволяет закрыть код загрузчика (бутлоадера). Все устройства с областью EEPROM содержат индивидуальный бит защиты этого блока энергонезависимой памяти.

Защита блоков производится с помощью трех независимых битов:

CPn - защита от внешнего чтения и записи;

WRTn - запрет записи с помощью инструкций табличной записи;

EBTRn - запрет использования инструкций табличного чтения из другого блока программной памяти

В отличие от PIC18, семейство PIC24F имеет возможность защиты только всей области энергонезависимой памяти. Используются следующие конфигурационные биты: GCP - аналогичен CPn в семействе PIC18 и GWRP - аналогичен WRTn.

1.10.3. Встроенный стабилизатор напряжения

Микроконтроллеры семейства PIC24F имеют встроенный стабилизатор напряжения, предназначенный для питания ядра. Встроенный стабилизатор позволяет использовать в системе источник питания с одним выходным напряжением с допустимым рабочим диапазоном. Стабилизатор конфигурируется аппаратно, подтяжкой определенного вывода к VDD или к земле. Для получения более подробной информации рекомендуем обратиться к литературе [1].

Микроконтроллеры PIC18 с максимальным напряжением питания 5 В не имеют встроенного стабилизатора. Подсемейство PIC18FxxJ имеет стабилизатор, аналогичный PIC24F. Следует заметить, что микроконтроллеры PIC18FxxJ и PIC24F в аналогичных корпусах совместимы по выводам питания.© PIClist-RUS (piclist.ru), 2007 г.

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

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