Программирование в avr studio. AVR: программирование в среде AVR Studio

Каждый человек, который только начинает осваивать программирование микроконтроллеров, да и вообще программирование, упирается сразу в несколько вопросов:
1. Какой микроконтроллер выбрать для максимально быстрого освоения?
2. Какой основной инструмент (программу) использовать для начала работы?
3. Какие аппаратные средства доступны для начала программирования?
4. Какую литературу использовать?
5. Где общаться и получать вразумительные советы?

Когда я начинал, то сам столкнулся с этими вопросами. Начал искать литературу и решил, что надо начинать с PIC -ов. Перевес в сторону PIC -ов определился из за небольшого количества команд микропроцессоров среднего семейства - всего 35 против 136 у AVR , и наличием IDE - интегрированной среды разработки MPLAB . К сожалению, до последнего времени для микроконтроллеров AVR не было удобной интегрированной среды разработки, многие пользовались AVR Studio 4 , кто то писал на C в IAR, для отладки пользовались дополнительными программами, все зависило от личных приоритетов.

В этом году компания ATMEL наконец то «родила» IDE - AVR Studio 5 для программирования микроконтроллеров AVR . Много критических замечаний было сказано в адрес этой программы, но она существует и работает, возможно, компания со временем учтет все критические замечания, и сделает программу более гибкой, совершенной и не такой большой по размеру. Конечно по объему это монстр - инсталлируемый файл занимает 600 с лишним МБайт. Но, есть в ней и определенные удобства в работе, и не только для начинающих! Программа ориентирована для работы в среде C, но ассемблер поддерживается полностью.

Итак, попробуем ответить на возникшие вопросы:

1. Выбор микроконтроллера определяется теми задачами, которые вы перед собой поставили. Микроконтроллеры AVR имеют «избыточный» набор команд, и поэтому большинство программистов используют в среднем около 40 инструкций, редко прибегая к остальным. С другой стороны, когда требуется нетипичное решение, дополнительные команды могут оказаться весьма кстати, позволяя значительно сократить объем программы.
Технология производства микроконтроллеров сегодня одинакова как для PIC так и для AVR - RISC (Reduced Instruction Set Computer) - микроконтроллеры с сокращенным набором команд. Большинство из них имеют флеш-память, которая позволяет многократно их перезаписывать. Кроме этого микроконтроллеры AVR работают в 4 раза быстрее микроконтроллеров PIC .

2. Для начала, чтобы начать писать программы, нужно скачать интегрированную среду разработки AVR Studio 5
(Прямая ссылка на , будет работать, пока не смениться билд.)
А чтобы наглядно видеть результат своей работы, не используя паяльник или макетную плату достаточно установить программу Proteus v7.7

3. AVR Studio 5 поддерживает программатор STK-500 , инструкции по сборке которого, можно легко найти в просторах всемирной паутины.

5. Советы вы можете получать на любом форуме, где так или иначе затронуты темы по микроконтроллерам. Главное на форумах правильно формулировать вопросы, чтобы четко получать ответы. Абстрактные вопросы не приветствуются, и скорее всего вместо ответа вы получите жесткую критику, или ваш вопрос останется без внимания!
Скачать AVR Studio 5 можно, например, после бесплатной регистрации. Proteus вместе с патчем можно найти в Сети.

AVR Studio 5

Создание проекта
Примечание: AVR Studio «не любит» русских названий, поэтому проекты должны быть с английской транскрипцией. Старайтесь размещать проекты по кратчайшему пути к основному диску, избегать ветвлений в путях доступа к файлам проекта.

Запускаем программу, после некоторого «молчания» появляется окно:


В левом верхнем углу кликаем New Project…


Выбираем наверху AVR Assembler
В строке Name: пишем имя проекта (я написал Pracsis, вы можете Praxis или что то наподобие…)
В строке Location: путь и место хранения файлов проекта (в том числе файлы.asm и.hex)
Имя проекта введенное в строке Solution name: будет выводится в меню при старте (я эту строку не трогаю, чтобы не путаться)


кликаем OK
Появляется окно выбора микроконтроллера (Device Selection)


Выбираем контроллер (я выбрал ATtiny2313A)
кликаем ОК
Появляется станица редактора

