Портирование приложений с семейства PIC18 на PIC24F
1.8. Режимы пониженного  энергопотребления
      Режимы  пониженного энергопотребления микроконтроллеров PIC18  и PIC24F практически  полностью соответствуют в плане функциональности. Оба семейства допускают  программное переключение источников тактирования, режимы IDLE и SLEEP,  выход из режимов пониженного энергопотребления по прерыванию или событию  сброса. Однако реализация этих функций в PIC24F несколько отличается от PIC18. Кроме того, добавлены дополнительные методы,  увеличивающие гибкость системы и позволяющие значительно снизить среднее  потребление энергии. Сравнение режимов пониженного потребления для  микроконтроллеров PIC18 и PIC24F приведено в табл. 16.
      Замечание:  здесь и далее до конца пункта 1.8 под термином «семейство PIC18» будут подразумеваться микроконтроллеры с  поддержкой технологии NanoWatt.
      Таблица 16. Сравнение  возможностей режимов пониженного энергопотребления семейств PIC18 и PIC24F 
| Режим | PIC18 | PIC24F | 
| Программное переключение источников тактирования | да | да | 
| Переход в режим пониженного энергопотребления | инструкция и установка служебного бита | инструкция с аргументом | 
| Режим    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.
