Составители:
33
Итак, для управления одной обмоткой достаточно выдавать меандр на
один из выводов микроконтроллера. На другой вывод необходимо подавать
меандр, смещенный во времени. Поэтому выдача на два вывода
микроконтроллера через равные промежутки времени чисел 00
2
, 01
2
, 11
2
, 10
2
вызывает непрерывное вращение ротора двигателя. Подбирая величину этих
промежутков, можно регулировать скорость вращения вентилятора.
Схема лабораторной установки состоит из фильтра, вход которого
подсоединен к RB0, а выход – к RB1. Обмотки двигателя через 2 схемы
преобразования напряжений подключены к выводам RA0, RA1. Подключение
VSS, VDD, OSC1, OSC2 аналогично рассмотренному в работе 1.
Температура в помещении меняется медленно, поэтому можно выполнять
ее
оценку примерно раз в секунду. Оценка температуры длится в зависимости
от параметров фильтра от нескольких микросекунд до нескольких
миллисекунд. Большую часть времени будет работать двигатель, поэтому его
можно считать вращающимся непрерывно. Таким образом, каждую секунду
необходимо повторять один и тот же фрагмент программы. Есть два подхода к
решению этой задачи.
Первый подход заключается в оформлении этого
фрагмента как тела цикла. Второй использует перезапуск программы с
нулевого адреса приблизительно каждую секунду. Программа в этом случае
представляет из себя оценку температуры и бесконечный цикл вывода
меандров.
Перезапуск можно осуществить с помощью сторожевого таймера
(Watchdog timer, WDT). WDT предназначен для того, чтобы избегать
“подвисание" микроконтроллера. Это таймер
, работающий на собственной
тактовой частоте, не зависящей от тактовой частоты микроконтроллера. WDT
имеет собственный регистр-счетчик, который через определенные промежутки
времени инкрементируется. Когда происходит его переполнение, выполняется
автоматический перезапуск микроконтроллера, и выполнение программы
начинается заново с нулевого адреса.
По умолчанию регистр-счетчик сторожевого таймера инкрементируется
внутренним тактовым генератором и переполняется с
периодом в 18 мсек. Для
увеличения периода срабатывания WDT используют предилитель. Он
подключается между источником частоты и счетчиком WDT. Для пределителя
задается пороговое значение, при превышении которого производится
обнуление пределителя и инкрементирование счетчика. Таким образом счетчик
WatchDog таймера подсчитавает количество переполнений пределителя и
время срабатывания WDT составляет 18 мкс*порог пределителя.
Примечание. В предыдущих работах WDT
не использовался поэтому был
отключен. Чтобы его включить необходимо перед прошивкой программы в
микроконтроллер выбрать WDT – on в настройках ComPic (ConfigFuses).