какие микроконтроллеры можно программировать через ардуино

Какие микроконтроллеры можно программировать через ардуино

Часто можно слышать отзывы об Arduino, что это дорого, неэффективно, профанация идеи и т.п. Если задуматься, то окажется, что во многом эта критика справедлива. Одним Arduino сыт не будешь. Если мне требуется микроконтроллер для чего-то простого, например: дисплей и пара кнопок, то использование для такой тривиальной задачи Arduino, действительно можно сравнить с забиванием гвоздей электронным микроскопом. Но если отбросить эмоции и подумать, что наиболее ценное в Arduino-проектах? На мой взгляд, это колоссальный объем открытого кода написанного под различные проекты. Называя вещи своими именами, я не хочу писать с нуля программу для работы микроконтроллера с дисплеем, я хочу использовать уже готовую библиотеку, которую я использовал для Arduino. И не потому что мне «слабо», а потому что я не вижу смысла в изобретении еще одного велосипеда.

О портировании проектов Arduino для “младшего” семейства микроконтроллеров AVR ATtiny пойдет речь в этом посте.

Из литератуты рекомендую почитать книгу: Андрей Евстифеев «Микроконтроллеры AVR семейства Tiny»

Arduino использует старшее семейство микроконтроллеров ATmega. Портируя программы на ATtiny придется отказаться от некоторых плюшек. Что мы теряем кроме меньшей памяти и меньшего количества ног? Отказаться придется от UART и I2C интерфейсов(ATtiny2313 это по сути не совсем ATtiny). Если вас это не пугает, то идем дальше.

У меня под рукой оказался ATtiny45
какие микроконтроллеры можно программировать через ардуино

Источник

Какие микроконтроллеры можно программировать через ардуино

какие микроконтроллеры можно программировать через ардуино

Добавляем поддержку не родных м/к в среду Arduino IDE

Серия микроконтроллеров ATtiny

attiny13,attiny2313, attiny45, attiny44,attiny85, attiny84, attiny25, attiny24, attiny4313

Цоколевка микроконтроллеров

Для программирования ATtiny 13/25/45/85 подключим его к нашему программатору согласно даташиту:

какие микроконтроллеры можно программировать через ардуино

У ATtiny 2313 и 4313 другая цоколевка,но подключается так же:

какие микроконтроллеры можно программировать через ардуино

Настройка Arduino IDE для микроконтроллеров ATtiny

Для этого необходимо дописать нужные микроконтроллеры в файл boards.txt и распаковать архив arduino-tiny в папку папка_arduino/hardware/arduino/

Последнюю версию arduino-tiny можно найти тут.

###########################################################################
attiny85.name=Optiboot ATtiny85 @ 8 MHz (internal osc)
attiny85.upload.protocol=arduino
attiny85.upload.speed=9600
#bootloader takes up last 10 pages, so there is a limit on the max size.
attiny85.upload.maximum_size=7616
attiny85.bootloader.low_fuses=0xE2
attiny85.bootloader.high_fuses=0xD7
attiny85.bootloader.extended_fuses=0xFE
attiny85.bootloader.path=optiboot
attiny85.bootloader.file=optiboot_attiny85.hex
attiny85.build.mcu=attiny85
attiny85.build.f_cpu=8000000L
attiny85.build.core=tiny
attiny85.build.variant=tinyX5
# вариант c частотой внутренного генератора 8 мгц.
###########################################################################

и добавляем в список boards.txt:

attiny13.name=ATtiny13 (internal 9.6 MHz clock)
attiny13.bootloader.low_fuses=0x7a
attiny13.bootloader.high_fuses=0xff
attiny13.upload.maximum_size=1024
attiny13.build.mcu=attiny13
attiny13.build.f_cpu=9600000L
attiny13.build.core=core13
attiny13.build.variant=tiny8

Сейчас мы можем программировать добавленные микроконтроллеры через плату Arduno или USBasp.

Другие микроконтроллеры ATmega

ATmega8 без загрузчика

Чтобы добавить м/к ATmega8 без загрузчика добавляем в boards.txt следущий текст:

Расмотрим пример на микроконтроллере ATmega32:

Расшифруем основные из них:

Обратите внимание,что новый м/к запрограммирован работать от внутреннего генератора и при прошивке загрузчика (через меню сервис-> записать загрузчик) поменяются фьюзы на режим от внешнего кварца.Загрузчик прошивать не обязательно,если Вы не хотите Заливать скетчи через последовательный порт.Перед прошивкой загрузчика можно поправить фьюзы в файле board.txt в строках bootloader.low_fuses и bootloader.high_fuses используя калькулятор фьзов.

Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.

Источник

Работа с микроконтроллерами: прошивка с помощью Arduino

В этой статье будет показан переход от программирования платы Arduino к программированию «сырого» микроконтроллера ATtiny84 с использованием привычных скетчей.

Нам понадобится

какие микроконтроллеры можно программировать через ардуино

Начинаем с простого скетча

Собирать мы будем устройство с потенциометром и светодиодом. В зависимости от угла поворота потенциометра будет изменяться яркость светодиода. Подключаем к Arduino ледующим образом: светодиод подключаем к цифровому пину №6 (поскольку на нем есть возможность генерации ШИМ-сигнала, за счет которого будет регулироваться яркость светодиода), а потенциометр — к аналоговому пину №0. Скетч содержит следующий код:

Скетчи на ATtiny84

Итак, у нас Arduino Uno. Как же нам запрограммировать нашу «тиньку»? Для этого используется такое устройство, как программатор. Он необходим, чтобы залить прошивку в контроллер. Мы можем превратить нашу Arduino в программатор. Это элементарно делается путём заливки скетча ArduinoISP.

Делаем программатор и собираем схему

Открываем соответствующий скетч «Файл → Примеры → ArduinoISP» и заливаем его. Все, превращение завершено. Теперь необходимо правильно собрать схему, чтобы прошить «тиньку». Обратимся к коду скетча, который был только что залит. Даже не к коду, а к комментарию перед ним.

Сначала подключим светодиоды таким образом, как описано в комментарии, не забывая резисторы. После сборки схемы и подачи питания, светодиод, подключенный к пину 9 «Heartbeat» будет моргать, обозначая нормальное функционирование. Если этого не произошло, то ищите ошибки в подключении.

Теперь надо подключить пины 10-13 к ATtiny. Чтобы узнать распиновку последней, обратимся к даташиту, который можно скачать с сайта Atmel, производителя этих контроллеров. На второй странице расположена картинка, описывающая распиновку. какие микроконтроллеры можно программировать через ардуино Основываясь на даташите и комментарии из скетча, можем составить следующую таблицу подключения:

Теперь подключим светодиод и переменный резистор. Резистор необходимо подключить в пину №6 (PA7), поскольку этот пин может быть входом для аналого-цифрового преобразователя, а светодиод — к любому другому, например, к 10 (PA3).

О нумерации пинов

Стоит немного рассказать о различии нумерации пинов в Arduino и при использовании «чистого» кода C. В Ардуино пины нумеруются последовательно и исключаются системные (питание, земля и т. д.), а в реальности всё немного иначе. Все выводы контроллера можно охарактеризовать двумя парметрами: номер порта (порт А, порт В и т.д.) и номер вывода (1..8).

На сайте Arduino можно найти карту пинов. Она выглядит следующим образом: какие микроконтроллеры можно программировать через ардуино

Для используемой нами ATtiny84 нумерация будет аналогична. В библиотеке Arduino-tiny, о которой речь пойдёт далее, можно найти следующую таблицу соответствия:

В соответсвии с назначением каждой ножки контроллера, аналоговые пины (те, у которых есть вход АЦП) нумеруются в скетче по каналу АЦП. Напримем, пин сфизическим номером 11 может быть входом для второго канала АЦП (ADC2), поэтому в скетче он будет называться A2.

Теперь необходимо научить среду программирования Arduino понимать тот факт, что мы используем другой контроллер.

Учим среду разработки

