В качестве примеров компиляторов можно привести стандартный AVR assembler, а также компиляторы языка Си avrgcc, AVR Code Vision, ICC, компилятор языка Паскаль Embedded AVR Pascal /23/.
Отдельно стоит сказать о таких средствах, как конструкторы кода. Они представляют собой графическую среду для разработки программного обеспечения для МК на языке ассемблера, но в отличие от классического ассемблера, программа вводится в виде алгоритма с древовидными ветвлениями, и отображается на плоскости в двух измерениях. Сеть условных и безусловных переходов отображается графически, в удобной векторной форме. Это к тому же освобождает программу от бесчисленных имен меток, которые в классическом ассемблере являются неизбежным балластом. Вся логическая структура программы становится наглядной.
Графические технологии раскрывают новые возможности для программистов. Визуальность логической структуры уменьшает вероятность ошибок и сокращает сроки разработки. Появляется такое понятие, как дизайн алгоритма, предполагающее некоторый художественный вкус программиста.
По оценке пользователей, по сравнению с классическим ассемблером, время на разработку программного обеспечения сокращается в 3-5 раз /22/. Наиболее распространенный конструктор кода сейчас - Algorithm Builder для МК AVR Геннадия Громова /22/, поддерживающий также отладку создаваемой программы, чтение/запись МК, заготовки кода и шаблоны. Свободно распространяемая версия имеет ограничение на объем кода, создаваемого конструктором. К средствам отладки относят также интегрированные среды разработки и эмуляторы. Эмуляторы позволяют определить электрическую принципиальную схему устройства, выполнить «обвязку» МК радиоэлектронными компонентами, и, в конечном счете, произвести моделирование схемы.
В настоящее время существуют несколько семейств 8-битных микроконтроллеров для решения прикладных задач. Наиболее распространенные семейства в настоящее время – микроконтроллеры PIC и AVR /6, 5/, имеющие структуру, как показано на рисунке 10 /21/.
Рисунок 10 - Структура 8-битного МК общего назначения
Кратко опишем ее. Ядро МК – сердце микроконтроллерного устройства. Его задача состоит в исполнении программы, записанной в специальную память (память программ). Ядро МК содержит устройство выборки и декодирования команд, арифметико-логическое устройство (АЛУ), внутренние регистры. Регистры общего назначения в архитектуре рассматриваемых здесь МК не входят в ядро (этот момент будет прояснен ниже). Ядро связано с остальными компонентами микроконтроллерной системы.
Память программ – место для хранения последовательности команд, выполнение которых и занимается МК. Как правило, это FLASH-память, с большим числом (порядка 1000) циклов перезаписи. Однако для удешевления МК выпускаются также модели с однократно записываемой памятью программ. Имеет смысл их использовать при выпуске готового микроконтроллерного устройства, если заранее известно, что программа не должна быть изменена в дальнейшем.
Оперативная память – память под переменные программы и стек. В МК рассматриваемого здесь класса оперативная память, как правило, совмещена с регистрами общего назначения (РОНы) и регистрами ввода/вывода в одном адресном пространстве, как показано на рисунке 11.
Рисунок 11 - ОЗУ 8-битных МК общего назначения
Благодаря такому архитектурному решению, переход к любому адресу осуществляется через единую систему команд, что очень удобно для программиста.
Тактовый генератор вырабатывает тактовые импульсы, которые синхронизируют работу МК, его логики и периферийных устройств.
Цепь сброса служит для правильного запуска и останова МК.
Цифровые порты ввода-вывода служат для подключения внешних устройств (последовательного порта, светодиодов, систем индикации и т.д.).
Аналоговые порты служат той же цели – подключению внешних, но уже аналоговых устройств. Это АЦП и ЦАП. Некоторые МК могут ими комплектоваться.
Таймеры служат для отсчета временных интервалов в программе. Например, в устройстве-секундомере они незаменимы. МК чаще всего содержат несколько таймеров, настраиваемых на разные интервалы.
Сторожевой таймер служит другой цели. Он предназначен для предотвращения сбоев программы. Он работает следующим образом: после запуска начинает отсчет заданного временного интервала. Если программа не перезапустит его до истечения этого интервала времени, сторожевой таймер перезапустит микроконтроллер. Таким образом, программа должна давать сторожевому таймеру сигнал – все в порядке. Если она этого не сделала, значит, по какой-либо причине произошел сбой.
Для реализации устройства был выбран МК фирмы Atmel семейства AVR, модель ATmega 128 /5/. Его технические характеристики представлены в таблице 1. Опишем его подробнее в плане классификации, данной выше. Попутно мы будем объяснять аргументы в пользу выбора именно данного МК для реализуемого устройства.
Таблица 1 - Технические характеристики МК ATmega128
Память программ, кб |
Память EEPROM, кб |
ОЗУ, кб |
Кол-во команд |
Порты ввода/вывода |
Аппаратное умножение |
8-ми разрядный таймер |
16-ти разрядный таймер |
Сторожевой таймер |
10-разр. АЦП, каналы |
Встроенный генератор |
Напряжение питания |
Тактовая частота, МГц |
Производительность, MIPS |
128 |
4 |
4 |
133 |
48 |
+ |
2 |
2 |
+ |
8 |
+ |
4,0-5,5 В |
0-16 |
0-16 |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.