Все наши файлы можно посмотреть в Моих документах (по умолчанию, если при создании проекта путь к файлам был изменен, то ищем их там, где вы их указали в строке

Для работы с AVR Studio 4 необходимо само собой её установить. Если она уже установлена, то можете пропустить этот шаг.

Установка:
создаешь каталог c:/avr/ – тут будут лежать рабочие программы.
создаешь каталог например c:/works/ – тут будут лежать твои работы.
надо что бы были короткие пути, что бы не было проблем с ними.

Есть вообще AVRStudio5 но и AVRStudio4 пока вполне хватает.

Вся работа будет проходить в AVRStudio4, WinAVR нужна только из-за библиотеки AVR-GCC (Для того, что бы можно было писать на Си)
НО! первым надо установить именно WinAVR , иначе библиотека AVR-GCC не подцепится.

Тут думаю разберешься.
AVR-GCC для того, что бы писать на Си
Atmel Avr Assembler соответственно для ассемблера.

Начинать разбираться с МК лучше с нуля. А это значит с Ассемблера, значит создаешь тот, который Atmel AVR Assembler.

Потом выбирай микроконтроллер Atmega8.

когда создастся проект, будет большой, белый, чистый лист. тут будет код.

немного про содержимое этого листа

“комментарии” – это текст, пропускаемый компилятором, при компиляции.
перед началом комментария должен стоять спец символ, пользуюсь символом; “точка с запятой”, есть еще “дабл сшеш” (//),
вот примеры комментариев

/* * Комментарий такого види(многострочный), * обычно используется для * сопроводительной информции * об исходном коде, т.е. * название, разработчик и т.д. */ NOP // Такой комментарий в основном используется для пояснения назначения команды, или куска кода SLEEP ; такой комментарий тоже как и предыдущий, можно использовать для пояснения (для заметок) в коде

команды записываются в каждой строчке. т.е. одна команда – одна строчка.
допустим есть команды с двумя “параметрами”, с одним, или без ничего

MOV R16, R17 ; два параметра INC R16 ; один параметр SEI ; без параметров

MOV R16, R17 ; три байта INC R16 ; два байта SEI ; один байт

Видите связь размера команды с параметрами?

У каждого микроконтроллера свой ассемблер, хотя мнимоника у них похожа, т.е. команда MOV у мк одной серии будет выглядеть в машинном коде допустим 0x12 а у другого 0x55.
что бы при компиляции, скомпилировалось в нужном нам коде мы должны сказать компилятору, для какого мк у нас пишется программа.
это вообще выбирается при создании проекта.
По этому мы выбрали микроконтроллер Atmega8.

Но и тут не все. для облегчения нашей жизни, в AVRStudio4 есть набор констант, которые именуются вроде как “Макроассемблер”.

Для тог, что бы их подгрузить нужно в начале кода вставить строчку

Include "m8def.inc" // командой.include, мы подгрузили файл m8def.inc ;и теперь нам станет легче;)

в самом начале кода, ставится таблица прерываний. Что это такое и как это работает, объясню в другой заметке. Но а пока, будем писать её так:

RJMP RESET ; Reset Handler RETI; RJMP EXT_INT0 ; IRQ0 Handler RETI; RJMP EXT_INT1 ; IRQ1 Handler RETI; RJMP TIM2_COMP ; Timer2 Compare Handler RETI; RJMP TIM2_OVF ; Timer2 Overflow Handler RETI; RJMP TIM1_CAPT ; Timer1 Capture Handler RETI; RJMP TIM1_COMPA ; Timer1 CompareA Handler RETI; RJMP TIM1_COMPB ; Timer1 CompareB Handler RETI; RJMP TIM1_OVF ; Timer1 Overflow Handler RETI; RJMP TIM0_OVF ; Timer0 Overflow Handler RETI; RJMP SPI_STC ; SPI Transfer Complete Handler RETI; RJMP USART_RXC ; USART RX Complete Handler RETI; RJMP USART_UDRE ; UDR Empty Handler RETI; RJMP USART_TXC ; USART TX Complete Handler RETI; RJMP ADC ; ADC Conversion Complete Handler RETI; RJMP EE_RDY ; EEPROM Ready Handler RETI; RJMP ANA_COMP ; Analog Comparator Handler RETI; RJMP TWSI ; Two-wire Serial Interface Handler RETI; RJMP SPM_RDY ; Store Program Memory Ready Handler

После этого идет уже сам код

RESTART: ; маркер инициализации MAIN: NOP ; маркер главного цикла RJMP MAIN

Но тут есть одна (точнее не одна, а много) особенностей.

Для удобства написания кода, для его понятности и для облегчения относительных переходов, нам подарили маркеры, как они выглядят? “RESET:” и “MAIN:” это маркеры, в их именах могут содержаться почти любые символы латинского алфавита и цифры. Маркеры не могут иметь имена функций и команд, допустим “NOP”.
Как к ним переходит? Допустим командой RJMP.

Так же, из Маркеров, можно сделать подпрограмму(процедуру), по завершению которой, мы вернемся туда, от куда её вызывали. Для вызова её, используем команду “RCALL (подпрограмма)”, а что бы вернуться из Подпрограммы(процедуры), нужно закончить её командой “RET”. У нас должен получиться такой код:

RESTART: MAIN: NOP RCALL PPP1 ; вызываем подпрограмму RJMP MAIN PPP1: NOP RET ; выходим из подпрограммы

Как работает команда “RCALL”, при её вызове, адрес из какого места её вызвали, помещается в СТЕК, а по вызове команды “RET”, извлекается из регистра “стек”. СТЕК нужно инициализировать.

Что бы нам работать с нашим мк, нужно его инициализировать. т.к. мк, это устройство универсальное, в нем есть много портов ввода/вывода, и периферийных устройств. таких как УСАПП, ШИМ, ЦАП, АЦП и т.д. Первым делом в инициализации мк нужно указать начало “стека”. Инициализацию мы проводим после маркера “RESET:”.

LDI R16,HIGH(RAMEND) OUT SPH,R16 LDI R16,LOW(RAMEND) OUT SPL,R16

Если бы мы не вводили команду.include “m8def.inc” в начале кода, то нам пришлось бы писать так:

LDI R16,0x04 OUT SPH,R16 LDI R16,0x5f OUT SPL,R16

Разница существенная, на мой взгляд.

СТЕК, это память магазинного типа: (последний вошедший, выходит первым).
Магазинного типа – это не супермаркет, а рожок от автомата. надеюсь все представили как в него заряжаются патроны и как они потом от туда извлекаются.
Нужно уделять очень большое внимание памяти СТЕК, т.к. любая незначительная ошибка в работе с ним, может привести к срыву стека. Это на столько важная тема, что я решил посветить ей целую тему и напишу её в отдельной заметке.

Таким образом у нас получился такой код:

Include "m8def.inc" RJMP RESET ; Reset Handler RETI; RJMP EXT_INT0 ; IRQ0 Handler RETI; RJMP EXT_INT1 ; IRQ1 Handler RETI; RJMP TIM2_COMP ; Timer2 Compare Handler RETI; RJMP TIM2_OVF ; Timer2 Overflow Handler RETI; RJMP TIM1_CAPT ; Timer1 Capture Handler RETI; RJMP TIM1_COMPA ; Timer1 CompareA Handler RETI; RJMP TIM1_COMPB ; Timer1 CompareB Handler RETI; RJMP TIM1_OVF ; Timer1 Overflow Handler RETI; RJMP TIM0_OVF ; Timer0 Overflow Handler RETI; RJMP SPI_STC ; SPI Transfer Complete Handler RETI; RJMP USART_RXC ; USART RX Complete Handler RETI; RJMP USART_UDRE ; UDR Empty Handler RETI; RJMP USART_TXC ; USART TX Complete Handler RETI; RJMP ADC ; ADC Conversion Complete Handler RETI; RJMP EE_RDY ; EEPROM Ready Handler RETI; RJMP ANA_COMP ; Analog Comparator Handler RETI; RJMP TWSI ; Two-wire Serial Interface Handler RETI; RJMP SPM_RDY ; Store Program Memory Ready Handler RESET: LDI R16,HIGH(RAMEND) OUT SPH,R16 LDI R16,LOW(RAMEND) OUT SPL,R16 RGMP RESET MAIN: NOP ; маркер главного цикла RJMP MAIN

На данном этапе, можно скомпилировать проект и запустить его для отладки, но по скольку код у нас ничего не делает, можно будет выявить только синтаксические ошибки в коде.

Для правильного процесса отладки, необходимо задать эмулятору частоту, с которой будет работать МК, это делается только после компиляции и запуска отладки,
значит находим в панели меню “Build”, раскрываем её и видим “Build and Run”, после чего, мы увидим желтую стрелочку на против первой команды в нашем листинге кода. Теперь мы ищем в панели меню “Debug” и нажимаем “AVR Simulator Options”, открывается такое окно:

В котором мы можем поменять МК и его частоту, так же, на панели с права, мы видим некоторую информацию о нашем МК: его максимальную частоту, объемы памяти(EEPROM, RAM, FLASH). Теперь открываем даташит на Atmega8, на странице 203 (общий список регистров) и 205 (общий список команд) и приступай к написанию своей программы.
И запомни, не бойся экспериментировать с симулятором, он от этого не сломается!

Для программирования AVR-микроконтроллеров существует немало средств разработки, однако, наиболее популярным, несомненно, следует признать пакет AVR Studio . Есть ряд причин такой популярности – это бесплатный пакет, разработанный фирмой ATMEL , он объединяет в себе текстовый редактор, ассемблер и симулятор. Пакет AVR Studio также используется совместно с аппаратными средствами отладки. В предлагаемой статье на примерах рассматриваются приемы работы с пакетом, что поможет начинающим программистам быстрее понять взаимодействие отдельных компонентов AVR Studio.

В следующей части статьи будет рассказано об отладке в среде AVR Studio программ, написанных на языке Си.

Пакет AVR Studio имеет солидную историю развития, что отражается в количестве существующих версий. В конце 2003 г. выпущена версия 4.08, которая имеет ряд полезных дополнений, а в начале 2004 г. вышло обновление (Service Pack 1), добавляющее поддержку AVR-контроллеров третьего поколения семейства ATmega48. Производство микросхем этого семейства намечено на вторую половину 2004 г.

Дистрибутив пакета и Service Pack можно загрузить с сайта www.atmel.com или получить компакт-диск с этим дистрибутивом у российского дистрибьютора фирмы ATMEL.

Работу пакета AVR Studio удобно рассматривать на какой-либо конкретной программе. В качестве илюстрации мы рассмотрим создание проекта для простейшей программы, которая будет по очереди зажигать два светодиода. Для определенности возьмем микросхему Atmega128 и подключим два светодиода в выводам 31 и 32 (это биты 6 и 7 порта D микросхемы ATmega128). AVR-контроллеры имеют мощные выходные каскады, типовой ток каждого вывода составляет 20 мА, максимальный ток вывода – 40 мА, причем это относится как к втекающему, так и к вытекающему току. В нашем примере светодиоды подключены анодами к выводам контроллера, а катоды через гасящие резисторы соединены с землей. Это означает, что светодиод зажигается подачей «1» на соответствующий вывод порта. Принципиальная схема приведена на рисунке. На схеме также показаны две кнопки, которые будут использованы в одной из программ.

Здесь уместно сделать небольшое отступление о выборе типа микросхемы для простейшего примера. Действительно, с первого взгляда может показаться странным, зачем нужен такой мощный кристалл в 64-выводном корпусе там, где хватит и 8-выводной микросхемы ATtiny12 ? Однако, в таком подходе есть логика. Известно, что в основе практически любого AVR-контроллера лежит одинаковое ядро. По большому счету, контроллеры различаются объемом памяти, количеством портов ввода/вывода и набором периферийных модулей. Особенности каждого конкретного контроллера – привязка логических имен регистров ввода/вывода к физическим адресам, адреса векторов прерываний, определения битов портов и т.д. описаны в файлах с расширением.inc, которые входят в состав пакета AVR Studio. Следовательно, используя конкретный тип кристалла, можно отлаживать программу как собственно для него, так и для любого младшего кристалла. Далее, если использовать в качестве отладочного самый старший кристалл, на сегодня это ATmega128, можно отлаживать программу практически для любого AVR-контроллера, надо просто не использовать аппаратные ресурсы, которые отсутствуют у целевого микроконтроллера. Таким образом, например, можно отлаживать на ATmega128 программу, которая будет выполняться на ATtiny13 . При этом исходный код останется практически тем же, изменится лишь имя подключаемого файла с 128def.inc на tn13def.inc. У такого подхода также есть свои преимущества. Например, «лишние» порты ввода/вывода можно использовать для подключения ЖК-индикатора , на который можно выводить отладочную информацию. Или, воспользоваться внутрисхемным эмулятором, который подключается к JTAG-порту микросхемы ATmega128 (контроллер ATtiny13 такой порт не имеет). Таким образом, можно использовать единственную отладочную плату, на которой установлен «старший» AVR-контроллер, для отладки любых вновь разрабатываемых систем, естественно, базирующихся также на AVR-микроконтроллерах. Одна из таких плат называется AS-megaM. Именно она использовалась для создания примеров программ, приводимых в статье. Это универсальный одноплатный контроллер на базе микросхемы ATmega128, который содержит внешнее ОЗУ, два порта RS-232 , порт для подключения ЖК-индикатора, внутрисхемного программатора и эмулятора AT JTAG ICE . На плате также есть место для распайки микросхемы FLASH-ПЗУ серии АТ45 в корпусах TSOP32/40/48 и двухканального ЦАП серии AD5302/ AD5312/ AD5322 . Теперь, после объяснения причин использования AVR-монстра для зажигания пары сватодиодов, можно идти дальше.

При программировании в среде AVR Studio надо выполнить стандартную последовательность действий:

  • компиляция
  • Создание проекта начинается с выбора строки меню Project\New Project. В открывшемся окне “Create new Project” надо указать имя проекта, (в нашем случае – sample1) и имя файла инициализации. После нажатия кнопки “Next” открывается окно “Select debug platform and device”, где выбирается отладочная платформа (симулятор или эмулятор) и тип микроконтроллера.

    Можно выбрать один из предлагаемых внутрисхемных эмуляторов, заметим, что у каждого эмулятора свой список поддерживаемых микросхем. Для рассматриваемого примера мы выбираем в качестве отладочной платформы AVR Simulator и микросхему ATmega128. После нажатия кнопки “Finish” нашему взору предстают собственно рабочие окна пакета AVR Studio, пока пустые. Следует в правое окно поместить исходный текст программы. Это можно сделать двумя способами, либо набрать весь текст непосредственно в окне редактора, либо загрузить уже существующий файл. Ниже приведен полный текст простейшей программы с комментариями.

    ; Пример «Управление светодиодами» ; написан для отладочной платы AS-MegaM ; Частота задающего генератора 7,37 МГц; светодиоды подключены к выводам PD6 и PD7 и через резисторы - на общий провод. ; подключение файла описания ввода-вывода микросхемы ATmega128 .include "m128def.inc" ; начало программы begin: ; первая операция - инициализация стека; если этого не сделать, то вызов подпрограммы или прерывания; не вернет управление обратно; указатель на конец стека устанавливается на последний адрес внутреннего ОЗУ - RAMEND ldi r16,low(RAMEND) out spl,r16 ldi r16,high(RAMEND) out sph,r16 ; для того, чтобы управлять светодиодами, подключенными к выводам PD6 и PD7, ; необходимо объявить эти выводы выходными. ; для этого нужно записать "1" в соответствующие биты регистра DDRD (DataDiRection) ldi r16,(1<<6) | (1<<7) out DDRD,r16 ; основной цикл программы loop: ldi r16,(1<<6) ; светится один светодиод out PORTD,r16 rcall delay ; задержка ldi r16,(1<<7) ; светится второй светодиод out PORTD,r16 rcall delay ; задержка rjmp loop ; повторение цикла; процедура задержки; примерно полсекунды при частоте 7,37 МГц; три пустых вложенных цикла соответственно delay: ldi r16,30 ; 30 delay1: ldi r17,200 ; 200 delay2: ldi r18,200 ; и еще 200 итераций delay3: dec r18 brne delay3 dec r17 brne delay2 dec r16 brne delay1 ret ; возврат в главную программу

    Проект может состоять из нескольких файлов, при этом один файл назначается основным. Все операции удобно производить, используя контекстную кнопку мыши. После подключения исходного файла окна имеют следующий вид.

    Компиляция проекта производится командой \Project\Build или нажатием кнопки F7. Процесс компиляции отображается в окне “Output”. Это окно можно «вытащить» командой \View\Output.

    В принципе, мы уже получили выходной файл в формате.hex, который уже можно загружать в микросхему и наблюдать перемигивание светодиодов. Однако, цель статьи – показать полный цикл работы в среде AVR Studio, поэтому мы переходим к стадии отладки. Это делается командой \Debug\Start Debugging.

    Теперь устанавливаем в окне “Simulator Options” частоту кварца 7,3728 МГц для точного измерения времени выполнения программы.

    Остальные опции следует оставить без изменения. Теперь можно выполнять программу в пошаговом режиме при помощи мыши или кнопки F11.

    Пакет AVR Studio содержит мощные средства для просмотра и редактирования состояния внутренних регистров и портов ввода/вывода отлаживаемого микроконтроллера, а также время, выполнения программы. Доступ к ним осуществляется через окно “I/O”.

    На самом деле, количество информации, доступное через окна просмотра пакета AVR Studio настолько велико, что для получения максимального комфорта нужно использовать компьютер в двухмониторной конфигурации.

    Для отладки нашего примера, чтобы получить доступ к битам порта D, надо раскрыть строку I/O ATMEGA128 и затем строку PORTD. Теперь видны все три регистра этого порта, PORTD, DDRD и PIND. Чтобы увидеть поля Value, Bits и Address, придется расширить правую границу окна, потеснив при этом окно с исходным текстом программы.

    Теперь, проходя программу в пошаговом режиме, можно видеть изменение текущих состояний этих регистров в поле Bits. Есть возможность оперативного изменения состояния любого бита регистров порта, причем это можно делать либо записью нового кода в поле Value, либо непосредственно, щелкнув мышью на нужном бите регистра.

    Для самостоятельных упражнений, предлагается следующая программа, которая отличается от предыдущей тем, что зажиганием светодиодов управляют две кнопки.

    ; Пример «Управление светодиодами от кнопок» ; написан для отладочной платы AS-MegaM ; светодиоды подключены к выводам PD6 и PD7 и через резисторы - на общий провод. ; кнопки - на PE4 и PE5 .include "m128def.inc" ; основная программа begin: ; инициализация стека ldi r16,low(RAMEND) out spl,r16 ldi r16,high(RAMEND) out sph,r16 ; инициализация светодиодов ldi r16,(1<<6) | (1<<7) out DDRD,r16 ; инициализация выводов, к которым подключены кнопки (на вход) ; внутренние подтягивающие резисторы подключены; для этого в PORTE нужно установить соответствующие биты в единицы ldi r16,(1<<4) | (1<<5) out PORTE,r16 ; а в DDRE - в нули ldi r16,0 out DDRE,r16 ; бесконечный цикл forever: in r16,PINE ; теперь в r16 находится текущее "состояние" кнопок com r16 ; кнопка "нажимается" нулем, поэтому инвертируем регистр lsl r16 ; переносим биты 4,5 в позиции 6,7 lsl r16 ; и обновляем "показания" светодиодов andi r16,(1<<6) | (1<<7) out PORTD,r16 rjmp forever ; цикл выполняется бесконечно

    Таким образом, на примере простейших программ показаны некоторые возможности пакета AVR Studio. Надо понимать, что это лишь первое знакомство, позволяющее быстрее освоиться с базовыми командами пакета. Между тем, возможности рассматриваемого пакета намного шире. Например, здесь можно отлаживать программы написанные на языках высокого уровня. В частности, Си-компилятор фирмы ImageCraft пользуется отладчиком AVR Studio «как родным». Для этого при компиляции исходного кода надо установить опцию генерации выходного файла в формате, совместимом с AVR Studio. При этом появляется возможность производить отладку в исходных кодах.

    Еще одна из многих характеристик пакета AVR Studio - возможность подключения внешних программ. Например, для обеспечения вызова оболочки внутрисхемного программатора AS2 нужно выполнить несколько простых операций.

    В меню Tools главного окна AVR Studio надо выбрать пункт Customize;

    В окне Customize выбрать пункт Tools;

    Двойным нажатием кнопки мыши или нажав Insert на клавиатуре, добавить новую команду в список и назвать ее "Программатор AS2";

    Указать путь к исполняемому файлу программатора, введя его непосредственно в поле для ввода "Command", или нажав на кнопку "…" справа от этого поля;

    Теперь в меню Tools появился пункт "Программатор AS2".

    Средства пакета AVR Studio 4.08 позволяют подключать вспомогательные программы – plugins. Первый plugin для AVR Studio – это программа графического редактора, упрощающая процесс инициализации ЖК-индикатора, которым может непосредственно управлять AVR-контроллер ATmega169. Максимальный логический размер ЖК-индикатора составляет 100 сегментов, каждому элементу индикатора ставится в соответствие бит в специальном регистре контроллера. Чтобы упростить рутинную процедуру привязки определенных битов к каждому сегменту, можно использовать вышеупомянутую программу.

    Во время посещения «родины AVR» - норвежского офиса фирмы ATMEL, один из авторов статьи беседовал с Ларсом Квенилдом, руководителем группы программистов, которая создала и поддерживает пакет AVR Studio. Этот человек, классический программист, с бородой, в свитере и обутый в сандали на носки, рассказал о перспективах развития пакета. В следующую версию (4.09) - будет включен интерфейс для нового внутрисхемного эмулятора – JTAGICE mkII (он называется также AT JTAGICE2), который во второй половине года придет на смену AT JTAGICE. У этого эмулятора есть два существенных отличия. С одной стороны, добавлена поддержка нового однопроводного отладочного интерфейса для младших AVR-контроллеров, debugWIRE. Этот интерфейс интересен тем, что он не занимает для своей работы дополнительные выводы микроконтроллера, так как использует для обмена вывод Reset микроконтроллера! С другой стороны (можно понимать это выражение буквально), у эмулятора AT JTAGICE2 появится, наконец, интерфейс USB для связи с компьютером.

    Литература

    1. Материалы технического семинара AVR Technical Training. Atmel. Norway. December 2003.
    2. Николай Королев, Дмитрий Королев AVR-микроконтроллеры второго поколения: средcтва разработчика. // Компоненты и технологии, 2003 № 7
    3. AVR-микроконтроллеры второго поколения: новые аппаратные возможности // Компоненты и технологии. 2003. № 4 .
    4. Николай Королев, Дмитрий Королев. AVR-микроконтроллеры: большое в малом. //Схемотехника», 2001, №5
    5. Николай Королев, Дмитрий Королев. AVR-микроконтроллеры: программные средства // Компоненты и технологии, 2000. № 4 .
    6. Николай Королев. AVR: аппаратные средства разработчика // Компоненты и технологии, 1999 № 1
    7. Николай Королев. RISC- микроконтроллеры фирмы ATMEL //Chip-News 1998, №2
    8. Николай Королев, Дмитрий Королев AVR: новые 8-разрядные RISC-микроконтроллеры фирмы ATMEL //Микропроцессор Ревю, 1998, №1

    AVR Studio 4 - новая профессиональная интегрированная среда разработки (Integrated Development Environment - IDE), предназначенная для написания и отладки прикладных программ для AVR микропроцессоров в среде Windows 9x/NT/2000. AVR Studio 4 содержит ассемблер и симулятор. Также IDE поддерживает такие средства разработки для AVR как: ICE50, ICE40, JTAGICE, ICE200, STK500/501/502 и AVRISP. В ближайшие месяцы будет расширен список поддерживаемых AVR Studio 4 микроконтроллеров и средств разработки. Обо всех обновлениях можно будет узнать на интернет сайте.

    AVR Studio поддерживает COFF как формат выходных данных для символьной отладки. Другие программные средства третьих фирм также могут быть сконфигурированы для работы с AVR Studio.

    Окно исходного текста программ

    Ключевое окно в AVR Studio это окно исходного текста программы. Когда объектный файл открыт, автоматически создается окно исходного текста программ. В окне отображается код, который выполняется в отладочном окружении (эмуляторе или программном симуляторе) а текстовый маркер всегда находится на строке, которая будет выполнена в следующем цикле.

    Выполнение программ и пошаговый режим

    Пользователь может выполнять программу полностью в пошаговом режиме, трассируя блоки функций, или выполняя программу до места, где стоит курсор. В дополнение можно определять неограниченное число точек останова, каждая из которых может быть включена или выключена. Точки останова сохраняются между сессиями работы.

    Просмотр регистров

    В окне исходного текста программы выводится информация о процессе выполнения программы. В дополнение, AVR Studio имеет много других окон, которые позволяют управлять и отображать информацию о любом элементе микроконтроллера.

    Список доступных окон:

    • Watch window: Окно показывает значения определенных символов. В этом окне пользователь может просматривать значения и адреса переменных.
    • Trace window: Окно показывает хронологию программы, выполняемой в настоящее время.
    • Register window: Окно показывает содержимое регистров. Регистры можно изменять во время остановки программы.
    • Memory windows: Окна показывают содержимое памяти программ, данных, портов ввода/вывода и энергонезависимого ПЗУ. Память можно просматривать в HEX, двоичном или десятичном форматах. Содержимое памяти можно изменять во время остановки программы.
    • I/O window: Показывает содержимое различных регистров ввода/вывода:
    • EEPROM
    • I/O порты
    • Таймеры
    • и т.д.
    • Message window: Окно показывает сообщения от AVR Studio.
    • Processor window: В окне отображается важная информация о ресурсах микроконтроллера, включая программный счетчик, указатель стека, регистр статуса и счетчик цикла. Эти параметры могут модифицироваться во время остановки программы.

    Настройки рабочего окружения сохраняются при выходе. При первом запуске требуется настроить окна для управления и вывода необходимой информации. Во время следующей загрузки настройки автоматически восстанавливаются.

    В AVR Studio включена поддержка отладочных средств фирмы Atmel:

    • Внутрисхемный эмулятор Atmel ICEPRO
    • Внутрисхемный эмулятор Atmel MegaICE
    • Внутрисхемный эмулятор Atmel AVRICE
    • Внутрисхемный эмулятор Atmel ICE200
    • Внутрисхемный эмулятор Atmel AsicICE
    • Внутрисхемный эмулятор Atmel ICE10
    • Внутрисхемный эмулятор Atmel ICE30

    С AVR Studio также совместимы любые программаторы и отладочные средства, которые поддерживают микроконтроллеры фирмы Atmel.

    Программное обеспечение:

    AVR Studio 4.12 Service Pack 4 (сентябрь 2006)
    Очередное обновление популярной интегрированной среды для проектирования со встроенным ассемблером и симулятором. Четвертый пакет обновления SP4 наследовал все новые возможности предыдущих обновлений SP1, SP2 и SP3. Обновлены программа, прошивка, руководство пользователя и список поддерживаемых микроконтроллеров у AVR Dragon. Также в пакет входят новые прошивки для отладочных средств JTAGICE MKII и STK500. Включена поддержка новых типов микроконтроллеров, в т.ч.: ATmega644P, ATmega329P, ATmega3290P, ATmega325P, ATmega3250P. Устранены ошибки в работе симулятора, ассемблера и JTAGICEmkII. Обратите внимание, что AVR Studio 4 SP3 и SP4 не могут работать в составе операционной системы Windows 95.
    Интегрированная среда для проектирования AVR Studio 4.12 (45Mb Ноябрь 2005 г.)
    AVR Studio 4.11 Service Pack 3 (27 MB, updated Май 2005 г.)
    Интегрированная среда для проектирования AVR Studio 4.11 (41Mb Январь 2005 г.)
    Интегрированная среда для проектирования AVR Studio 4.10 (30Mb Сентябрь 2004 г.)
    Новика! AVR Studio 4.10 с обновленным ассемблером (версия 2 beta-5 (AVRASM2)), старая версия ассемблера AVRASM1 подключена по умолчанию. Обновлен симулятор AVR Studio, который теперь также поддерживает новые микроконтроллеры AVR ATmega165, ATmega649, ATmega325, ATmega3250, ATmega3290. Обновлена программная поддержка JTAGICE2, ICE50, STK500, AVRISP, JTAGICE2. Обновлен USB WinDriver с версии 6.03 на версию 6.22.
    Интегрированная среда для проектирования AVR Studio 4.09 (28Mb апрель 2004 г.)
    В AVR Studio 4.09 добавлена поддержка JTAGICE mkII. В сочетании с новой версией AVR Studio JTAGICE mkII является завершенным инструментальным средством для выполнения внутрикристальной отладки всех 8-разр. AVR RISC микроконтроллеров, содержащих для этой цели интерфейс JTAG или однопроводной интерфейс debugWIRE. В данную версию также добавлена поддержка новых микроконтроллеров, а также внесено несколько улучшений.
    AVR Studio 4.08 SP1 (8 Мбайт, обновлено 2/04)
    Это служебный выпуск AVR Studio 4, который требует предварительной инсталляции AVR Studio версии 4.08. Он добавляет поддержку симуляции и эмуляции (ICE50) нового семейства AVR -микроконтроллеров ATMega48. Полная информация об особенностях данного выпуска приведена во включенной документации, которая доступна из меню Help в AVR Studio.
    AVR Studio 4.08 (26 Мбайт, обновлено 12/03)
    AVR Studio 4.08 - интегрированная среда разработки (IDE), предназначенная для написания и отладки прикладных программ для AVR микропроцессоров в среде Windows 9x/NT/2000. Обновлены трассировщик, монитор стека и поддержка усовершенствованного USB для ICE40/50. Кроме того, имеется еще ряд дополнений.
    12756 Kb AVR Studio V4.0
    7163 Kb AVR Studio V3.56
    1.31 Mb AVR LCD Visualizer версии 1.0 (обновлено 02/2004), общедоступная бета- версия.
    Создание и изменение ЖКИ при помощи редактора, отладка и визуализация при помощи дополнений к программе AVR Studio. Обновление в реальном времени при работе с ICE50 и симулятором. Поддерживает ATmega169. Для установки требует наличие IDE AVR Studio версии 4.07 или более новой. Перед установкой необходимо удалить старые ЖКИ дополнения к программе.

    Atmel Studio – это интегрированная платформа разработки, которая предоставляет возможность проектировать и отлаживать приложения, разработанные для микроконтроллеров Atmel на базе архитектуры ARM процессоров серии Cortex-M. Atmel Studio представляет собой цельную, простую в работе среду, предоставляющую возможность отладки и компоновки приложений, созданных на языке C/C++ либо на ассемблере. В нее встроена объёмная библиотека абсолютно бесплатного исходного кода Atmel Software Framework, в составе которой наличествует более 1600 проектов для ARM и AVR архитектур. Наличие такой библиотеки является отличным бонусом для любого программиста. Данную IDE можно использовать для программирования всего разнообразия микроконтроллеров на основе AVR, а также флеш-микроконтроллеров на базе Atmel SAM3, в которых используются ядра Cortex-M3, Cortex-M4.

    Atmel Studio также включает в себя инструменты, которые сильно облегчат жизнь любому программисту. В платформу встроены такие решения, как Atmel Spaces и Atmel Gallery. Atmel Gallery – онлайн-магазин инструментов разработки и интегрируемого программного обеспечения. Atmel Spaces представляет собой пространство в облаке, предназначенное для кооперативной разработки и хранения файлов проектов аппаратного и программного обеспечения для микроконтроллеров Atmel.

    Ключевые особенности и функции

    • является совершенно бесплатной интегрированной средой разработки;
    • поддерживает языки C/C++, а также Assembler;
    • сопровождается подробной документацией;
    • включает в себя обширную библиотеку с примерами исходного кода для различных приложений;
    • предназначена для программирования микроконтроллеров Atmel.

    Специальные требования

    • тактовая частота процессора от 1,6 ГГц и выше;
    • для 32-битных систем от 1 Гб оперативной памяти;
    • для 64-битных систем от 2 Гб оперативной памяти;
    • при запуске на виртуальной машине рекомендуется дополнительно 512 Мб оперативной памяти;
    • 6 Гб свободного пространства на жестком диске.

    Что нового в этой версии?

    7.0.790 (25.02.2016)

    • добавлена поддержка расширенного дебаггера (EDBG);
    • добавлена поддержка профилей настроек интерфейса. Переключаться между профилями можно при помощи клавиш в панели настроек;
    • добавлена возможность импорта библиотек в ранее импортированные проекты. Добавлена поддержка Arduino Zero и Zero Pro;
    • теперь параллельная сборка включена по умолчанию;
    • обновлена прошивка для Xplained Mini;
    • исправлена работа функции "Показать все файлы" в Solution Explorer.