СОДЕРЖАНИЕ 1 Общие сведения ........................................................................................................ 2 2 Окно Processor .......................................................................................................... 6 3 Окно I/O View ........................................................................................................... 6 4 Окна Memory ............................................................................................................ 7 5 Окно Register ............................................................................................................. 9 6 Окно Watch.............................................................................................................. 10 7 Отладка программы ............................................................................................... 10 8 Настройка параметров симулятора ...................................................................... 12 9 Программирование микроконтроллера через AVRFLASH ............................... 14 1 Общие сведения AVR Studio - это бесплатно распространяемая (freeware) интегрированная среда разработки (IDE, Integrated Development Environment) от компании ATMEL (на данный момент выкуплена компанией Microchip), которая предназначена для разработки приложений под микроконтроллеры (МК) ARM Cortex-M и AVR. Начиная с версии 6.0, программа сменила название на Atmel Studio и на данный момент доступна версия 7. Последняя версия Atmel Studio поддерживает все существующие на сегодняшний момент 8-битные, 32-битные AVR, SAM3 и SAM4 микроконтроллеры и включает в себя более 1100 проектов с примерами. Далее будет рассматриваться версия 4 ввиду её более простого интерфейса. Эта среда предлагает интерфейс программного симулятора (имитатора) и внутрисхемного эмулятора для восьмиразрядных микроконтроллеров AVR. После установки AVR Studio по умолчанию на Рабочем столе Windows появится соответствующий ярлык. В любом случае, эту среду можно запустить по команде из меню ПускВсе программыAtmel AVR Tools. При первом запуске AVR Studio на экране появится окно приветствия (рис. 1). Рис. 1 – Окно приветствия AVR Studio 4 С помощью этого окна можно выполнить одну из трех операций, нажав кнопку: New Project - создать новый проект; Open - открыть файл проекта (*.aps) или какой-либо другой файл с диска, имеющий одно из расширений hex, d90, a90, r90, obj, cof, dbg; Load - загрузить один из ранее использовавшихся проектов (кнопка станет доступна после выделения проекта в списке). 2 Для примера, создадим новый проект. Для этого в окне приветствия нажмем кнопку New Project. В следующем окне (рис. 2) следует указать тип проекта (Project type): Atmel AVR Assembler, задать имя проекта (Project name) и указать путь хранения проекта (Location). Рис. 2 – Создание нового проекта Интерфейс AVR Studio полностью англоязычный и официального русификатора нет. AVR Studio 4 не принимает русских букв в названии и пути к файлам проектов, поэтому в случае наличия русских символов компиляция проекта будет не возможна! Далее необходимо нажать Next >> и в следующем окне (рис. 3) выбрать платформу отладки программного обеспечения и тип микроконтроллера, например, интегрированный симулятор AVR Simulator и микроконтроллер Atmega32. Рис. 3 – Выбор отладочной платформы и типа микроконтроллера 3 Теперь можно нажимать Finish, чтобы перейти к разработке и отладке программы. Для того, чтобы окно приветствия при последующих запусках AVR Studio не отображалось, в нем следует сбросить флажок Show dialog at startup. В таком случае все операции по созданию и загрузке проектов выполняются с помощью команд меню File и Project, а окно выбора эмулятора и типа микроконтроллера, соответствующее рис. 3, открывается по команде меню DebugSelect Platform and Device. AVR Studio состоит из следующих основных окон: центральное окно – для ввода исходного кода программы, Project – окно дерева проекта, I/O View – окно регистров ввода/вывода (РВВ) периферийных устройств микроконтроллера, Build – окно сборки (компиляции) с вкладками предупреждений, поиска в файлах, точек прерывания (контрольных точек останова). Понятие "точка прерывания" описано в разделе 7 – Отладка программы. Рис. 4 – Окна AVR Studio Наберите в окне ввода исходного кода две строки: .include "m32def.inc" ldi r16,10 Запустите компиляцию, нажав кнопку на панели инструментов (или клавишу F7). В случае успешной компиляции (код программы набран без оши- 4 бок) в окне Build появится таблица с информацией об объемах всех типов памяти микроконтроллера, объеме памяти занимаемого скомпилированной программой, а также зеленый индикатор успешной компиляции (рис. 5). Рис. 5 – Успешная компиляция программы После компиляции в окне Project в разделе Included Files будет доступен подключаемый директивой .include файл соответствий выбранного типа микроконтроллера. Его можно открыть, дважды щелкнув по нему левой кнопкой мыши. Теперь можно запустить режим отладки кнопкой на панели инструментов (клавиши Ctrl+Shift+Alt+F5), либо через кнопку одновременного запуска компиляции и режима отладки (Ctrl+F7). В окне исходного кода строка, подлежащая исполнению первой, будет обозначена желтой стрелкой (рис. 6). Рис. 6 – Режим отладки 5 2 Окно Processor Окно Processor, расположенное на рис. 6 слева от окна исходного кода предоставляет доступ к 32-м рабочим регистрам (R00-R31 это регистры общего назначения РОН), к параметрам процессора (счетчик команд PC-Program Counter, указатель стека SP-Stack Pointer, 16-ти разрядные регистры X, Y и Z, счетчик машинных циклов (тактов) Cycle Counter, тактовая частота процессора Frequency, время прошедшее с момента запуска Stop Watch, флаги статусного регистра SREG). При нажатии правой кнопкой мыши в любой части данного окна появляется контекстное меню, через которое можно изменить некоторые настройки. Например, отображать время, прошедшее с момента запуска (Stop Watch) не в микросекундах, а в миллисекундах, сбросить счетчик циклов, отображать значения не в шестнадцатиричной системе счисления, а в десятичной. При необходимости текущие значения РОН, а также флаги статусного регистра SREG можно менять в процессе пошаговой отладки. 3 Окно I/O View Это окно позволяет контролировать работу устройств ввода/вывода (периферийных модулей) микроконтроллера, выбранного для симуляции (рис. 6). У каждого модуля есть свой набор регистров ввода/вывода. Управление модулями осуществляется путём изменения данных регистров. В зависимости от выбранной модели микроконтроллера количество модулей может отличаться. Например, для модели ATMega32 в этом окне отображаются следующие модули: AD_CONVERTER – аналого-цифровой преобразователь (АЦП, ADC); ANALOG_COMPARATOR – аналоговый компаратор; BOOT_LOAD – загрузчик; CPU – процессор (центральное процессорное устройство, ЦПУ); EEPROM – электрически стираемое перепрограммируемое постоянное запоминающее устройство (ЭСППЗУ); EXTERNAL_INTERRUPT – внешние прерывания; PORTA, PORTB, PORTC, PORTD – 8-ми разрядные порты ввода/вывода; SPI – последовательный периферийный интерфейс; TIMER_COUNTER_0 – 8-ми разрядный таймер-счетчик Т0; TIMER_COUNTER_1 – 16-ти разрядный таймер-счетчик Т1; TIMER_COUNTER_2 – 8-ми разрядный таймер-счетчик Т2; TWI – 2-х проводной интерфейс; 6 USART – универсальный синхронный/асинхронный приемо-передатчик; WATCHDOG – сторожевой таймер. В режиме пошаговой отладки можно запустить программу на автоматическое выполнение шагов DebugAuto Step (комбинация клавиш Alt+F5) или соответствующей кнопкой на панели инструментов Debug. Нужные панели инструментов или окна (I/O View, Processor, Build, Message…) можно открыть или погасить щелкнув правой кнопкой мыши в любой области панели инструментов. Команда Auto Step отличается от команды запуска Run (клавиша F5) тем, что в ходе выполнения программы после каждого шага обновляются окна AVR Studio (в случае команды Run - не обновляются). Для автоматической остановки процессора на определенной команде, необходимо установить точку прерывания (контрольную точку останова) через меню DebugToggle Breakpoint (клавиша F9) или нажать соответствующую кнопку на панели инструментов Debug. При повторном нажатии контрольная точка будет снята. Чтобы прервать выполнение программы, следует выполнить команду меню DebugBreak (комбинация клавиш Ctrl+F5) или нажать соответствующую кнопку на панели инструментов Debug. Следующий шаг в ручном режиме осуществляется разными командами через меню DebugStep Into, Step Over, Step Out (соответствующие клавиши F11, F10, Shift+F11) или нажатием кнопок на панели инструментов Debug. Назначение этих кнопок более подробно описано в разделе 7. Выключение режима пошаговой отладки осуществляется через меню DebugStop Debugging (комбинация клавиш Ctrl+Shift+F5) или нажатием кнопки на панели инструментов Debug. Поскольку симулятор выполняет программу в виртуальной среде, она работает значительно медленнее, чем в реальном микроконтроллере (особенно, выполнение функций задержки). Необходимо учитывать это обстоятельство при отладке программ. 4 Окна Memory Окно Memory позволяет при необходимости контролировать или изменять некоторую область памяти микроконтроллера AVR, например, память программ, память данных, память EEPROM, память ввода/вывода. Окно Memory будет доступно для включения в главном меню View (комбинация клавиш Alt+F4, рис. 7) после запуска режима пошаговой отладки (DebugStart Debugging). 7 Рис. 7 – Главное меню View Одновременно могут быть открыты сразу несколько окон Memory - для этого используются команды меню Memory 2 и Memory 3 (рис. 7, рис. 8). Тип отображаемой памяти выбирают с помощью раскрывающегося списка, расположенного в верхнем левом углу окна Memory. В примере на рис. 8 для верхнего окна была выбрана память программ, а для нижнего - память данных. Рис. 8 – Два окна Memory С помощью кнопки 8/16, расположенной справа от раскрывающегося списка, а также команд контекстного меню 1 Byte и 2 Byte пользователь может переключаться между режимами разбивки дампа памяти на одно- и двухбайтные фрагменты, а с помощью кнопки abc - отобразить/скрыть дополнительную колонку с ASCII-значениями отображенной области памяти. Поле Address служит для отображения и ввода адреса ячейки памяти, на которой в данный момент 8 установлен курсор. Количество колонок со значениями ячеек памяти выбирается с помощью раскрывающегося списка Cols (если в этом списке выбран элемент Auto, то количество колонок выбирается автоматически в зависимости от ширины окна Memory). Содержимое ячейки памяти в окне Memory можно легко изменить. Введенные значения расцениваются как шестнадцатеричные числа, при этом новое значение попадает в ячейку памяти сразу же после каждого нажатия клавиши. Если это нежелательно (например, в случае применения эмулятора при доступе на запись к регистру UDR приемопередатчика UART или USART инициируется новая передача, хотя в этом случае байт еще неполный), то новое значение можно альтернативно вводить в специальном диалоговом окне, которое открывается по двойному щелчку мыши на соответствующей ячейке памяти. В этом случае вводимое значение записывается в ячейку только тогда, когда в окне Edit будет нажата кнопка ОК (клавиша Enter). Значения, которые изменились с момента последней операции отладки, отображаются красным шрифтом. Адреса восьмиразрядных ячеек памяти выделены серым фоном, а адреса 16-разрядных ячеек памяти - голубым фоном. 5 Окно Register Окно открывается по соответствующей команде главного меню View (комбинация клавиш Alt+0), рис. 7, или через нажатие кнопки на панели инструментов Debug Windows. Окно Register показывает содержимое 32-х рабочих регистров микроконтроллера (регистры общего назначения, РОН), которое обновляется после выполнения каждой команды (рис. 9). Рис. 9 – Окно Register Значения, изменившиеся в результате последней отладочной операции (например, при пошаговом проходе или в результате достижения точки останова) отображаются красным шрифтом. Для того чтобы изменить содержимое регистра, следует остановить выполнение программы и сделать двойной щелчок мышью на выбранном регистре. 9 Правила изменений значений в регистрах аналогичны правилам изменения значений в окнах Memory. Также можно наблюдать/изменять содержимое РОН в окне Processor (рис. 6). 6 Окно Watch Окно открывается по соответствующей команде главного меню View (комбинация клавиш Alt+l), рис. 7, или через нажатие кнопки на панели инструментов Debug Windows. Окно Watch (рис. 10) служит для отображения типов, значений и адресов таких объектов как, например, переменные в программе на С или на Ассемблере. Это окно состоит из четырех колонок. В первой указано имя объекта, за которым ведется наблюдение, во второй - тип объекта (Integer, unsigned Char и т.д.), в третьей - текущее значение, а в четвертой - адреса объектов. Пользователь может добавлять новые объекты в окно Watch по команде контекстного меню Add Item или же по команде контекстного меню Add to Watch окна исходного кода. В последнем случае в список Watch будет добавлен элемент кода, на котором установлен курсор. Элементы окна Watch можно удалять по одному с помощью команды контекстного меню Remove Selected Item или все сразу по команде контекстного меню Remove All Items. Рис. 10 – Окно Watch 7 Отладка программы Под отладкой подразумевают пошаговое выполнение программы с контролем содержимого регистров микроконтроллера (проверка на низком уровне) и переменных (проверка на программном уровне). Для отладки программ в AVR Studio используют команды главного меню Debug и кнопки одноименной панели инструментов. Прежде, чем рассмотреть эти команды имеет смысл разъяснить такое понятие как "точка прерывания". Точка прерывания (Breakpoint) - это строка исходного кода, на которой работа программы приостанавливается. Таких точек (обозначаются красным кружком слева от строки) может быть установлено 10 столько же, сколько эффективных строк в программе. Для установки/удаления точки прерывания в текущей строке служит команда меню DebugToggle Breakpoint (клавиша F9) или соответствующая кнопка на панели инструментов Debug. Для удаления всех расставленных в программе точек прерывания служит команда меню DebugRemove Breakpoints или кнопка Remove all Program Breakpoints на панели инструментов Debug. Для последовательного перехода от одной точки прерывания к другой используется команда меню DebugNext Breakpoint или комбинация клавиш Ctrl+F9. В режиме отладки используются следующие команды главного меню Debug (рис. 11): Рис. 11 – Команды, доступные в режиме отладки Run (клавиша F5) - запуск. Переход в режим отладки происходит, если встречается точка прерывания; Step Into (клавиша F11) - выполняет текущую команду с заходом в подпрограммы (все окна обновляются); Step Over (клавиша F10) - выполняет текущую команду без захода в подпрограммы (все окна обновляются); Step Out (комбинация клавиш Shift+Fl1) - запускает программу и выполняет ее до тех пор, пока не встретится окончание текущей подпрограммы; если ход выполнения находится в области основной программы, то программа будет выполняться до тех пор, пока не будет остановлена пользователем командой Break или не встретит точку прерывания; Run To Cursor (комбинация клавиш Ctrl+F10) - запускает программу, которая выполняется до тех пор, пока не будет достигнута позиция курсора в окне исходного кода; если встречается точка останова, то выполнение программы не останавливается; если позиция курсора не достигается никогда, то программа выполняется до тех пор, пока не будет остановлена командой Break. После выполнения команды все окна обновляются; 11 Auto Step (комбинация клавиш Alt+F5) - автоматический шаг. Переход в режим отладки происходит, если встречается точка прерывания. 8 Настройка параметров симулятора Для выбора имитации работы конкретного микроконтроллера, а также его рабочей частоты, служит диалоговое окно Simulator Options (рис. 12), которое будет доступно после запуска режима пошаговой отладки. Открыть это окно можно по команде главного меню DebugAVR Simulator Options (комбинация клавиш Alt+O). Рис. 12 – Диалоговое окно Simulator Options Допустимые параметры выбранного микроконтроллера отображаются в текстовом поле, расположенном справа. В этом же окне на вкладке Stimuli and logging (рис. 13) можно указать файл в который будут записываться данные с выбранного порта ввода-вывода (функция Logging), а также указать файл из которого данные будут передаваться в выбранный порт ввода-вывода (функция Stimuli). Рис. 13 – Диалоговое окно Simulator Options, вкладка Stimuli and logging 12 При отладке исходного кода программы бывает необходимо проверить воздействие входных сигналов на порты ввода-вывода микроконтроллера. Для создания файла с исходными данными для последующей загрузки в порт ввода-вывода (функция Stimuli) можно воспользоваться сторонней программой Stimuli for AVR Studio (Stimuligenerator, рис. 14). Она позволяет в графическом режиме сформировать входные сигналы на каждой линии порта вводавывода. Рис. 14 – Окно программы Stimuli for AVR Studio Еще одно полезное стороннее приложение Hapsim (http://www.helmix.at/hapsim/) позволяет симулировать такие устройства как: светодиоды, кнопки, клавиатура, жидкокристаллический индикатор (LCD), терминал последовательного интерфейса USART или TWI (рис. 15). Рис. 15 – Окно программы Hapsim 13 Запускать данную программу необходимо после запуска пошагового режима в AVR Studio, иначе будет выдано соответствующее предупреждение. Ресурс по перепрошивке микроконтроллера ограничен, поэтому рекомендуется по возможности отлаживать исходный код программы в режиме симуляции применяя программу Hapsim и только после успешной отладки переходить к программированию микроконтроллера, установленного непосредственно на отладочной плате EasyAVR7. 9 Программирование микроконтроллера через AVRFLASH Отладочная плата EasyAVR7 имеет в своем составе встроенный программатор (рис. 16), позволяющий загрузить машинный код (файл с расширением .hex) скомпилированного исходного кода программы в установленный на плате микроконтроллер (МК) с помощью программы AVRFLASH (рис. 17). Рис. 16 – Программатор отладочной платы EasyAVR7 Рис. 17 – Окно программы AVRFLASH 14 Для загрузки машинного кода необходимо нажать кнопку Load в окне CODE и указать путь к файлу. В дальнейшем, при изменении файла машинного кода, достаточно нажимать кнопку Reload, если путь к файлу не меняется. Далее необходимо указать тип МК в окне Device и выбрать частоту тактового генератора в нижнем выпадающем списке окна FUSE Bits. По умолчанию (если не требуется применение более высокоточного и стабильного внешнего кварцевого резонатора) можно использовать внутренний (встроенный в МК) тактовый генератор на основе RC цепи. Для этого необходимо в списке выбрать Cal. Internal RC Oscillator с требуемой частотой. После того как все настройки выполнены, необходимо нажать кнопку Write для записи прошивки непосредственно в МК. 15