Последнее время всё чаще мне приходится программировать контроллеры. Я ничего не имею против Arduino IDE для простых проектиков (а только такими я и занимаюсь), но всё-таки привык я к полноценным IDE, да и Wiring мне скорее мешает, чем помогает.
Эта статья - моя память, как я настраивал среду для программирования AVR-микроконтроллеров и как я прошивал ATtiny13 без программатора. Ну почти без...
Всё внутри - кроссплатформенное, хоть я буду писать и про Ubuntu.
Тезисно:
Находим и ставим AVR Eclipse Plugin. Зачем я это пишу? Потому что программист и не могу пропустить шаг.
После перезапуска Eclipse открываем Window => Preferences.
Тут появилась группа настроек "AVR". Надо добавить конфигурацию для программатора:
AVR => AVRDude, раздел "Programmer configurations", кнопка "Add...".
Назовём конфигурацию, скажем, "ArduinoProgrammer". Если у вас, как и у меня, нет программатора, но есть контроллер Arduino, в списке "Programmer Hardware" выбираем "Atmel AVR ISP". В поле "Override default port" указываем порт, к которому будет подключен Arduino. И задаём скорость 19200 в поле "Override default baudrate".
Эта статья - моя память, как я настраивал среду для программирования AVR-микроконтроллеров и как я прошивал ATtiny13 без программатора. Ну почти без...
Всё внутри - кроссплатформенное, хоть я буду писать и про Ubuntu.
Тезисно:
- Собираем из Arduino UNO программатор.
- Ставим пакеты для работы с AVR.
- Ставим Eclipse.
- Ставим на него AVR Eclipse Plugin.
- Пишем программу-моргалку ("Hello world!" по-AVR-ски) и прошиваем ATtiny13 прямо из Eclipse.
Собираем из Arduino UNO программатор
Этот кусок по большей части взят из предыдущего поста. Устанавливаем и запускаем Arduino IDE. В отличие от предыдущего поста не важно какой версии, так что лучше поставить самую свежую. Сейчас у меня установлена версия 1.6.5-r5. Далее в IDE:
Собираем вот такую схему:
Конденсатор предотвращает автоматический перезапуск микроконтроллера после заливки нового скетча.
Резистор и светодиод для программирования ATtiny13 не нужны. Они понадобятся только для демонстрации результата на примере скетча blink.
- Убеждаемся, что:
- Tools => Board => Arduino UNO,
- Tools => Serial Port => что-то там,
- Tools => Programmer => AVRISP mkll
- Открываем скетч программатора: File => Examples => ArduinoISP. Он входит в состав Arduino IDE.
- Загружаем ArduinoISP в Arduino UNO.
- ATtiny13 - собственно, его и программируем. Мой - ATtiny13A-PU (см. datasheet). PU - это DIP-корпус.
- Breadboard.
- Провода для breadboard.
- Конденсатор 10 мкФ или больше.
- Для проверки наших трудов на скетче blink из Arduino IDE дополнительно понадобятся светодиод и резистор 250 Ом к нему.
Собираем вот такую схему:
Конденсатор предотвращает автоматический перезапуск микроконтроллера после заливки нового скетча.
Резистор и светодиод для программирования ATtiny13 не нужны. Они понадобятся только для демонстрации результата на примере скетча blink.
Ставим пакеты для работы с AVR
Вот здесь написано про все платформы, я же на Ubuntu, делал это так:sudo apt-get install gcc-avr binutils-avr gdb-avr avr-libc avrdude
Ставим Eclipse
Вообще-то у меня уже был установлен старичок Eclipse Kepler. Вот ссылка где раздают Эклипсы.Ставим AVR Eclipse Plugin
В меню Eclipse: Help => Eclipse Marketplace...Находим и ставим AVR Eclipse Plugin. Зачем я это пишу? Потому что программист и не могу пропустить шаг.
После перезапуска Eclipse открываем Window => Preferences.
Тут появилась группа настроек "AVR". Надо добавить конфигурацию для программатора:
AVR => AVRDude, раздел "Programmer configurations", кнопка "Add...".
Назовём конфигурацию, скажем, "ArduinoProgrammer". Если у вас, как и у меня, нет программатора, но есть контроллер Arduino, в списке "Programmer Hardware" выбираем "Atmel AVR ISP". В поле "Override default port" указываем порт, к которому будет подключен Arduino. И задаём скорость 19200 в поле "Override default baudrate".
Пишем программу-моргалку и заливаем её в МК
- В Eclipse меню File => New => C Project.
- Project name: blink
- Project type: AVR Cross Target Application => Empty Project
- Next
- Тут можно обойтись без Debug-конфигурации, Next.
- MCU Type: ATtiny13
- MCU Frequency (Hz): 9600000
- В проекте blink добавляем Source File "main.c"
- Текст файла:
#include <avr/io.h> #include <util/delay.h> int main(void) { // Пин 4 настраиваем на вывод: DDRB = 1<<PB4; while(1) { // Чередуем значение, выводимое в пин 4: PORTB ^= 1<<PB4; // Пауза 1 секунда: _delay_ms(1000); } }
- Выбираем конфигурацию программатора в свойствах проекта:
- меню Project => Properties
- AVR / AVR Dude
- Во вкладке "Programmer" в поле "Programmer Configuration" выбрать нашу ранее созданную конфигурацию "ArduinoProgrammer".
- OK
- Сохраняем проект.
- Собираем проект: Build 'Release' for project 'blink'.
- Прошиваем МК: Upload current project to Atmel target MCU.
- Светодиод на breadboard должен замигать.
Комментариев нет:
Отправить комментарий