Что за программа avr studio 4

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

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

Дальше, качаешь и устанавливаешь в каталог c:/avr/
WinVR
AVRStudio4_SP3

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

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

Дальше запускаешь AVRStudio4 и создаешь проект.

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

The Stack: Avr Studio 4 | ATMega32

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

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

дальше нужно выбрать симулятор. выбирай: AVR Simulator -> Amega8

ну теперь нажимай финишь.

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

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

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

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

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

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

С этим все ясно. дальше сложнее. Каждая команда, имеет размер 1, 2 или 3 байта.

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

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

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

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

Introduction to AVR Studio

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

.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.

Читайте также:
Программа booking что это такое

Так же, из Маркеров, можно сделать подпрограмму(процедуру), по завершению которой, мы вернемся туда, от куда её вызывали. Для вызова её, используем команду “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 Studio 4 с метками AVR, AVR Studio 4. Добавьте в закладки постоянную ссылку.

Источник: ddeev.ru

Работа с Arduino из AVR Studio 4

Хотите знать как прошивать Arduino из AVR Studio 4? Читайте далее.

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

Читайте также:
Boot программа что это

Последние полгода я начал использовать для целей такой предотладки плату Arduino и макетки которые я навешиваю со всех сторон. К родной среде программирования Arduino я даже не стал привыкать, пользуюсь компиляторами от IAR, AVR-GCC и отладкой в пакете AVR Studio 4.

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

Поиск по интернету на тему готового загрузчика для Arduino дал только то что желающих заиметь такой загрузчик хватает, а желающих его написать — нет. Прикинув что задача вполне реальна я взял известный загрузчик Питера Флери и ценой убитого выходного дня переделал его для работы с Arduino. Скачать исходники можно тут.

Теперь для того чтобы зашить программу из AVR Studio 4 в Arduino нужно замкнуть вывод 12 на землю и нажать на платке RESET, загорится индикатор L, после чего перемычку можно убирать и нажимать Connect из студии и прошивать Arduino как STK500 или AVR-ISP. Для тех кто привык к диалогам прошивки студии дальше все элементарно. Если неудобно использовать вывод 12 — можно этот момент исправить в исходниках и пересобрать самостоятельно.

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

Источник: habr.com

Интегрированная отладочная среда avr Studio фирмы Atmel

Шаг 1 – Запуск программы AVR Studio4. Запустите на выполнение программу AVR Studio4. После запуска на экране появится окно, подобное изображенному на Рис. 7.

Шаг 2 – Создание нового проекта

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

Чтобы создать новый проект, выберите пункт «New» функции «Project» в соответствующем разделе главного меню. На экран будет выведено диалоговое окно, показанное на Рис. 7.

Рис. 7. Окно программы AVR Studio4 в начале работы над проектом

В этом диалоговом окне вы должны задать имя проекта (555 в примере, код Вашего проекта следует составить из последней цифры календарного года, номера группы, номера бригады и номера лабораторной работы). Вы также должны указать расположение проекта в файловой системе, если не устраивает предлагаемое программой: C:Program FilesAtmelAVR ToolsAVR Studio4. Если соответствующей папки нет, AVR Studio создаст ее автоматически. Далее следует выбрать тип проекта: Atmel AVR Assembler: в этом случае AVR Studio4 использует для компиляции проекта программу Ассемблер. Затем нажмите Next>>, в окне Debug Platform нужно выбрать AVR Simulator, а в окне Device – Atmega16, как показано на Рис. 8.

Рис.8. Окно программы AVR Studio4 при выборе устройства

Для продолжения работы нажмите Finish. Диспетчер проекта выдаст на экран новое окно проекта. В нем будут показаны все файлы, связанные с данным проектом. В данном случае таких файлов нет.

Шаг 3 – Создание файла с кодом программы на ассемблере

В окне редактора ввести код программы.

Рис. 9. Окно редактора программы

Шаг 4 – Сохранение программы.

Сохранить набранный файл с расширением .asm.

Шаг 5 – Компиляция программы.

Выберите пункт «Build» функции «Build» в соответствующем разделе главного меню или нажмите клавишу «F7» или кнопку . После этого произойдет компиляция набранной программы (Рис.10). Возможные ошибки в программе можно просмотреть в окне «message». После устранения всех ошибок, откомпилировать программу снова.

Рис. 10. Компиляция программы

ОТЛАДКА КОДА ПРОГРАММЫ

Если файл с программным кодом подготовлен, то его можно запустить в режиме симулятора, выбрав в меню «Build» пункт «Build and Run» или нажав клавишу«Ctrl+F7» или кнопку . О переходе в этот режим свидетельствует выделение первой строки кода в окне редактирования программы (см. Рис. 11). Желтая стрелка слева указывает на инструкцию, которая будет выполняться на следующем шаге в соответствии с содержимым счетчика команд PC.

