Avr studio как работать в программе

Здесь описан процесс по шагам для создания проекта на основе свободного компилятора AVR GCC.

1. Запустите AVR Studio, в стартовом визарде нажмите большую кнопку New Project, выберите AVR GCC, введите имя проекта (Project name:, выберите имя проекта так, чтобы было понятно, что за проект), выберите папку для размещения проекта (Location:), нажмите кнопку Next.

2. Выберите платформу для отладки (Debug platform:), тип микроконтроллера (Device:), нажмите кнопку Finish.

3. Введите текст программы в главный C-файл проекта (его имя совпадает с названием, которое Вы дали проекту), что-то типа:

int main (void) < while (1) < >return 0; >

4. Если Вы хотите, чтобы автоматически подхватывались операторы include «имя_файла.h», то вы должны указать все папки, где нужно искать эти include-файлы, в настройках проекта — меню Project -> Configuration Options -> нажмите кнопку слева «Include Directories», нажмите New (Insert), укажите путь к папке (можно воспользоваться кнопкой браузинга . ).

Introduction to AVR Studio

5. Файлы проекта, которые вызываются операторами include, должны быть вручную добавлены в Header Files среды разработки, иначе она их «не видит» — файлы эти компилируются, но изменения, сделанные текстовым редактором в них, не учитываются, пока включаемые файлы не сохранить.

6. Если во включаемых файлах объявляются функции, определенные в других C-файлах, то эти C-файлы нужно добавить в Source Files, чтобы они тоже компилировались.

7. Тип процессора (например, ATMega16) указывается в меню Project -> Configuration Options -> кнопка General -> выпадающий список Device: atmega16. При этом в зависимости от выбора компилятору передается информация от типе процессора с помощью опции -mmcu=тип_микроконтроллера (в нашем примере -mmcu=atmega16). Символьная информация о именах регистров (которая своя для каждого типа процессора) обеспечивается файлом-селектором avr/io.h, который исходя из типа процессора загружает нужный include-файл. В нашем примере загрузится файл avr/iom16.h, причем этот файл напрямую (без avr/io.h) включать нельзя.

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

extern void adcInit (void); // НЕПРАВИЛЬНО void adcInit (void); // ПРАВИЛЬНО

9. Генерация блокирующих задержек может быть осуществлена с помощью функций, определенных в заголовке delay.h.

#include < util/delay.h > _delay_ms(1); // миллисекундная задержка _delay_us(1); //микросекундная задержка

Для корректной работы подпрограмм задержки должна быть выставлена тактовая частота микроконтроллера в свойствах проекта (Project -> Configuration Options -> кнопка General -> указываем в окне ввода Frequency: частоту в герцах). При этом к компилятору передается опция -DF_CPU=тактовая_в_герцахUL, она создает макроопределение F_CPU, использующееся при генерации задержки.

10. Использование inline-инструкций ассемблера:

Работа с программой AVR Studio


asm volatile («nop»);

11. Работа с таймером WatchDog (WDT):

#include < avr/wdt.h > wdt_enable(WDTO_1S); //Настройка WDT на 1 секунду. . wdt_reset(); //Сброс WDT (для предотвращения перезагрузки) // в основном цикле программы.

12. Проверка бит (на примере бита ADSC регистра ADCSRA):

if (bit_is_clear(ADCSRA, ADSC)) < result = ADCL; result += ((uint16_t)ADCH) 8; ADCSRA |= (1 ADSC); >

В свежих версиях gcc (WINAVR) функция bit_is_clear может отсутствовать [1]. Используйте вместо неё следующую конструкцию:

if (!(ADCSRA result = ADCL; result += ((uint16_t)ADCH) 8; ADCSRA |= (1 ADSC); >

Вызов функции bit_is_set(ADCSRA, ADSC) может быть заменена на (ADCSRA DDRB |= 0b00000001; PORTB |= 0b00000001; > void OFF_LED (void) < DDRB |= 0b00000001; PORTB >

Однако увлекаться битовыми константами не советую, так как при портировании кода на другие компиляторы и платформы возникнут проблемы.

[Ссылки]

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

Програмирование в AVR Studio 5 с самого начала. Часть 1

Каждый человек, который только начинает осваивать программирование микроконтроллеров, да и вообще программирование, упирается сразу в несколько вопросов:
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
(Прямая ссылка на as5installer-5.0.1163-full.exe (602Mb) , будет работать, пока не смениться билд.)
А чтобы наглядно видеть результат своей работы, не используя паяльник или макетную плату достаточно установить программу Proteus v7.7

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

4. Рекомендую книгу: Джон Мортон. «Микроконтроллеры AVR. Вводный курс».

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)
кликаем ОК
Появляется станица редактора

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

В папке Debug находится скомпилированный .hex файл, который нам будет нужен для прошивки микроконтроллера.

Теперь мы готовы, чтобы начать писать программу. Но для того, чтобы правильно писать, нужно соблюдать определенные правила.
В следующей статье рассмотрим, как это сделать…

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

AVR Studio ликбез

Установка.
Сначала надо с сайта atmel.com скачать последнюю версию AVR Studio . Весит она что то около 30 метров. Можно и старые релизы использовать, не преступно, но там может не оказаться новых микроконтроллеров. AVR Studio , как и многие буржуйские программы, крайне хреново понимает русские имена и длинные пути. Поэтому ставь ее по максимально простому пути, что то вроде C:AVR А сами проекты тоже держи как можно ближе к корню, У меня, например, это D:WorkAVR — никаких имен длинней 8 символов и, конечно же, никаких русских символов. Привет родимый DOS, как говорится.

Да, если планируешь (если не планируешь, то все равно скачай и поставь, не помешает) писать на Си, то рекомендую скачать GCC aka WinAVR и установить ее ДО студии, туда же, поближе к корню. Тогда студия подхватит ее в качестве своего плагина. Если поставить после, то тоже, может быть подхватит, но возможны проблемы.

Первый запуск и знакомство с оболочкой
При старте Студия сразу же кидается в тебя мастером создания нового проекта.

В центре будут уже созданные проекты, а нас интересует кнопка New Project . Жми ее и вводи параметры будущей разработки.

Выбирай тип языка на котором будешь писать: Си или Ассемблер, а также имя будущего проекта. Также не помешает указать путь к папке с проектами. Студия умная и запомнит ее раз и навсегда и под каждый новый проект будет генерить новую папку. Так что скоро там будет полный гадюшник :))))) Дальше есть две кнопки Finish и Next . Тебе надо жать на Next . Нажмешь на финиш и получишь пустой проект в котором даже процессор то не определен. А вот если Next , то будет следующий диалог:

Читайте также:
Какое из изображений соответствует логотипу программы Microsoft word

Сильно сомневаюсь, что у тебя первоначально сразу же будет AVR Dragon или какой нибудь ICE 2 , так что мы будем симулировать. Выбирай симулятор. Чем отличается AVR Simulator от AVR Simulator2 я так и не понял, работают одинаково. Выбрал? Вот теперь FINISH HIM! В смысле жми Finish .

Во, появилось пустое окно проекта. Оглядим что тут есть:

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