Первым делом необходимо скачать библиотеку arduino-tiny, содержащую в себе все необходимое. Далее заходим в настройки Arduino и смотрим расположение папки со скетчами. какие микроконтроллеры можно программировать через ардуино Переходим в эту папку и создаем там новую с названием «hardware». А в ней еще одну, «tiny». Копируем содержимое скачанного ранее архива в эту папку. И последнее действие — переименовываем файл «Prospective Boards.txt» в «boards.txt». Теперь перезагружем среду разработки и идем в меню «Сервис → Плата». какие микроконтроллеры можно программировать через ардуино Можно видеть, то добавилось много новых пунктов.

Программируем ATtiny84

В качестве кода берем уже написанный нами код для светодиода и подстроечного резистора и изменяем там номера пинов.

Результат

Мы получили устройство, аналогичное тому, что могло бы быть сделано на Arduino, но использовали для него дешёвый и компактный микроконтроллер.

какие микроконтроллеры можно программировать через ардуино

Так вы можете сгрузить некоторые обязанности в вашем большом проекте на отдельные микроконтроллеры, комбинировать их, заменять и делать много интересных, компактных вещей.

Источник

Работа с голым камнем, ATtiny

какие микроконтроллеры можно программировать через ардуино

МК/specATmega328ATtiny85ATtiny13
Flash32k8k1k
SRAM2k512b64b
EEPROM1k512b64b
Цифр. Ног2366
Аналог. Ног844
Таймеры321
SPI++
UART+
I2C++
Цена95р70р20р

Примечание: большинство функций объединены на одних и тех же пинах. Как вы можете видеть, чем дешевле МК, тем меньше у него возможностей. Полное подробное сравнение можно глянуть здесь.

UART и ISP

Для подключения прошиваторов к голому чипу нам нужно будет изучить распиновку (pinout) на нужный микроконтроллер. Распиновки бывают цветные и красивые (часто с ошибками), а бывают более серьёзные и правильные. Лучше всего открыть даташит на нужный МК и на второй же странице найти 100% правильную распиновку. Например для ATmega328, ATtiny85 и ATtiny13:

какие микроконтроллеры можно программировать через ардуино

какие микроконтроллеры можно программировать через ардуино

какие микроконтроллеры можно программировать через ардуино

какие микроконтроллеры можно программировать через ардуино

На данных “схемах” подписаны все функции пинов МК. Чтобы загрузить прошивку через USB-TTL, то есть при помощи “живущего в памяти” загрузчика (bootloader), МК должен иметь на борту аппаратный UART, то есть пины RX и TX. Если таких пинов нет – прошивку можно загрузить только через ISP программатор. Вы спросите, а как же Digispark? Там стоит МК ATtiny85, у которого нет UART, но прошивка загружается через USB! Верно, но там хитрые разработчики сделали не менее хитрый загрузчик, который имитирует USB, и прошивка на Digispark загружается при помощи специальной программы, которая запускается в фоне, когда вы нажимаете кнопку “Загрузить” в Arduino IDE. Резюмируя для общего случая:

Подключение программатора

Программатор, или Ардуину в качестве программатора, подключить очень просто. Смотрим распиновку и подключаем:

Например ATmega328p подключаем к USB ASP (обсуждали в прошлом уроке) 6-пин вот так: какие микроконтроллеры можно программировать через ардуино Примечание: да, другие компоненты не нужны. Новый (из магазина) МК тактируется от внутреннего генератора на 8 МГц и может без проблем прошиваться прямо так как на схеме выше. Тиньки к тому же USB ASP подключаются так: какие микроконтроллеры можно программировать через ардуино Для удобства я использую макетку-дигиспарк, на которой разведены пины как раз под ISP 6-пин хэдер: втыкается выпирающим “ключом” в сторону МК. В плате выведены 8 пинов, нам нужны верхние 6 (на фото видно не запаянные пины ниже штекера). Купить можно тут. какие микроконтроллеры можно программировать через ардуино Также можно прошивать МК через Arduino (Arduino as ISP, обсуждали в прошлом уроке). Схема для ATtiny85: какие микроконтроллеры можно программировать через ардуино Примечание: конденсатор нужен обязательно! Подключили. Что дальше? Дальше мы уже можем работать с фьюзами через программу avrdudeprog (обсуждали в прошлом уроке), выбрав в списке соответствующий программатор и в списке МК – соответствующий МК. Также через эту программу можно загрузить скомпилированный “бинарник” – файл прошивки. Но нас всё-таки интересует работа через Arduino IDE.

