и
МИКРОКОНТРОЛЛЕРЫ
1
}
программировании АТПпу следует стремиться, в первую оче-
редь, к экономии программного кода-даже в ущерб произво-
дительности. Даже всего лишь дважды употребленная в тек-
сте программы последовательность одинаковых команд дол-
жна быть оформлена как подпрограмма. При активной рабо-
те с константами желательно пользоваться для этого регист-
рами г16.
.г31 - ограничение системы команд АТПпу (да и не
только их) в части работы с константами крайне болезненно
при программировании. В остальном же необходимо сказать,
что большинство техник и приемов программирования, рас-
смотренных в предыдущем цикле статей, не утрачивают свою
актуальность и при работе с микроконтроллерами АТПпу.
МАЛЕНЬКОЕ ДОМАШНЕЕ ЗАДАНИЕ
Серия микроконтроллеров АТПпу сравнительно недавно
пополнилась одним интересным микроконтроллером -
АТНпу13. Несмотря на свои “игрушечные” размеры этот 8-вы-
водный микроконтроллер обладает намного более развитой
архитектурой и системой команд. Фактически разработчики
этого микроконтроллера “упаковали” в 8-выводный корпус про-
цессор более старших моделей микроконтроллеров А\/В. Ко-
ротко перечислим особенности этого микроконтроллера:
1. В микроконтроллере АТПпу13 появилось ОЗУ размером
64 байта. Помимо того, что его можно использовать для хра-
нения данных, к нему возможен доступ и как к стеку, для чего
в аппаратуре процессора введен регистр стека. Наличие ре-
гистра стека сняло крайне неприятное ограничение на уровень
вложенности подпрограмм, поскольку адреса возврата хра-
нятся теперь не во внутреннем аппаратном стеке, а в ОЗУ.
2. В системе команд микроконтроллера появились коман-
ды косвенного перехода и косвенного вызова подпрограмм,
что позволяет реализовывать в нем автоматы тем способом,
который мы неоднократно разбирали при работе с КР1878ВЕ1.
3. В системе команд микроконтроллера появились коман-
ды сложения/вычитания константы со словом, т.е. двумя под-
ряд идущими регистрами. Это во многих случаях позволяет
упростить программный код.
4. Из ядра микроконтроллера изъят один из таймеров, но
зато у сторожевого таймера появилась возможность генера-
ции прерывания вместо (или вместе) сброса микроконтролле-
ра в исходное состояние, т.е. режим работы сторожевого тай-
мера АГПпу13 стал подобен режиму работы сторожевого тай-
мера КР1878ВЕ1.
5. Существенные изменения произошли в системе адре-
сации микроконтроллера. Вместо одного регистра
7
появилось
3 косвенных регистра - X, У и
7,
соответствующие регистро-
вым парам г26/г27, г28/г29 и г30/г31. С их помощью стала воз-
можной загрузка с автоинкрементом и автодекрементом ре-
гистров, а также - наиболее существенное изменение, - адре-
сация типа регистр+смещение. Это - более расширенный ва-
риант адресации, используемой в микроконтроллерах
КР1878ВЕ1, поскольку в АТПпу13 нет жесткого требования при-
вязки адреса в регистре к 8-байтовой границе, как это было в
КР1878ВЕ1.
6. При работе с портами появилась интересная возмож-
ность-вывод бита лог. 1
в порт Р1ЫВ (ранее доступный только
для чтения), выполняет инверсию бита на выходной линии пор-
та (если она, разумеется, была включена на вывод).
7.
Еще
одно
существенное изменение - адресные простран-
ства регистров портов, таймеров и прочих внешних устройств
теперь “слиты" с адресным пространством ОЗУ, т.е. с внешни-
ми устройствами стало возможным работать (как и в микро-
контроллере КР1878ВЕ1) как с ячейками ОЗУ, в том числе и с
применением косвенной адресации. Эта возможность теперь
позволяет разделить программу и данные, как это имело мес-
то в КР1878ВЕ1.
8. Тактовая частота микроконтроллера ATTinyl 3-4.8 или
9.6 МГц, или вшестеро выше, чем ATTinyl 5. Кроме того, при
запуске микроконтроллера он автоматически подгружает в
регистр OSCCAL то значение, которое требуется для точной
настройки тактового генератора (откровенно говоря, удивля-
ет, что это очевидное решение не было принято раньше).
Вот, очень коротко, те новшества, которые появились в мик-
роконтроллере ATTinyl 3. А теперь - задание:
1. Скачать документацию по ATTinyl 3 и разобраться в его
архитектуре. Для поиска документации автор настоятельно
советует сайт
2. Скачать среду разработки AVR Studio 4 (в AVR Studio
3.56 микроконтроллера ATTinyl 3 еще нет).
3. Скачать с сайта журнала “Радиолюбитель” программу,
которую мы только что разобрали (файл termoclk.zip).
4. Задача-минимум: переписать программу под микрокон-
троллер ATTinyl 3 с учетом его новых возможностей. Програм-
ма при этом должна получиться короче, чем программа для
ATTinyl5 (чем короче - тем лучше). Любые улучшения про-
граммного кода приветствуются.
5. Задача-максимум: ввести в часы режим “будильник”.
Вариант решения может быть такой: при нажатии кнопки
вначале выдаются буквы “Ч" или “Б” (установка времени или
установка будильника). В зависимости от выбора произво-
дится настройка показания часов или будильника. Значе-
ние установок будильника хранится в отдельных ячейках
ОЗУ. Затем, в процессе работы, при считывании показаний
часов производится сравнение их с записанной в “будиль-
ник” информацией и при совпадении включается будиль-
ник. Для включения/отключения будильника можно исполь-
зовать либо одну из четырех свободных линий драйвера све-
тодиодов, либо специальный вывод OUT в микросхеме ча-
сов (он управляется битом 6 в регистре 0x07 часов - см.
документацию на М41Т56). Автор предпочел бы второй ва-
риант. Логику управления настройкой будильника следует
реализовывать через автомат.
Автор честно признается, что не знает, выполнима ли за-
дача-максимум вообще. В любом случае читателю следует по-
пытаться это сделать. Хочется также пожелать читателям ус-
пехов в выполнении домашнего задания, и на этом закончить
цикл статей, посвященных серии микроконтроллеров АТПпу.
В этом цикле мы не разобрали два вопроса - работу с АЦП и
аналоговым компаратором, - но их мы обязательно разберем
в следующих статьях, посвященных микроконтроллерам се-
рииАТМеда.
Программу (файл
termodk.zip)
вы можете загрузить с
сайта нашего журнала:
(раздел “Программы”)
RC
Радиолюбитель - 12 /2 0 0 7 jj
предыдущая страница 29 Радиолюбитель 2007-12 читать онлайн следующая страница 31 Радиолюбитель 2007-12 читать онлайн Домой Выключить/включить текст