Показаны сообщения с ярлыком avr. Показать все сообщения
Показаны сообщения с ярлыком avr. Показать все сообщения

понедельник, 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 и другими программаторами и семействами МК.
Между прочим, всё вышеописанное работает в самых различных операционных системах.

пятница, 28 января 2011 г.

Немного о AVRDUDE

AVRDUDE- кросплатформенная свободная консольная программа, предназначенная для прошивки микроконтроллеров фирмы Atmel серии AVR
Устанавливается она просто:

 aptitude install avrdude -это для Debian Linux , так же для Ubuntu.

 В других операционных системах всё несколько иначе но это уже выходит за рамки...
Русскую документацию можно посмотреть здесь или скачать в PDF  там же.
Вот так например выглядит запись файла прошивки 5.hex в МК Attiny13:

avrdude -c stk200 -p t13  200 -U flash:w:5.hex 



Для установки конфигурационных битов есть удобные онлайн-калькуляторы,например этот  или вот ещё.Они генерируют параметры которые нужно указать AVRDUDE.
А теперь рассмотрим реальную ситуацию -год назад прошил Attiny и выставил фьюзы соответственно работе внутреннего генератора 128кГц/8.
После этого контроллер перестал определяться.Это происходит потому,что частота ISP должна быть не выше 1/4 частоты процессора.
Именно для таких случаев у AVRDUDE есть ключик -i,после которого нужно указать задержку численно:

avrdude -c stk200 -p t13 -i 200 -U flash:w:прошивка.hex


Для AVRDUDE есть немало графических оболочек,например SinaProg или avr8-burn-o-mat
Я ими почти не пользуюсь,так как в bash есть автодополнение и поиск по истории команд.

Продолжение следует...