Читайте также:
App cloud что это за программа на Андроид Самсунг нужна ли как

Рис. 11. Указатель положения счетчика команд в окне с кодом

Процесс отладки заключается в отслеживании и управлении хода выполнения программы с помощью окна редактирования и специальных окон, показывающих состояния рабочих регистров (Registers), регистров ввода/вывода (I/O), окна наблюдения за переменными (Watch), регистров процессора и содержимого памяти. Эти окна могут быть выведены на экран из соответствующего пункта меню «View».

Настройка окна ввода-вывода

В окно «IO», щелкнув на пиктограмме «IO Window»(или соответствующий пункт меню «View»). Поскольку симулятор уже настроен для работы с типом микроконтроллера ATmega16, то соответствующие элементы его архитектуры отобразятся в окне «IO» автоматически (см. рис. 12).

Щелчок на значке + у строчки с надписью PORTB открывает связанные с портом ввода-вывода B (см. рис.13): регистр данных порта B (PORT B DATA), регистр управления направлением передачи порта Data Direction (DDRB) и регистр драйверов порта Input Pins (PINB). Состояние каждого бита этих регистров отображается в соответствующей позиции окна: логическому нулю («0») соответствует пустая позиция, а логическая единица («1») отображается чёрным квадратиком. Эти позиции окна могут изменяться в ходе выполнения программы, показывая текущее состояние каждого бита. В ходе выполнения программы вы также можете сами установить или сбросить эти биты, щелкая левой кнопкой мыши на соответствующем поле.

Рис. 12. Окно устройств ввода/вывода микроконтроллера ATmega16

Рис. 13. Содержимое регистров порта В

Пошаговое выполнение программы

Имеются две команды, управляющие пошаговым выполнением программы: «Step Over» (F10) и «Trace Into» (F11). Различие между этими командами состоит в том, что активизация (F10) позволяет не отслеживать ход выполнения программы внутри подпрограмм. В рассматриваемом примере нет подпрограмм и, следовательно, нет различия при выборе одной из этих клавиш.

Теперь перейдите к последней строке кода, нажимая несколько раз клавишу или выбрав опцию «Trace Into» из меню «Debug». Обратите внимание, что при изменении состояний регистров их цвета изменяются с черного на красный (см. рис. 14). Продолжая нажимать на кнопку , наблюдайте, как увеличивается значение данных в порту В.

Рис. 14. Просмотр содержимого регистров PORTB в режиме пошагового выполнения программы

Назначение точек остановки

Точки остановки позволяют остановить ход выполнения программы. Указывая точки остановки в ассемблерном коде программы, вы имеете возможность остановить ее выполнение в соответствующем месте (см. рис. 15).

Рис. 15. Индикатор точки останова программы

Требуется три раза нажать на кнопку (F11), чтобы выйти из цикла. При желании вы можете ускорить ход выполнения программы при отладке. Для этого установите точку останова напротив инструкции «rjmp», используя клавишу (F9) (или пункт «Toggle Breakpoint» меню «Breakpoint»). Красный кружок, появившийся в полях слева от кода отмечает установленное вами место остановки. После нажатия клавиши (F5) или выбора пункта «Go» в меню «Debug», программа начнет выполняться и остановится перед выполнением отмеченной вами команды.

Изменение программного кода

Пусть требуется изменить программу, например, сделать так, чтобы значения в выходном порту PORTB декрементировались. Чтобы отредактировать соответствующим образом первоначальный код программы, поместите курсор в нужное место кода и измените инструкцию «inc» на «dec».

Если теперь нажать (F5) (Go), то появится диалоговое окно, которое указывает, что один из исходных файлов проекта был изменен, и требуется новая компиляция и перекомпоновка проекта. Выберите кнопку «Yes». Проект будет снова скомпонован и программный счетчик установится напротив первой строки кода. При этом положение точки остановки программы сохраняется.

Установка окна просмотра состояния процессора

На Рис.16 изображено окно просмотра состояния процессора.

Рис. 16. Окно «Processor», показывающее состояние регистров процессора в ходе выполнения программы

Его можно открыть, выбрав соответствующую пиктограмму (или «View»- «Processor») Это окно отображает состояние регистра флагов «Flag» и текущие значения различных счетчиков. Дополнительно в нем можно наблюдать состояние счетчика циклов (Cycle Counter) и сторожевого таймера (StopWatch). Этим окном удобно пользоваться, если требуется определить длительность выполнения цикла или время выполнения подпрограммы. В данном примере нет необходимости использовать это окно.

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

Сохранение проекта

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

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru