Портирование приложений с PIC18 на PIC24F. 1. 9. Сторожевой таймер

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.