Site Loader

Программирование AVR микроконтроллеров снуля в Linux на языках Asembler и C, с чего начать и что использовать

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

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

Если же вы раньше программировали 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%) статьи я понял что она получится очень большой как по размеру текста, так и по количеству картинок. Решил разделить статью на части, пусть каждый пункт будет отдельной статьей.

Рис. 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

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

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

9 14882 Микроконтроллеры

Практическое программирование микроконтроллеров Atmel AVR на языке ассемблера. (3-е изд. исправленное)

Ревич Юрий Всеволодович

Артикул2321
ISBN 978-5-9775-3311-9
Количество страниц 368
Формат издания 170 x 240 мм
Печать Черно-белая
Серия Электроника

760 ₽
646 ₽

# AVR# I2C#Atmel

  • Описание
  • Детали
  • Отзывы (0)

Описание

Книга в доступной форме рассказывает о том, как устроены микроконтроллеры семейства AVR, каковы их схемотехнические особенности, как программировать и отлаживать типовые узлы электронных устройств с их использованием. Теоретические разъяснения иллюстрируются практическими примерами в виде законченных программ различных устройств и узлов. Особое внимание уделяется практическим приемам программирования, отсутствующим в официальных справочниках и фирменных пособиях: обмену данными микроэлектронных конструкций с персональным компьютером, многоразрядной арифметике, переводу цифровых данных в физические величины и т. п. В книге рассмотрены: = Семейство AVR Classic, Mega и Tiny = Инструкции и нотация AVR-ассемблера = Арифметические операции с многоразрядными числами = Последовательные интерфейсы SPI, I2C и USART = Чтение и запись flash-карт = Обмен данными с персональным компьютером и др. В книге учтены особенности современных моделей AVR и сопутствующих микросхем последних лет выпуска. Приложение содержит основные параметры микроконтроллеров AVR, перечень команд и тексты программ для них, а также список используемых терминов и аббревиатур….  

Ревич Юрий Всеволодович – инженер-электронщик, журналист и писатель с многолетним стажем. Основной круг интересов – проектирование микроэлектронных устройств от принципиальной схемы до пользовательского интерфейса, информационные технологии, их влияние на современное общество, технологические инновации, история компьютеров. Автор 16 книг, в том числе «Занимательной электроники», выдержавшей 5 изданий в течение 15 лет, а также нескольких сотен публикаций в журналах, газетах и сетевых изданиях, в том числе ряда статей на портале Habr.ru.

Детали

Артикул
2321
ISBN978-5-9775-3311-9
Количество страниц368
Серия Электроника
ПереплетМягкая обложка
Печать Черно-белая
Год2016
Габариты, мм240 × 170 × 17
Вес, кг0.412

  • Новинки на 2 недели раньше магазинов
  • Цены от издательства ниже до 30%
  • Акции и скидки только для подписчиков
  • Важные новости БХВ

ПОЛЕЗНАЯ РАССЫЛКА КНИЖНЫХ НОВОСТЕЙ

Подписываясь на рассылку, вы соглашаетесь с политикой конфиденциальности и обработкой своих персональных данных.


Рекомендуем также

  •  

    Микроконтроллеры для начинающих – Бумажная книга

    419₽
  • БЕСТСЕЛЛЕР

    Умный дом. Набор для экспериментов с контроллером Arduino + КНИГА (Малый набор)

    7952 ₽
    6759 ₽
  •  

    Программирование микроконтроллерных плат Arduino/Freeduino – Бумажная книга

    295₽
  •  

    Занимательные проекты на базе микроконтроллеров tinyAVR – Бумажная книга

    325₽
  •  

    Измерительные устройства на базе микропроцессора ATmega – Бумажная книга

    279₽

Интерфейсы программирования AVR® — Помощь разработчикам

Интерфейсы программирования AVR®

HVPP

Во-первых, важно понимать, что все (см. Исключения ниже) устройства Tiny и Mega на базе AVR включают программный интерфейс HVPP (параллельное программирование высокого напряжения) или HVSP (последовательное программирование высокого напряжения). Оба требуют приложения «высокого напряжения» (12 В) к контакту сброса, и оба требуют доступа к большому количеству контактов. Для интерфейса HVPP требуется доступ как минимум к 16 контактам, а для интерфейса HVSP требуется доступ как минимум к 8 контактам. По этим причинам эти интерфейсы в основном используются для производственного программирования устройств. На следующей схеме показаны необходимые соединения HVPP для

ATmega328PB (см. раздел 33.7 в техпаспорте ):

Хорошие новости для

  • Интерфейсы HVPP или HVSP всегда включены, потому что они не могут быть случайно отключены настройкой предохранителя или действием пользователя.

плохие новости

  • Они почти никогда не являются реалистичным вариантом программирования, когда Tiny или Mega припаяны к специальной плате, потому что для них просто требуется слишком много контактов.

Интернет-провайдер/JTAG

В дополнение к интерфейсам HVPP или HVSP все (см. Исключения ниже) устройства Tiny и Mega также включают один или два «стандартных» интерфейса программирования: ISP или JTAG.

ISP (внутрисхемное последовательное программирование) позволяет перепрограммировать программную память в системе через последовательный интерфейс SPI. На следующей схеме показаны необходимые подключения к интернет-провайдеру для ATmega328PB (см. раздел 33.9 в техническом описании ):