Ставим “ядро”

Для того, чтобы работать с Attiny через Arduino IDE, нам нужно установить так называемое ядро, или как оно называется в самой IDE – плату. Для ATmega328 у нас уже есть стандартное ядро, например плата Arduino NANO. Но тут есть нюанс: внутренние настройки “платы” NANO рассчитаны на работу с загрузчиком (bootloader) и с внешним тактированием 16 Мгц, то есть лучше не рисковать и установить ядро, которое поддерживает работу без загрузчика и с возможностью выбора частоты, чтобы иметь полный контроль над платой. Могу посоветовать вот эти:

Программирование

Итак, что же даёт нам ядро помимо выбора настроек МК? Можно программировать МК всё теми же командами, что и раньше! Мигать светодиодами через digitalWrite, измерять напряжение через analogRead и прочее прочее. Давайте напишем классический Blink:

PB3 – это номер пина, прямо как на распиновке. Всё! Осталось загрузить прошивку. Для этого нажимаем Скетч/Загрузить через программатор: какие микроконтроллеры можно программировать через ардуино Я подключил светодиод через резистор на 220 Ом и он мигает два раза в секунду, всё как написано. какие микроконтроллеры можно программировать через ардуино Что следует помнить при работе с тиньками: у них мало памяти, а все вот эти Ардуино-функции являются кошмаром индуса и занимают очень много места в памяти. Если тини85 ещё как-то переживёт такие издевательства и сможет уместить в себе вполне интересный проект из Ардуино-функций, то в тини13 уже сложно уместить что-то серьёзное. Напомню: всего 64 байта оперативной памяти и 1 кб флэша!

Я думаю вы поняли, что в целом работа с голыми МК не особо то и отличается от работы с обычной платой Arduino, и теперь можно переходить к сложным самоделкам на базе своей платы, в центре которой будет стоять микроконтроллер. Давайте поделюсь парой советов по минимальной обвязке.

Проект на голом МК

Зачем делать проект на своей плате и голом микроконтроллере?

Итак, я на личном опыте убедился, что МК способен работать вообще без какой-либо обвязки. Это был проект “Читалка файлов с SD карты” на базе ATmega328. Проект достаточно непростой: МК читал текстовые файлы с карты памяти microSD и выводил их на OLED дисплей. Никаких лишних компонентов на плате нет, МК тактируется от внутренних 8 МГц и всё работает отлично. Даже карта памяти подключена напрямую к МК =) Но в надёжных устройствах делать так не рекомендуется! Минимальная обвязка для МК и полезные советы:

Соединять все ноги питания (GND, VCC) максимально толстыми и короткими дорожками между собой:

какие микроконтроллеры можно программировать через ардуино

какие микроконтроллеры можно программировать через ардуино

Поставить керамический конденсатор

100 нФ/nF (0.1 мкФ/uF) по питанию МК: между VCC и GND для сглаживания микропульсаций напряжения

какие микроконтроллеры можно программировать через ардуино

какие микроконтроллеры можно программировать через ардуино

Если нужна кнопка сброса (reset), подключаем её к RST и GND, т.е. кнопка должна подать на RST низкий сигнал. Внутри МК уже присутствует подтягивающий резистор на пин RST

какие микроконтроллеры можно программировать через ардуино

какие микроконтроллеры можно программировать через ардуино

Если нужен внешний тактовый генератор – подключаем его между пинами XTAL1 и XTAL2 (см. распиновку своего МК), и оба пина подключаем к GND через керамические конденсаторы на 18-22 pF/пФ. Более точный номинал конденсатора можно узнать из даташита на генератор, но в 99% это 22 пФ

какие микроконтроллеры можно программировать через ардуино

какие микроконтроллеры можно программировать через ардуино

Если нужна удобная прошивка по ISP – выводим штекер для подключения. Вот тут можно открыть мой модуль такого штекера для EasyEDA

какие микроконтроллеры можно программировать через ардуино

какие микроконтроллеры можно программировать через ардуино

Если нужна прошивка по UART – выводим RX, TX, GND. Для автоматического сброса МК перед началом прошивки у USB-TTL преобразователя должен быть выведен пин DTR. Его подключаем к RST через конденсатор на 0.1 мкФ. Также подключаем, VCC если нужно запитать МК от UART преобразователя. Прошивать можно любым USB-TTL преобразователем с выходом DTR. В показанной схеме подключение к преобразователю будет RX->TX, TX->RX!

какие микроконтроллеры можно программировать через ардуино

какие микроконтроллеры можно программировать через ардуино

Я думаю теперь вы готовы к созданию проекта на своей плате!

какие микроконтроллеры можно программировать через ардуино

какие микроконтроллеры можно программировать через ардуино

Перенос МК с Arduino на свою плату

Напомню, что источник тактирования играет важную роль при загрузке прошивки. Микроконтроллер может быть настроен на тактирование от внутреннего генератора на 8 МГц, либо на тактирование от внешнего.

Это же касается переноса микроконтроллера с платы Ардуино на свою плату: на Ардуино стоит кварц. Если на вашей плате есть кварц для МК – всё будет работать сразу. Если на вашей плате нет кварца – перепаянный с Ардуино МК не будет работать и прошиваться. Для переноса МК с платы Ардуино на свою плату (без кварца) нужно настроить МК на внутреннее тактирование, об этом мы говорили в прошлом уроке. Для этого нужно подключить к плате программатор (USB-ASP или Arduino as ASP) и прошить фьюзы

Видео

Источник

Arduino.ru

P.S. Получилось какбы два вопроса, вопрос темы и вопрос в теме, но ответы интересны на оба.(Парни помогите старичку въехать в тему 🙂

Хорошо задам вопрос по другому. На форуме есть люди которые разбираются в платформе. Или все как я?

Нужно чтоб мне ктонибудь объяснил как ATmega16-16PU превратить в ардуину с минимальной обвязкой, на внутреннем генераторе. Питание от переходника USB-COM на ftdi. В основном интересует где взять/поправить/написать программу бутлодер. Ну и как это все собрать вместе. Или это нереально по причине не возможности использовать Arduino IDE на вновь испеченной платформе? Может кто уже сталкивался с вопросом?

какие микроконтроллеры можно программировать через ардуино

Вот, например, здесь есть информация http://robocraft.ru/blog/arduino/19.html
Если поискать, то можно найти, всё давно есть в интернете

там копируют существующую платформу. С этим все понятно. Я же спрашиваю, можно ли использовать arduino IDE на отличных от стандартных контроллерах.

какие микроконтроллеры можно программировать через ардуино

Не правильный вопрос, скетчи пишутся в Arduino, назвать её IDE язык не поворачивается, а сами по себе микроконтроллеры про Arduino ничего не знают.

Язык процессинг в дурине, по сути сишная обёртка, для отдельных представителей семейства ATmega8, однако ничего не мешает обернуть в процессинг любой другой микроконтроллер. Что собственно и было сделано для ATiny-ек. А так же для STM и PIC. Всё это вне рамок проекта Arduino естественно, существует ввиде форков, например pinguino.cc

Вот спасибо, потихоньку начал въезжать. По поводу неправильного вопроса :),так откудажправильному то взяться если в теме не разбираешься.

Ссылка на мегу 32 помогла въехать особо, там как раз написан правильный ответ:» Обычно программы для avr пишут на C. Но для тех, кто хочет программировать на wiring, есть решение. «

Теперь пожалуй смогу правильно задать вопрос. Если я хочу писать на вайринге или процессинге(или это одно и тоже?), но не под ардуино, а просто под АВРы существует ли такая возможность кроме плясок с бубном вокруг ардуино иде?

На сколько я понял, бутлодер не обязательно зашивать, если через ISP программировать, ошибок не будет?

Куда надо чего вписать, если например 328ю хочу на внутреннем генераторе запустить?

Источник

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

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