Внутрисхемное программирование кристалла. При использовании внутрисхемного программатора микроконтроллер подключается к COMпорту компьютера через несложный адаптер (три диода и несколько резисторов). Также есть вариант USBподключения. Программатор ведет подсчет числа перепрограммирований кристалла, сохраняя счетчик непосредственно в кристалле. Процесс программирования кристалла очень прост - в два "хода".
Мониторная отладка на кристалле. AlgorithmBuilderобеспечивает мониторную отладку на кристалле (OnChipdebug) которая позволяет наблюдать содержимое реального кристалла в заданной точке останова. При этом для связи микроконтроллера с компьютером используется только один вывод, причем по выбору пользователя. Мониторная отладка может быть применена к любому типу кристалла, имеющего SRAM. Это софтверный вариант debugWIRE.
Для того, чтобы написанная программа превратилась в результирующий код и заработала в конкретном микропроцессорном устройстве, ее нужно оттранслировать и "зашить" в программную память микроконтроллера.
При написании программ обычно нельзя обойтись без процедуры отладки. Отладка выполняется на компьютере при помощи специальной инструментальной программы - отладчика. Он позволяет пошагово выполнять отлаживаемую программу, а также выполняет ее поэтапно с использованием, так называемых точек останова.
В процессе выполнения программы под управлением отладчика можно на экране компьютера:
1) видеть содержимое любого регистра микроконтроллера;
2) видеть содержимое ОЗУ и EEPROM;
3) наблюдать за последовательностью выполнения команд, контролируя правильность отработки условных и безусловных переходов;
4) наблюдать за работой таймеров, отработкой прерываний.
В процессе отладки также можно наблюдать логические уровни на любом внешнем выходе микроконтроллера. А также имитировать изменение сигналов на любом входе. Процесс отладки позволяет убедиться в том, что разрабатываемая программа работает именно так, как нужно.
Существует три основных вида отладчиков:
- программные;
- аппаратные;
- комбинированные программно-аппаратные.
Программный отладчик
Программный отладчик - это компьютерная программа, которая имитирует работу процессора на экране компьютера. Она не требует наличие реальной микросхемы или дополнительных внешних устройств и позволяет отладить программу чисто виртуально.
Однако программный отладчик позволяет проверить только логику работы программы. При помощи такого отладчика невозможно проверить работу схемы в режиме реального времени или работу всего микропроцессорного устройства в комплексе, т. е невозможно гарантировать правильную работу и всех подключенных к микроконтроллеру дополнительных микросхем и элементов.
Аппаратный отладчик
Основа аппаратного отладчика - специальная плата, подключаемая к компьютеру, работающая под его управлением и имитирующая работу реальной микросхемы микроконтроллера. Плата имеет выводы, соответствующие выводам реальной микросхемы, на которых в процессе отладки появляются реальные сигналы.
При помощи этих выводов отладочная плата может быть включена в реальную схему. Возникающие в процессе отладки электрические сигналы можно наблюдать при помощи осциллографа. Можно нажимать реальные кнопки и наблюдать работу светодиодов и других индикаторов.
Здесь как и в предыдущем случае, можем видеть всю информации об отлаживаемой программе: наблюдать содержимое регистров, ОЗУ, портов ввода-вывода; контролировать ход выполнения программы.
В аппаратном отладчике так же, как и в программном, можно выполнять программу в пошаговом режиме и применять точки останова. Недостатком аппаратного отладчика является его высокая стоимость.
Имитаторы
Имитаторы - программы, которые позволяют на экране компьютера "собрать" любую электронную схему, включающую в себя самые разные электронные компоненты:
a) транзисторы;
b) резисторы;
c) конденсаторы;
d) операционные усилители;
e) логические и цифровые микросхемы, в том числе и микроконтроллеры.
Такие программы обычно содержат обширные базы электронных компонентов и конструктор электронных схем. Собрав схему, можно виртуально записать в память микроконтроллера вашу программу, а затем "запустить" всю схему в работу.
Для контроля результатов работы схемы имитатор имеет виртуальные вольтметры, амперметры и осциллографы, которые можно "подключать" к любой точке схемы, "измерять" различные напряжения, а также "снимать" временные диаграммы.
Такие программы в настоящее время получают все большее распространение. Они позволяют разработать любую схему с микроконтроллером или без него, без использования паяльника и реальных деталей. На экране компьютера можно полностью отладить свою схему и лишь потом браться за паяльник.
Недостатком данного отладчика является то, что он требует значительных вычислительных ресурсов. Особенно в том случае, когда отлаживается схема, включающая как микроконтроллер, так и некоторую аналоговую часть. Кроме того, имитатор не всегда верно имитирует работу некоторых устройств. Однако подобные программы имеют очень большие перспективы.
WinAVR
WinAVRпредставляет собой набор инструментальных средств для работы с микроконтроллерами семейства AVRфирмы ATMEL. В него вошли следующие компоненты:
a) компилятор языка Cavr-gcc,
b) библиотека компилятора avr-libs,
c) ассемблер avr-as,
d) интерфейс программатора avrdude,
e) интерфейс JTAG ICE avarice,
f) Debugeravr-gdb,
g) редактор programmersnotepad.
Весь этот набор собран в один инсталляционный пакет и предназначен для установки на платформу Windows.
Главным преимуществом моего выбора именно этой микросхемы является ее широкая доступность и не высокая цена.
Рис.2.1 Типовая схема включения микроконтроллера АТ89С2051
Элементы R1, С1 составляют цепь начального сброса микроконтроллера. Она служит для перевода в исходное состояние всех внутренних систем микроконтроллера сразу после включения питания. Кварцевый резонатор Z1 определяет частоту встроенного тактового генератора микроконтроллера. Этот генератор предназначен для синхронизации всех внутренних процессов микроконтроллера. Микросхема АТ89С2051 допускает выбирать частоту кварцевого резонатора до 24 МГц. Нижний предел частоты не ограничивается. Конденсаторы С2 и СЗ - это согласующие элементы для кварца. Микроконтроллер АТ89С2051 допускает применение в качестве времязадающей цепи резонансного контура, и даже подключение внешнего тактового генератора. Оставшиеся выводы микроконтроллера представляют собой два порта ввода/вывода, которые обозначены Р1 и РЗ. Именно к этим двум портам и подключаются периферийные устройства.
Практически ни одно микропроцессорное устройство не обходится без кнопок и простейших датчиков на основе обычных контактов. При помощи этого вида периферийных элементов в микропроцессорное устройство поступает различная информация, которая используется для изменения алгоритма работы программы.
Примером может служить датчик поворота (Рис.2.2) - механические контакты, связанные с поворачиваемым устройством.
Рис.2.2 Простая схема подключения датчика на основе геркона
На вход микроконтроллера через резистор R1 подается напряжение от источника питания +5 В. Микросхема воспринимает это напряжение как сигнал логической единицы. При срабатывании датчика контакты замыкаются и соединяют вывод микроконтроллера с общим проводом. В результате напряжение на входе Р1.0 падает до нуля. В следствии микросхема воспринимает входной уровень сигнала как логический ноль. Резистор R1 при этом служит токоограничивающим элементом, предотвращая короткое замыкание между шиной питания и общим проводом.
Рассмотрим программу для обслуживания вышеупомянутого датчика (Листинг 2.3.), которая, постоянно опрашивает датчик и в зависимости от состояния запускает одну из двух специальных процедур.
1234567 | ; Программа обработки сигнала с датчика m1: movp1.0,#1 ; Записываем 1 в соответствующий разряд портаmovc,p1.0 ; Читаем состояние датчика в битовый аккумуляторjcm2 ; Если контакты датчика разомкнуты, перейти к m2callproc1 ;Вызов процедуры обработки нажатия контактаjmpm1 ; Возврат к началу (следующий цикл считывания)m2: callproc1; Вызов процедуры обработки размыкания контактаjmpm1 ; Возврат к началу (следующий цикл считывания) |
Листинг 2.3.
Здесь явно видно, что программа записывает в линию Р1.0 сигнал логической единицы (строка 1). Это необходимо для того, чтобы данная линия могла работать на ввод информации.
Следующая команда считывает бит информации, поступающей от датчика, и помещает ее в регистр признака переноса (строка 2). В микропроцессорной технике принято ячейку признака переноса обозначать как CY. Ячейка CYиспользуется как аккумулятор для битовых операций. Если в момент считывания сигнала контакты датчика были разомкнуты, то в ячейке CYокажется логическая единица. Если контакты замкнуты, то там будет логический ноль.
Оператор условного переходаjcосуществляет оценку содержимого CY (строка 3). Если в CYлогический ноль, то управление передается на меткуm2, и выполняется команда callргос2 (строка 6). В противном случае передача управления не происходит и выполняется командаcallproc1 (строка 4). Оператор call - это вызов подпрограммы. Поэтому, в зависимости от состояния датчика вызывается одна из двух подпрограмм: proc1 или ргос2.