Хорошие новости для

  • Для этих стандартных интерфейсов требуется только 3 или 4 контакта.

Плохие новости

  • Они могут быть легко отключены неправильной установкой предохранителя.

Комбинированные интерфейсы

Все (см. Исключения ниже) устройства Tiny и Mega включают одну из двух следующих комбинаций интерфейсов программирования:

  • HVPP (или HVSP) и ISP
  • HVPP (или HVSP) и ISP и JTAG


Интерфейсы ISP и JTAG являются стандартными программными интерфейсами для устройств Tiny и Mega. Рекомендуется включить заголовок программирования для одного из двух интерфейсов на любую пользовательскую плату, чтобы при необходимости можно было удобно перепрограммировать устройство.

Если устройство имеет только интерфейс ISP и отключено с помощью настройки предохранителя, восстановление возможно только через его интерфейс HVPP или HVSP (что, скорее всего, физически невозможно) .

Если устройство имеет интерфейсы ISP и JTAG, и один из этих двух отключен настройками предохранителей, другой интерфейс можно использовать для доступа к части, если необходимые контакты доступны . Интерфейс ISP требует 3 контакта, а интерфейс JTAG требует 4 контакта, поэтому более вероятно, что к любому из этих интерфейсов будет проще получить доступ, чем к интерфейсам HVSP или HVPP.

  • Устройства Tiny4/5/9/10/20/40 не имеют интерфейса HVPP или HVSP. У них всего TPI (крошечный программный интерфейс). Более новые устройства, такие как устройства Tiny417/817/1617 , имеют только UPDI (унифицированный программный и отладочный интерфейс). Пока у вас есть доступ к этим интерфейсам, можно не беспокоиться о том, что эти устройства будут «заблокированы».
  • Устройства Xmega включают только PDI (интерфейс программирования и отладки) или оба интерфейса PDI и JTAG. Вы не можете отключить интерфейс PDI, поэтому, пока у вас есть доступ к одному контакту PDI, который нельзя использовать для какой-либо другой функции, и контакту сброса, вы не можете «заблокировать» эти устройства.

  Вернуться к началу

Fold

Содержание

Интерфейсы программирования AVR®

HVPP

ISP/JTAG

Комбинированные интерфейсы

Исключения


atmega328 — Как новичку, как мне запрограммировать Atmega328p?

спросил

Изменено 1 год, 6 месяцев назад

Просмотрено 216 раз

Я купил плату, на которой указанный выше MCU является atmega328p. Поскольку я раньше не использовал микроконтроллер Atmel, теперь это немного сбивает с толку. Программаторы ATMEGA и STM32 не универсальны? Какие методы программирования может поддерживать этот чип? Существует ли последовательное программирование или программирование SWD? Нужна помощь. Большое спасибо!

  • atmega328
  • загрузчик
  • электроника

2

Программаторы ATMEGA и STM32 не универсальны?

Они не одинаковые. Насколько я знаю, их программные механизмы совершенно различны.

Какие методы программирования поддерживает этот чип?

  • Традиционное внутрисхемное последовательное программирование AVR (ICSP) с использованием контактного разъема 2×3 и одного из множества программаторов, таких как STK500, у которого есть недорогие клоны, такие как программатор Pololu AVR (менее 10 долларов). Эти программаторы обычно подключаются к USB-порту ПК и могут использоваться либо с инструментами разработки программного обеспечения от Atmel (теперь Microchip), либо с использованием интегрированной среды разработки (IDE) Arduino, которая использует программу с именем avrdude для связи с ATMega328P (или другим AVR). семейные микроконтроллеры). ICSP иногда называют системным программированием (ISP). Он использует интерфейс SPI микроконтроллера, и вы должны быть осторожны, какие другие схемы подключены к этим контактам, когда вы программируете устройство.

  • Программирование последовательного порта путем связи с предварительно загруженной программой «загрузчик», установленной в ATMega328P. Это обычный способ использования Arduino IDE, но он зависит от наличия установленного загрузчика. Большинство голых ATMega328P продаются без установленного загрузчика. Все платы «Arduino» будут иметь загрузчик, установленный в их MCU, и многие из них будут иметь встроенный интерфейс «последовательный порт — USB», чтобы плату можно было подключить к ПК напрямую. В противном случае вам понадобится интерфейс USB-to-Serial, такой как друг Adafruit FTDI или многие другие.

Существует также высоковольтный метод программирования, но это не то, что может понадобиться новичку. Я считаю, что чаще всего это необходимо, когда вы настроили MCU таким образом, что вышеуказанные методы не могут быть использованы. Например, после отключения вывода сброса, чтобы его можно было использовать в качестве вывода ввода-вывода, который можно подключить к GND без сброса MCU.

Вы можете использовать Arduino для эмуляции программатора и использовать его для программирования плат, у которых нет последовательного интерфейса USB. Это называется Arduino как ISP

Новое поколение микроконтроллеров AVR от Microchip использует метод программирования, отличный от ICSP, который называется UPDI.

Какие методы программирования поддерживает этот чип? Существует ли последовательное программирование или программирование SWD?

Arduino IDE (бесплатная загрузка) поддерживает программирование на C++.

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *