Программирование, радиоэлектроника,
саморазвитие и частичка из моей жизни здесь...

Программирование AVR микроконтроллеров в Linux на языках Asembler и C

Поделюсь информацией и соображениями о том как начать программировать AVR микроконтроллеры фирмы ATMEL под операционной системой Linux. Используем мощные и свободные программные инструменты, настраиваем рабочее окружение и применяем на практике. Приведены примеры простейших программ на языках Assembler и C, которые помогут сделать первые шаги при обучении работе с микроконтроллерами AVR в Линукс.

Если вам раньше никогда не приходилось программировать микроконтроллеров и вы хотите попробовать все на практике то не стоит пугаться того что что-то может не получиться или пойти не так. На самом деле все очень просто, главное быть внимательным и не бояться экспериментов.

Программирование AVR микроконтроллеров под Linux

Если же вы раньше программировали AVR'ки под Windows но перейдя на Linux не знаете с чего начать и боитесь что в данной ОС у вас не будет достаточно инструментов для разработки, то поспешу вас обнадежить - инструментов предостаточно, к тому же большинство программ и утилит которые вы использовали под Windows прекрасно функционируют и под Linux используя транслятор Wine.

К чему-то придется привыкнуть, от чего-то отказаться, а что-то начать использовать по другому. Со временем, все настроив под себя, вы будете удивлены насколько все просто и удобно, так что программирование AVR микроконтроллеров в Linux - это вполне реально!

Цикл статей по AVR в Linux

Содержимое статей рассчитано на знакомство с AVR микроконтроллерами под Linux снуля, мы с самого начала разберем что такое AVR микроконтроллер, как его подключать и работать с ним в Linux.

Также я предполагаю что вы знакомы с основами радиоэлектроники и уже что-то мастерили сами или с помощью других, знаете как подключать источник питания, умеете прозвонить при помощи тестера светодиод и т.п.

В качестве ОС для работы у нас будет Linux, так что вы должны быть знакомы с консолью и уметь выполнять простые команды, это нам пригодится в процессе изучения работы базовых инструментов и настройки окружения. Все работы по программирования микроконтроллеров AVR в Linux можно и вовсе производить в консоли даже без графических оболочек типа KDE, Gnome, FluxBox.

Так что программировать AVR в Linux можно даже на очень старом компьютере с минимумом ресурсов, к примеру на стареньком ноутбуке Pentium-233/64MB RAM/2GB HDD, такая возможность бывает иногда очень полезной.

Все описанное дальше будет также полезено в качестве справочного сундучка, где собраны:

  • принципы маркировки микроконтроллеров AVR;
  • подключение питания к микроконтроллеру;
  • схемы наиболее популярных программаторов;
  • описание подключения микроконтроллера к программатору;
  • распиновка интерфейсов LPT, COM;
  • примеры команд для чтения, стирания и записи Flash микроконтроллера;
  • и многое другое.

Изначально я планировал изложить весь материал в виде одной статьи, но написав 8 пунктов (порядка 70%) статьи я понял что она получится очень большой как по размеру текста, так и по количеству картинок. Решил разделить статью на части, пусть каждый пункт будет отдельной статьей.

Как программировать AVR под Linux

Рис. 1. Коллаж отрывков фото из цикла статей по AVR в Linux.

Работать будем под Debian GNU Linux, также все описанное в публикациях будет справедливо для Ubuntu и других дистрибутивов Linux.

В статье предоставлена базовая информация которой достаточно чтобы сделать первые шаги к изучению и программированию AVR микроконтроллеров под операционной системой Linux.

Содержание

  1. Что такое AVR микроконтроллер
  2. Для чего можно использовать AVR микроконтроллер
  3. Архитектура AVR микроконтроллеров
  4. Маркировка микроконтроллеров AVR, выбор чипа для начала знакомства
  5. Аппаратное обеспечение для изучения микроконтроллеров
  6. Программаторы для AVR микроконтроллеров
  7. Как подключить программатор к микроконтроллеру
  8. Инструменты для программирования AVR микроконтроллеров в Linux
  9. Настройка среды программирования Geany для работы с AVR
  10. Параметры запуска и примеры использования AVRDUDE
  11. Настраиваем среду и работаем с программаторами
  12. Простая программа для AVR микроконтроллера на Ассемблере
  13. Простая программа для AVR микроконтроллера на Си
  14. Работа с регистрами, битовые операции
  15. Подключаем кнопку к микроконтроллеру ATtiny2313, простая программа
  16. Что такое Fuse и Lock биты в AVR микроконтроллере, как с ними работать
  17. AVR Си - выносим функции и переменные в модули, компиляция нескольких файлов в avr-gcc, Makefile

Может быть что я что-то упустил или указал не точно - пишите, будем дополнять и исправлять!

Желаю вам удачного изучения и позитивного настроения! Все обязательно получится.

Комментарии к публикации (11):
Batareikyn #1Batareikyn
03 Январь 2016 08:55

очень хороший цикл статей, все просто и понятно, спасибоgood

+3
ph0en1x #2ph0en1x
04 Январь 2016 13:38

Спасибо за отзыв, рад что вам понравилось.

0
Сарсен #3Сарсен
16 Июль 2016 15:43

Скажите пожалуйста, уже несколько месяцев не могу решить вопрос. Можно ли настроить avarice + abr-gdb + ddd(display data debugger) через jtag ice 1 на линуксе? (Прошивать только avrdude, так как avarice с новой версией прошивать не может, только отлаживать.) Или же необходимо всетаки приобретать avr jtag ice 2 за 100$ ?? Сомнения появляются так как avrdude через jtag ice 1 прошивает с какимито ошибками. Однако прошивка работает.

Reading | ######################### | 50% 0.02savrdude: jtagmkI_paged_load(): timeout/error communicating with programmer (resp э)

0
ph0en1x #4ph0en1x
26 Июль 2016 14:27

С подобной связкой не работал, судя по признакам ошибки причиной может быть неверно настроенный порт, к которому подключен программатор или же какая-то программная неполадка. Вот некоторые соображения по работе с AVRDude:

  • Попробовать укоротить соединительные провода, разместить программатор подальше от возможных источников помех;
  • Поиграться с опциями -b baudrate, -B bitclock;
  • Задать параметры программатора и порта в .avrduderc и настроить порт из консоли.

 

0
Roman #5Roman
08 Июль 2017 07:41

На мой взгляд лучший цикл статей для вхождения AVR-LINUX

+2
Владислав #6Владислав
09 Сентябрь 2018 23:35

Спасибо Вам большое. Благодаря этому циклу статей смог сделать первый, самый важный шаг в использовании ассемблера для ATmega в Debian - загрузил в Ардуино первую работающую программу. Только константу для цикла ожидания уже надо выбирать не 5, а 255 - время не стоит на месте :-)

+1
ph0en1x #7ph0en1x
10 Сентябрь 2018 00:13

Владислав, искренне рад что эти статьи вам пригодились! Успехов вам в обучении и в ваших будущих проектах Smile

0
ph0en1x #8ph0en1x
24 Сентябрь 2018 11:47

Добавлена новая статья с описанием разбивки проекта на модули, компиляцией нескольких Си-файлов. Также приведен пример создания простого и универсального Makefile, показано как перенастроить Geany.

0
Егор #9Егор
29 Январь 2019 09:40

Спасибо Вам за интересные статьи.

+1
Oleg #10Oleg
23 Декабрь 2022 16:19

Спасибо, дружище. Прояснилась ситуация с AVRами.

0
ph0en1x #11ph0en1x
23 Декабрь 2022 17:24

Здравствуйте. Всем пожалуйста!

0