I
i
МИКРОКОНТРОЛЛЕРЫ
l
Александр Черномырдин
E-mail:
О кончание. Начало в № 5/2005
Можно ли считывать содержимое
счетного регистра таймера в процес-
се счета, в документации по микро-
контроллеру не оговорено, но, как по-
казывает практика, такой вариант
работы вполне допустим - надо толь-
ко иметь в виду, что для 16-битного
режима при таком способе работы
таймер при неудачном стечении об-
стоятельств может “наврать” аж на
255 импульсов (подумайте, почему).
Сторожевой таймер (в англо-
язычной литературе для таких тай-
меров принят термин WatchDog
Timer - “сторожевой пес”) предназ-
начен в первую очередь для защи-
ты микроконтроллеров от так назы-
ваемых “зависаний”. Суть его рабо-
ты сводится к следующему. При ра-
боте микроконтроллера в реальных
условиях с ним могут происходить
различного рода непредвиденные
ситуации: например, обрыв линий
связи, соединяющих микроконтрол-
лер с управляющим компьютером,
либо вовремя не выловленная ошиб-
ка в программе (ситуация, к сожа-
лению, достаточно распространен-
ная - среди программистов даже бы-
тует шутка, что “каждая последняя
ошибка в программе является пред-
последней”). В этом случае (особен-
но, если такой случай не предусмот-
рен программой, записанной в мик-
роконтроллере), микроконтроллер
может, что называется, “уйти в себя”,
т.е. фактически перестать управлять
устройством, что иногда бывает чре-
вато выходом его из строя. Для того,
чтобы предотвратить подобные не-
приятности, в аппаратуру микрокон-
троллера вводят сторожевой тай-
мер. В самом начале работы про-
граммы сторожевой таймер запуска-
ется на счет и начинает отсчитывать
тактовую частоту процессора либо
специального отдельного генерато-
ра. Программа при своей работе
должна время от времени сбрасы-
вать счетчик сторожевого таймера,
м |--------------------------------
Общее устройство
микроконтроллера
КР1878ВЕ1
как бы говоря ему “я еще жива”. Если
программа слишком долго не сбра-
сывает счетчик таймера, таймер
досчитывает до конца заданного в
нем интервала, а затем посылает
процессору микроконтроллера сиг-
нал так называемого немаскируе-
мого прерывания, принудительно
заставляя его выполнить определен-
ные действия. Обычно эти действия
заключаются в повторном запуске
микроконтроллера в работу - как бы
“приведении его в чувство”. Несмот-
ря на такое весьма специальное на-
значение, программисты очень час-
то (хочется сказать - почти всегда)
используют сторожевой таймер в ка-
честве второго, дополнительного
таймера. Управляется сторожевой
таймер единственным регистром
конфигурации, расположенным по
адресу 1
0Ь.
Его формат (таблица 8).
Сторожевой таймер программиру-
ется довольно “странным” образом:
1. Вначале по адресу 1РИ необ-
ходимо вывести так называемый
“характерный код”, в качестве кото-
рого используется комбинация би-
тов 1010101ОЬ, или 0ААИ в шестнад-
цатиричной системе счисления
(ноль перед шестнадцатиричным
числом указывается для того, чтобы
можно было отличить шестнадцати-
ричное число от имени переменной
или метки - об этом будет более
подробно рассказано в следующих
статьях цикла).
2. Затем по адресу 1РИ необхо-
димо вывести нужное содержимое
регистра конфигурации сторожевого
таймера, при этом бит 7 обязатель-
но должен быть установлен в лог. 0.
Такой “странный” способ про-
граммирования сторожевого тайме-
ра обусловлен стремлением разра-
ботчиков микроконтроллера защи-
тить сторожевой таймер от “сошед-
шей с ума" программы (такая про-
грамма, например, может из-за
ошибки начать записывать “мусор”
во все адреса подряд, испортить при
этом содержимое регистра конфигу-
рации сторожевого таймера, тот из-
за этого никогда не пошлет процес-
сору сигнал прерывания, и т.д. и т.п.
со всеми вытекающими отсюда гру-
стными последствиями). Вероят-
ность такого поведения программы
может быть достаточно велика, а вот
чтобы “сумасшедшая" программа
сначала умудрилась записать в ре-
гистр конфигурации сторожевого
таймера код 0ААИ, а затем еще и
байт со сброшенным старшим битом
- это уже чрезвычайно редкое со-
впадение. Итак, при программирова-
нии сторожевого таймера в регист-
ре конфигурации не забывайте ус-
танавливать в лог. 0 старший бит за-
носимого байта.
Таблица 8
Номер бита
Назначение
7
Разрешение доступа: лог. 0 - доступ разрешен, лог. 1 - запущ ен
6
Разрешение счета: лог. 1 - счет разрешен, лог. 0 - запрещен
5
Не используется
4
Лог. 1 - сбросить счетчик
3
Состояние процессора при прерывании:
лог. 0 - выполнялись команды,
лог. 1 - процессор находился в состоянии ожидания
2
Источник тактовой частоты: лог. 0 - отдельный генератор,
лог. 1 - тактовый генератор микроконтроллера
1
Коэффициент деления предварительного делителя:
00 - 256, 01 - 64, 10 - 16, 11 - деления нет
0
| Радиолюбитель - 0 6 /2 0 0 5
предыдущая страница 42 Радиолюбитель 2005-06 читать онлайн следующая страница 44 Радиолюбитель 2005-06 читать онлайн Домой Выключить/включить текст