Портирование приложений с семейства PIC18 на PIC24F
1.9. Сторожевой таймер (WDT)
      Реализация  сторожевого таймера в PIC24F очень похожа на реализацию WDT в семействе PIC18.  И в PIC18 и в PIC24F работа сторожевого таймера и его период задаются в  слове конфигурации; реализуется выход из энергосберегающих режимов по  переполнению сторожевого таймера; период и разрешение работы могут  конфигурироваться программно. Однако сторожевой таймер PIC24F имеет дополнительные функции, такие как  конфигурируемый предделитель и оконный режим сброса. Отличия реализации  сторожевого таймера в семействах PIC18 и PIC24F приведены в табл. 17.
      Таблица 17. Основные  отличия реализации сторожевого таймера в семействах PIC18 и PIC24
| Функция | PIC18 | PIC24F | 
| Конфигурируемый период | да | да | 
| Программное разрешение работы | да | да | 
| Выход из энергосберегающих режимов по переполнению 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.
