Записи с тегом «AVR»

Использование avrdude с AVR Studio 5

31.12.2011 11:04 / Артём Волк / 221 просмотр / ...

Для микроконтроллеров AVR существует большое количество неофициальных программаторов, большинство из которых поддерживается avrdude и не поддерживается напрямую IDE AVR Studio 5.

Пока нашел следующие способы вызвать avrdude из IDE:

Post-build Events

В свойствах проекта (Project -> Properties -> Build Events) для каждой конфигурации в поле Post-build event command line можно указать команды, которые будут выполнены после успешной сборки проекта:

avrdude -v -c usbtiny -p $(avrdevice) -U flash:w:$(Name).hex

По умолчанию конфигурации две: Release и Debug, удобно создать ещё одну на основе Release, которая будет отличаться вызовом avrdude для прошивки.

External Tools

В пункте меню Tools -> External Tools можно указать команды для запуска внешних утилит. Минус решения — не нашел способа автоматически подставить тип контроллера из текущего проекта.

Вызывать внешнюю команду можно и по горячей клавише, которая выбирается в пункте Tools -> Options -> Environment -> Keyboard. Название команды для внешней утилиты выглядит так: Tools.ExternalCommandX, где X — номер по порядку.

Перенос make-файлов (Makefile) с WinAVR на AVR Toolchain

11.12.2011 17:48 / Артём Волк / 353 просмотра / ...

Проект WinAVR больше не поддерживается автором, вместо него Atmel предлагает AVR Toolchain (в виде отдельного пакета и в составе AVR Studio 5).

Возникла необходимость пересобрать старый проект, make-файл которого основывался на шаблоне из комплекта WinAVR, новым тулчейном. Для этого понадобились небольшие правки make-файла. Большинство из них необходимы потому, что в WinAVR был эмулятор оболочки (sh), а в AVR Toolchain его нет, поэтому команды оболочки заменены на консольные команды Windows. Изменения в формате diff-файла ниже (автоматически накатить patch, скорее всего не получится, номера строк могут быть разными).

читать дальше...

Настройки Arduino IDE для ATmega8(A) с optiboot

11.12.2011 17:19 / Артём Волк / 479 просмотров / ...

В платах от проекта Arduino начиная с платы Arduino Uno используется новый бутлоадер optiboot (занимает всего 512 б флеш-памяти, прошивка на скорости 115200). С недавних версий этого бутлоадера появилась поддержка контроллера ATmega8 с внешним кварцем на 16 МГц. Для того, чтобы воспользоваться ею из среды Arduino 1.0 достаточно добавить в файл \hardware\arduino\boards.txt следующее (необходимые скомпилированные файлы бутлоадера уже есть в комплекте):

##############################################################

atmega8optiboot.name=ATmega8 (optiboot, 16Mhz XTAL)

atmega8optiboot.upload.protocol=arduino
atmega8optiboot.upload.maximum_size=7680
atmega8optiboot.upload.speed=115200

atmega8optiboot.bootloader.low_fuses=0xBF
atmega8optiboot.bootloader.high_fuses=0xCC
atmega8optiboot.bootloader.path=optiboot
atmega8optiboot.bootloader.file=optiboot_atmega8.hex
atmega8optiboot.bootloader.unlock_bits=0x3F
atmega8optiboot.bootloader.lock_bits=0x0F

atmega8optiboot.build.mcu=atmega8
atmega8optiboot.build.f_cpu=16000000L
atmega8optiboot.build.core=arduino
atmega8optiboot.build.variant=standard

Командная строка avrdude (для прошивки без Arduino IDE, номер COM-порта нужно заменить):

avrdude -v -p atmega8 -c arduino -P COM2 -b 115200

Массив массивов в PROGMEM для микроконтроллеров AVR

11.06.2011 11:39 / Артём Волк / 803 просмотра / ...

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

Особенно понравился доступ к массивам не так: a[2], а вот так: 2[a] (это работает для любых массивов в C) :)

смотреть код...

Пример работы с protothreads на GCC-AVR

01.05.2011 22:10 / Артём Волк / 1039 просмотров / ...

Вдохновившись описанием Protothreads у BSVi, набросал небольшой пример их использования в виде программы, мигающей двумя светодиодами с разной частотой. Для пущей важности был использован system tick timer и супер-макросы для работы с GPIO.

Интересно, правильно ли я понял идею протопотоков? :)

посмотреть код...

System tick timer для ATmega8

01.04.2011 20:59 / Артём Волк / 1048 просмотров / ...

Для одного проекта на ATmega8A понадобилась реализация системного таймера, отмеряющего время в миллисекундах. Один из вариантов был найден в исходниках библиотек Arduino, второй у DI HALT'a. В обоих случаях используется самый простой 8-битный TIMER0, поэтому два других, более продвинутых таймера остаются свободными, например, для ШИМа. Значения посчитаны для тактовой частоты 8МГц.

читать дальше...

Макросы на C для работы с GPIO микроконтроллеров AVR

20.02.2011 21:05 / Артём Волк / 1533 просмотра / ...

Работа с универсальными портами ввода-вывода микроконтроллера — одна из основных задач в их программировании. В комментариях к записи в блоге BSVi, посвящённой удобной работе с GPIO на языке C пользователь ReAl подсказал, что удобные макросы для AVR-GCC включены в порт операционной системы scmRTOS для архитектуры AVR. Для того, чтобы добраться до заветного файла пришлось скачивать исходники этой ОС, поэтому продублирую нужный файл здесь с сохранением копирайтов.

макросы с примерами...

Минимальный клон Arduino на ATmega8A с модифицированным bootloader'ом

09.01.2011 16:53 / Артём Волк / 798 просмотров / ...

Snippet отсюда опубликован в Arduino-блоге Ильи Данилова. Его статьи мне очень сильно помогли в самом начале освоения Arduino (никто не говорит, что оно завершено :)), эта заметка — попытка внести свой вклад и отблагодарить его за труды.

Использование NetBeans с WinAVR

13.12.2010 23:26 / Артём Волк / 1005 просмотров / ...

Для PHP-проектов с недавних пор использую NetBeans, поэтому для проектов на C под WinAVR возникла идея использовать эту же IDE. Оказалось, что для программирования для AVR-платформы NetBeans мало кто использует, но после небольшой доработки напильником почти всё получилось :).

что и где пилить...

Использование Arduino-платы с WinAVR

25.11.2010 23:37 / Артём Волк / 1592 просмотра / ...

Обновлено 13.12.2010: Добавлен архив с исходниками

IDE проекта Arduino использует для компиляции программ WinAVR, поэтому для того, чтобы перейти на программирование с использованием «чистого» AVR-GCC на удобной аппаратной платформе Arduino нужно немного.

В качестве примера будет использован аналог скетча-примера Blink. Для компиляции и прошивки программы в контроллер понадобится:

  • Установленная копия WinAVR
  • Любая Arduino-совместимая плата или отдельный контроллер с Arduino-загрузчиком
  • Два файла: main.c (с основным кодом программы) и Makefile (необходим для сборки программы)

Параметры ниже подходят для платы Arduino Duemilanove с контроллером ATmega328P, для других их нужно незначительно изменить.

Преимущества такого подхода:

  • Можно использовать как Arduino IDE так и любые другие средства разработки
  • Удобные функции Arduino-плат (загрузчик, автоматический сброс перед загрузкой прошивки) продолжают работать
  • Этот способ можно использовать и для купленных отдельно чипов, предварительно прошив в них bootloader (например, с помощью ArduinoISP).

читать дальше...


Страница 1 из 2