Там все ошибки и косяки отображаются при компиляции проги.

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

  • Бинокль — поиск в коде. Кроме поиска там есть еще Mark ALL — пометить строки с найденым барахлом. Появляются такие голубенькие меточки возле строк.
  • Синий флажок и компания — поставить/снять пометку вручную. Удобнейшая вещь эти пометки. Пользуйся!
  • Две фиговины для форматирования блоков текста. Типа выделил процедуру, а потом подвинул ее влево или вправо. Сишники оценят 🙂
  • Синяя муть и птичка — кнопки для программаторов понтовых. Если их у тебя нет, то забей.
  • Стрелка Play — запуск симуляции.
  • Квадратик Stop — остановка симуляции. Все просто.
  • Листок со стрелочкой — запуск программы.
  • Пауза — остановка программы там где получилось
  • синяя стрелка аля Enter — виртуальный Reset контроллера
  • Желтая стрелка — показать где программа находится сейчас. Жутко полезно когда проект побит на части, и ты пытаешься найти где прога стоит в данный момент.
  • Три стандартные кнопки любого отладчика Step Into — сделать шаг по тексту программы. Step Over — сделать шаг по тексту, но не заходить в процедуры и функции (процедуры и функции при этом выполняются, просто нам это не показывают). Step-Out — Выход из процедуры на уровень выше. Конечно, назад МК шагать не умеет, но вот если там цикл какой, то Step Out это равносильно тому, что МК сделает одну итерацию цикла и встанет над инструкцией.
  • Фигурные скобки и стрелка — выполнить программу до текущего положения курсора. Пощелкай этой кнопочкой и сам поймешь что это
  • Красная точка — BreakPoint поставить бряк. О брейпоинтах ниже.
  • Крестик и красная жопа — нажмешь ее и всем брейкпоинтам в проге настанет жопа — их удалит.
  • Очки — это Watch , способ подглядывать за какой нибудь переменной, адресом в памяти или регистром. О них тоже потом.
  • Кнопки переключалок окон, включать выключать разные блоки интерфейса. Потыкайся по ним и поймешь сам.

Теперь если ты забьешь в проект простейший код, например,

1 2 3 4 5
.include «m8def.inc» ; Используем мега8 M1: NOP ; Ничего не делаем (команда NOP просто пропускает один такт и занимает одно слово в памяти) NOP ; Опять ничего не делаем NOP ; И снова ничего не делаем RJMP M1 ; Возвращаемся к метке М1 и снова ничего не делаем

.include «m8def.inc» ; Используем мега8 M1: NOP ; Ничего не делаем (команда NOP просто пропускает один такт и занимает одно слово в памяти) NOP ; Опять ничего не делаем NOP ; И снова ничего не делаем RJMP M1 ; Возвращаемся к метке М1 и снова ничего не делаем

Куда уж проще 🙂 То сможешь скомпилировать проект и запустить процесс отладки.

При запуске симулятора повылазит куча разных новых окошек, о которых я тебе сейчас расскажу. Гляди на скриншот:

I/O View
Окно переферии, то что справа. Обрати внимание на заголовок окна I/O View — там есть строка поиска и ряд кнопочек. Потыкай их, чтобы получить наиболее удобное представление. Я обычно ставлю Tree View. Каждый регистр можно развернуть.

Каждый бит подписан и во всплывающей подсказке написано его назначение. Также настоятельно рекомендую прошерстить контекстное меню в этом блоке и выставить там галку Show Bit numbers — удобно. Черный квадратик — бит есть. Белый — бита нет. Там же указано значение в байте.

В процессе отладки каждый бит можно вручную принудительно выставить или сбросить. Сэмулировав, например, нажатие кнопки.

    Program Counter — счетчик адресов. По нему можно узнать куда уйдет программа на следующем шаге. Когда отлаживаешь всякие индексные переходы, да извращенские конечные автоматы с переходами вида:

1 2 3 4 5
LDI R16,AddresL ; Кто сказал, что индексные переходы только по спец регистрам? LDI R17,AddresH PUSH R17 PUSH R16 ; ICALL? Щаз! Откуда хотим оттуда и скачем. RET ; Наш извращенский метод!

Читайте также:
Чаще всего используются следующие типы программ утилит

Watch
Это Watch лист. Можно на любой адрес, переменную или любой регистр навесить гляделку и там всегда будет отображаться его содержимое. Удобно при отладке, чтобы не шерстить по коду. Также содержимое регистров/переменных подсвечивается в подсказке при наведении мыши.

Отладка в AVR Studio
Код ты написал, он у тебя даже скомпилировался. Но от радости прыгать не получается — не работает как задумано. Чтож, бывает. Начинаем избавлять код от лажи — отлаживать.
Сначала подготовь плацдарм и выстави требуемую частоту процессора.

Как выставить частоту процессора в AVR Studio:
Загадка века, между прочим. Сходу фиг найдешь. Короче, запускай процесс симуляции. Только в этом случае появится нужный пункт меню. А потом лезь в меню Debug -> AVR Simulations Options . Ну не козлы, а? В такие гребеня прятать столь важный параметр.

Я почти два месяца его в свое время искал. Там же можно выставить адрес бутлоадера (он зависит от Fuse Bits в реальном МК).

Итак, симуляция запущена, а желтая стрелка бодро указывает на первую команду. Потыкай на клавишу F11, погляди как процессор шагает. Если все нормально, то переходи на то место, где у тебя предпологаемый затык. Например, не выставляется бит в порт. Можно поставить в это место курсор и нажать Run to Cursor, это если по быстрому.

Но лучше использовать брякпоинт.

BreakPoint
Это точка останова. Т.е. если какое то условие совпадет, то процессор встанет как вкопанный, пока ты не примешь решение, что же делать дальше. Мощнейшее средство отладки. Самый простой случай это установка Breakpoint — кнопкой F9, она же его и убирает. Через контекстное меню брейпоинт можно временно дезактивировать.

Все, если теперь ты нажмешь на F5 то проц, пойдет молотить код подряд, пока не дойдет до брейкпоинта. Где встанет как вкопаный, перейдя в пошаговый режим.

Техническое отступление, при желании можно его пропустить

Не получилось? Прождал полтора часа, а бряк так и не наступил? Ну значит где то у тебя косяк, зациклило прогу. Жми паузу и смотри где переклинило процессор. Можешь пошагово потрейсить и посмотреть в каком именно месте оно крутится. А дальше уже думать. Отработка больших циклов, может быть очень длительной.

Например, задержка длительностью в двадцать секунд, эмулируется в Студии порядка пяти минут. (на моем древнем Athlon 950) так что если у тебя где то тупит, то не помешает глянуть на показания StopWatch — может на самом деле все еще нормально, просто подождать надо. Чтобы не тупить на таких циклах я их на время отладки закомменчиваю или меняю предделитель таймера с 1024, на 1. На логику же это не влияет, так что можно проскочить их по быстрому.

Бряки бывают разные. Добавляются Брейкпоинты из меню Debug -> New Breakpoint их там два вида. Programm Breakpoint — это тупо точки останова на конкретном месте. Их проще расставлять не отсюда, а прям в коде на нужной строке. А вот ;Data Breakpoint это уже куда интересней. Погляди на выпадающий список — есть где развернуться.

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

Например, ты поставил брейк на начало цикла, нужно тебе поглядеть что происходит на какой-нибудь 140 итерации. Не будешь же ты тыкать пока оно там все 140 раз не прокрутится. Ставим в свойствах бряка число хитов которые он должен пропустить — 140 и на 140 итерации он тормознет программу. Удобно, черт возьми!
Все брейкпоинты видны в окне Breakpoint and tracepoint . Которое возникает внизу, там же где и сообщения об ошибках, в виде закладки. Оттуда им можно менять свойства, там же можно вывести отображение числа хитов и другие свойства бряка.

Работа с портами, эмуляция кнопок и прочего внешнего оборудования.
Есть в отладке AVR Studio одно небольшое западло , точнее особенность. Когда ты устанавливаешь порт на вход , делая подтяжку на резистор:
DDR= 0
PORT=1
То вывод виртуального МК остается равен нулю. Таким образом, все кнопки в отладчике AVR Studio по дефолту оказываются нажатыми! Нужно вручную выставить значение PIN, протыкав соответствующие галочки . Неудобно, но так.
А еще можно заказать вывод лога из порта или заливку туда данных извне! Вот это ваще мега фича. Во время отладки, в меню Debug->Simulation Options в разделе Stimulihttps://easyelectronics.ru/avr-studio-likbez.html» target=»_blank»]easyelectronics.ru[/mask_link]

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