II
МИКРОКОНТРОЛЛЕРЫ
J
Александр Черномырдин
г. Магнитогорск
E-mail: chav1961@radioliga.com
Ч а с ы -т е р м о м е т р
н а A T T IN Y 1 5
Продолжение.
Начало в №9/2007
Пояснения по программному
коду:
1. Как уже упоминалось ранее,
это - обязательный атрибут любой
программы, поскольку в этих фай-
лах содержится описание регист-
ров и битов микроконтроллера.
2. Это - определение символь-
ных имен для констант, использу-
емых в программе. Обратите вни-
мание - в данной конструкции при-
менена
разводка
индикатора
“змейкой” (что позволяет развести
конструкцию на односторонней пе-
чатной плате), поэтому определе-
ние сегментов индикатора и цифр
дано в двух вариантах - для чет-
ных и для нечетных знакомест.
3. Таблица прерываний микро-
контроллера. При работе мы ис-
пользуем прерывания от линии В[2]
(к ней подключен датчик темпера-
туры), и прерывания по переполне-
нию обоих таймеров. Остальные
прерывания при работе программы
не используются.
4. Инициализация внешних ус-
тройств. Обратите внимание на
последовательность команд запи-
си в регистр 0ЭССА1_ - константа
0x72 является калибровочным байтом
Итак, код фонового процесса:
именно того экземпляра микрокон-
троллера, на котором была отлаже-
на программа. Для другого микро-
контроллера эту константу необхо-
димо заменить калибровочным
байтом, считанным при программи-
ровании соответствующего экзем-
пляра микроконтроллера.
5. Подготовка данных в рабочих
регистрах микроконтроллера.
6. Калибровка микросхемы ча-
сов. Для обеспечения необходимой
точности хода в микросхеме М41Т56
имеется регистр, аналогичный по
назначению регистру ОЭССАЫ мик-
роконтроллера. Значение, запи-
санное в этот регистр (его номер -
0x07), несколько замедляет или ус-
коряет работу тактового генератора
часов. В данном случае зто значе-
ние “прошито” непосредственно в
программе. Подход не самый пра-
вильный, поскольку в программе
приходится держать зависимые от
конкретного экземпляра микросхе-
мы часов данные. Более правиль-
ным вариантом было бы либо дер-
жать константу (в тексте програм-
мы она выделена знаками “!!!”) в
ЭСППЗУ, либо непосредственно в
регистре часов. Причина такого ре-
шения - нехватка пцмяти программ,
поскольку эта реализация - самая
короткая по размеру кода. Сразу же
обратите внимание на порядок об-
мена данными с часами: стартовая
последовательность, запись байта
команды, запись байта адреса, за-
пись байта данных, стоповая после-
довательность.
Теперь нам необходимо реали-
зовать обработку динамической ин-
дикации, расчет величины темпера-
туры, опрос кнопки, управление ус-
тройством - и много чего еще. По-
скольку время обработки прерыва-
ний от термодатчика для нас весь-
ма критично - от этого будет зави-
сеть точность показаний термомет-
ра, - в обработчиках прерываний
мы будем выполнять только абсо-
лютно необходимую работу, а все
остальное (динамическая индика-
ция, арифметика, автоматы) нам
придется обрабатывать в фоновом
процессе. Такой подход к реализа-
ции обработчиков мы подробно раз-
бирали в предыдущем цикле ста-
тей. Для того, чтобы фоновый про-
цесс “знал”, чем ему в данный мо-
мент необходимо заниматься, в
программе используется регистр
г17. Биты этого регистра - указания
для фонового процесса, которые ус-
танавливаются обработчиками пре-
рываний, - по сути дела представ-
ляют собой очередь сообщений
(весьма специфического вида).
;
Цикл отслеживания прерываний
sei
again:
sleep
sbrs
rl7,0
rjmp
skip
; <1> Разрешить прерывания.
..
; Ожидание прерываний.
..
; <2> Пересчитать температуру?
; Не-а.
..
Реализация арифметики (умножение).
cbr
rl7,0x01
/
mov
rl4,r5
;
mov
rl5,r6
mov
r20,r3
г
mov
r21,r4
clr
гЗ
;
clr
r4
clr
г5
clr
гб
<3> Сбросить признак обновления показаний температуры.
<4> Переписать во временные ячейки длительность пауз.
Переписать длительность импульсов.
Очистить ячейки для дальнейшего использования.
Радиолюбитель - 10/2007(1
29
предыдущая страница 29 Радиолюбитель 2007-10 читать онлайн следующая страница 31 Радиолюбитель 2007-10 читать онлайн Домой Выключить/включить текст