Портирование приложений с семейства PIC18 на PIC24F
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
Параметр |
PIC18 |
PIC24F |
Режимы первичного (внешнего) источника тактирования |
HS, XT, EC, LP и внешний RC* |
HS, XT и EC (все устройства) |
Вторичный (Timer 1) генератор |
да |
да (SOSC) |
Внутренний RC генератор 8 МГц |
да |
да (FRC) |
Внутренний RC генератор 31 кГц |
да |
да (LPRC) |
Опции внутреннего умножителя на 4 с PLL: |
нет |
да |
Настройка внутреннего 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
Параметры функционирования |
PIC18 |
PIC24F |
Конфигурация стартового генератора |
FOSC3:FOSC0 |
FNOSC2:FNOSC0 |
Конфигурация типа первичного источника тактирования |
POSCMD1:POSCMD0 |
|
Конфигурация назначения вывода OSC2 в режиме EC |
OSCIOFCN |
|
Запуск вторичного генератора |
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 |
Мониторинг активного источника тактирования |
OSTS, IOFS, T1RUN |
COSC2:COSC0 |
Разрешение запуска с использованием двух источников тактирования |
IESO (CONFIG1H<7>) |
IESO (CW2<15>) |
Разрешение определения неисправности тактового генератора |
FCMEN (CONFIG1H<6>) |
FCKSM1:FCKSM0 |
* Только для устройств 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. Рекомендации по портированию приложения
При портировании любого приложения необходимо внимательно пересмотреть исходный код, отвечающий за тактирование микроконтроллера. Необходимо выбрать корректный режим работы тактового генератора, чтобы избежать сбоев и повышенного потребления.