Записи с тегом «WinAVR»
Перенос make-файлов (Makefile) с WinAVR на AVR Toolchain
Проект WinAVR больше не поддерживается автором, вместо него Atmel предлагает AVR Toolchain (в виде отдельного пакета и в составе AVR Studio 5).
Возникла необходимость пересобрать старый проект, make-файл которого основывался на шаблоне из комплекта WinAVR, новым тулчейном. Для этого понадобились небольшие правки make-файла. Большинство из них необходимы потому, что в WinAVR был эмулятор оболочки (sh), а в AVR Toolchain его нет, поэтому команды оболочки заменены на консольные команды Windows. Изменения в формате diff-файла ниже (автоматически накатить patch, скорее всего не получится, номера строк могут быть разными).
Пример работы с protothreads на GCC-AVR
Вдохновившись описанием Protothreads у BSVi, набросал небольшой пример их использования в виде программы, мигающей двумя светодиодами с разной частотой. Для пущей важности был использован system tick timer и супер-макросы для работы с GPIO.
Интересно, правильно ли я понял идею протопотоков? :)
System tick timer для ATmega8
Для одного проекта на ATmega8A понадобилась реализация системного таймера, отмеряющего время в миллисекундах. Один из вариантов был найден в исходниках библиотек Arduino, второй у DI HALT'a. В обоих случаях используется самый простой 8-битный TIMER0, поэтому два других, более продвинутых таймера остаются свободными, например, для ШИМа. Значения посчитаны для тактовой частоты 8МГц.
Макросы на C для работы с GPIO микроконтроллеров AVR
Работа с универсальными портами ввода-вывода микроконтроллера — одна из основных задач в их программировании. В комментариях к записи в блоге BSVi, посвящённой удобной работе с GPIO на языке C пользователь ReAl подсказал, что удобные макросы для AVR-GCC включены в порт операционной системы scmRTOS для архитектуры AVR. Для того, чтобы добраться до заветного файла пришлось скачивать исходники этой ОС, поэтому продублирую нужный файл здесь с сохранением копирайтов.
Минимальный клон Arduino на ATmega8A с модифицированным bootloader'ом
Snippet отсюда опубликован в Arduino-блоге Ильи Данилова. Его статьи мне очень сильно помогли в самом начале освоения Arduino (никто не говорит, что оно завершено :)), эта заметка — попытка внести свой вклад и отблагодарить его за труды.
Использование NetBeans с WinAVR
Для PHP-проектов с недавних пор использую NetBeans, поэтому для проектов на C под WinAVR возникла идея использовать эту же IDE. Оказалось, что для программирования для AVR-платформы NetBeans мало кто использует, но после небольшой доработки напильником почти всё получилось :).
Использование Arduino-платы с WinAVR
Обновлено 13.12.2010: Добавлен архив с исходниками
IDE проекта Arduino использует для компиляции программ WinAVR, поэтому для того, чтобы перейти на программирование с использованием «чистого» AVR-GCC на удобной аппаратной платформе Arduino нужно немного.
В качестве примера будет использован аналог скетча-примера Blink. Для компиляции и прошивки программы в контроллер понадобится:
- Установленная копия WinAVR
- Любая Arduino-совместимая плата или отдельный контроллер с Arduino-загрузчиком
- Два файла:
main.c(с основным кодом программы) иMakefile(необходим для сборки программы)
Параметры ниже подходят для платы Arduino Duemilanove с контроллером ATmega328P, для других их нужно незначительно изменить.
Преимущества такого подхода:
- Можно использовать как Arduino IDE так и любые другие средства разработки
- Удобные функции Arduino-плат (загрузчик, автоматический сброс перед загрузкой прошивки) продолжают работать
- Этот способ можно использовать и для купленных отдельно чипов, предварительно прошив в них bootloader (например, с помощью ArduinoISP).
