понедельник, 20 февраля 2012 г.

Программирование AVR из Geany

Итак,  небольшой и несуразный рассказ как настроить редактор  Geany для работы с компилятором Avra и программатором avrdude. Помимо этого используется система make
А о отладке, симуляции полноценных IDE и навороченных кодовых комбайнах и взглядах на это дело -не в этот раз.

Geany лучше сразу подложить файл с правильной подсветкой синтаксиса, если вы ещё не создали свой вариант.
Сразу отметим, существуют мелкие особенности совместимости компиляторов с компилятором от Atmel:

 Так, Avra версии 1.3.0 уже  переваривает такие штуки как #pragma  спокойно. В принципе, можно сделать/скачать правильные  заголовочные файлы и использовать более старую версию Avra. И не будет надоедливых строк типа:   tn13def.inc(54) : PRAGMA directives currently ignored


Теперь можно создать проект в Geany.
Затем в настройках выбираем: Сборка- Установить команды сборки
Выскочит вот такая штука:


Достаточно написать следующие команды (названия произвольные):

 "Скомпилировать"  make compile FILE=%eLE=%e
 "Прошить"               make program FILE=%e
 "Очистить"              make clean FILE=%e
 "Взвесить"               make size   FILE=%e

Теперь нужно написать makefile и положить его в папку проекта.
Это удобная система, потом при любом проекте указываем модель контроллера , фьюзы  и готово. По моему даже лучше чем выбирать из списка всё это в окнах настройки проекта. Естественно, makefile можно создать и получше  но тут будет совсем простой для простых проектов.
Не забываем про табуляцию перед командой, иначе будет ошибка. Также, некоторые редакторы типа notepad-а вставляют в файл свои невидимые  символы BOM в результате чего тоже будет ошибка.

Файл выглядит так:

# Makefile for programming AVR in Geany
#Параметры проекта:

MK=t13
LFuse=0x7A
HFuse=0xFF

# Более глобальные переменные.
ASM=/usr/bin/avra
ISP=/usr/bin/avrdude
INCLUDEDIR=/usr/share/avra/

compile:
    $(ASM) -I $(INCLUDEDIR) -l $(FILE) $(FILE).asm
program : $(FILE).hex
    $(ISP) -c stk200 -p $(MK)  -U flash:w:$(FILE).hex:i -U lfuse:w:$(LFuse):m -U hfuse:w:$(HFuse):m
clean:
    rm -f $(FILE).cof $(FILE).eep.hex $(FILE).hex $(FILE).obj *~
size:
    avr-size  $(FILE).hex
Вот и всё, теперь кодим, затем в голове  запускаем процесс отладчика.
Выставляем свой МК и fuse.
Жмём "Компилировать" -"Взвесить" - "Прошить".
Для этого ещё есть кнопки, например F8 компилировать и F9 прошить.
То есть, если мы дальше хотим работать с другой конфигурацией и контроллером, например Atmega8  то редактируем три строчки в начале файла.
Таким образом можно настроить и работу с другими компиляторами, например gavrasm и другими программаторами и семействами МК.
Между прочим, всё вышеописанное работает в самых различных операционных системах.

2 комментария:

  1. Как обойти ошибки вида PRAGMA directives currently ignored? Замучился уже.
    AVRA 1.3.0

    ОтветитьУдалить
    Ответы
    1. Это не ошибки, AVRA просто игнорирует эти директивы а программа работает.
      Решение- удалить #PRAGMA из inc-файла

      Удалить