Микроконтроллеры ATmega328P / ATtiny45 – программирование

Микроконтроллеры AVR ATmega328P и ATtiny45 – программирование

Фирмой «Atmel», наряду с огромным ассортиментом чипов, выпускаются два микроконтроллера, снискавшие особое признание в обществе электронщиков. Микроконтроллер ATmega328P и другой продукт компании «Atmel» – чип ATtiny45, обе популярных микросхемы несколько отличаются одна от другой. Тем не менее, чтобы запрограммировать микроконтроллер  ATmega328P либо прошить чип ATtiny45 программным кодом, применяется практически одинаковый схематичный и программный подход. Рассмотрим подробнее технические способы: программирование ATmega328P и ATtiny45, а также необходимое для прошивки указанных микроконтроллеров программное обеспечение.

Микроконтроллеры ATmega328P и ATtiny45 семейства AVR

Программируемый чип ATmega328P представлен 28-контактным микроконтроллером, входящим в семейство AVR. Микроконтроллер хорошо знаком обладателям конструктора «Ардуино», где используется в качестве основного компонента электронного набора.

Однако микроконтроллер ATmega328P способен делать куда больше, чем выжимает из этого чипа популярный электронный конструктор «Arduino». Доказательств тому масса, стоит лишь посмотреть фирменный даташит (datasheet) микроконтроллера ATmega328P.

Микроконтроллеры семейства AVR
Микроконтроллеры семейства AVR нашли широчайшее применение в практике конструирования электронных устройств различной сложности. Серия ATMega и ATiny часто выбираются для аппаратного программирования

В тесной связке с «братом по крови» выступает другая микросхема — ATtiny45. Но здесь налицо явная отличительная черта: микроконтроллер ATtiny45 имеет 8-контктный форм-фактор.

Микросхема ATtiny45 обладает многими функциями, присущими AT328P. Однако функциональность ATtiny45 несколько ограничена по причине малого числа контактов ввода-вывода.

Традиционно программирование ATmega328P и ATtiny45 осуществляется через последовательный периферийный интерфейс (SPI). Контактная шина на 3 проводника, плюс «земля». По шине данных следуют сигналы:

  1. Вход приёма данных (MOSI)
  2. Выход передачи данных (MISO)
  3. Вход синхронизации приёма(SCK)

Сигнал SCK (SCLK) генерирует ведущее устройство (программатор). Этим сигналом обеспечивается синхронная приём/передача между ведущим и ведомым устройствами. По сути, интерфейс SPI следует рассматривать «синхронной» коммуникационной шиной.

Выбор физических программаторов под AVR микроконтроллеры

Существует масса программаторов, которыми доступно программировать ATmega328P и ATtiny45. Например, профессиональная разработка «Atmel-ICE» от родной чипам компании «Atmel».

Фирменный программатор считается лучшим из всех, пригодных прошивать AVR и другие микросхемы. На китайском AliExpress можно найти по цене от 5000 руб. и выше.

Программатор AVR Pocket Programmer
AVR Pocket Programmer: 1 — входной интерфейс USB; 2 — ISP коллектор; 3 — выходной интерфейс ISP; 4 — буферные элементы 74АС125; 5 — переключатель режима питания; 6 — основной чип ATtiny 2313

Для любителей-электронщиков этот вариант финансово обременительный. Поэтому логичным видится более простой выбор – USB программатор «AVR Pocket Programmer».

Раз в пять дешевле профессиональной разработки «Atmel», этот девайс доступно купить, к примеру, здесь. В продаже есть другие, более дешёвые программаторы (от 200 руб.), но не проверенные на практике.

На крайний случай несложно собрать программатор «AVR Pocket Programmer» своими руками. Принципиальная схема устройства построена на чипе ATtiny2313. Внешние элементы – лишь несколько резисторов, стабилитронов, светодиодов.

Принципиальная схема программатора AVR Pocket Programmer
Принципиальная схема программатора AVR Pocket Programmer — достаточно простая, вполне доступная для сборки устройства программирования своими руками

Сигнальные линии (MICO, MOSI, SCK) желательно (но не обязательно) буферизировать. Поэтому следует дополнить схему буфером, к примеру, использовать микросхему 74AC125.

Такой буфер, кстати, применяется на фирменной сборке. Не исключается и транзисторный вариант буфера.

Для работы схемы программатора потребуется драйвер под USB. Возможно, потребуется также программный продукт Zadig, универсальный инсталлятор под Windows для установки общих драйверов USB (версия под Windows 7 и выше):

  • WinUSB
  • Libusb-Win32
  • Libusb0
  • LibusbK

Прошивка и утилиты для «AVR Pocket Programmer» находятся здесь. Драйвер программатора предпочтительно ставить в систему Windows до подключения физической схемы к ПК.

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

Микроконтроллеры AVR программируются через интерфейс SPI посредством маршрутизации сигналов через шесть линий:

  • VCC (напряжение питания),
  • GND (сигнальная земля),
  • RST (программный сброс),
  • MOSI (приём данных),
  • MISO (передача данных),
  • SCK (сигнал синхронизации).

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

  1. 6-контактный разъем (2×3).
  2. 10-контактный разъём (2×5).

Разъёмы соединяются с платой программатора и программируемым устройством через шлейф-кабель. Фирменная плата программатора «AVR Pocket Programmer» комплектуется всеми необходимыми аксессуарами.

Контактные разъёмы интерфейса ISP
Два типа контактных разъёмов интерфейса ISP применимы к использованию при работе совместно с инструментом программирования

На фирменной плате программатора присутствует переключатель режима питания. Если переключатель находится в положении «Power Target», плата запитана напряжением 5В от USB.

Иначе, в положении переключателя «No Power», питание на контакте 5В отсутствует. Этот вариант — «No Power», используется для программирования чипов с малым питающим напряжением (3,3В или 1,8В).

Микроконтроллеры: программирование утилитой AVRDUDE

Утилита AVRDUDE — это инструмент для командной строки Windows. Чтобы применить этот инструмент, нужно запустить «командную строку» Windows (Пуск -> Выполнить). Затем рекомендуется проверить готовность утилиты вводом команды:

avrdude -c usbtiny -p atmega328p

Команда предполагает наличие подключенного к системному разъёму программатора микроконтроллера ATmega328P. Для чипа другой серии команда, соответственно, несколько изменится.

Так, для микроконтроллера ATtiny45 строка будет выглядеть следующим набором:

avrdude -c usbtiny -p t45

Если схематично подключения программатора и программируемой микросхемы в норме, утилита выдаст примерно следующий терминальный текст:

Инициализация чипа утилитой avr dude
Стандарты изготовления микроконтроллеров предполагают внедрение идентификаторов. При первом запуске утилита определяет этот идентификатор

Эта базовая команда утилиты позволяет идентифицировать подключенный микроконтроллер AVR. Инструмент AVRDUDE в процессе проверки читает идентификатор чипа.

Идентификаторы программируемых микросхем отличаются в зависимости от типа AVR. Тот же микроконтроллер ATmega328P идентифицируется как 0x1E950F, что и отмечено в окне выдачи.

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

Часть памяти чипа, которая обычно прошивается данными, это Flash — энергонезависимая область, где хранятся программы.

Прошивку Flash-памяти выполнит команда:

avrdude c usbtiny p atmega328p U flash:w:test.hex

или для варианта с ATtiny45:

avrdude c usbtiny p t45 U flash:w:test.hex

Примечание: имя файла «test.hex» только в качестве примера.

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

Чтение и запись чипа утилитой avrdude
Примерно такой выглядит последовательность чтения записи памяти микроконтроллера утилитой в терминальном окне программного инструмента

Опция «U» команды AVRDUDE управляет чтением и записью памяти микропроцессора. Этой опцией пользователь указывает на работу с флеш-памятью.

Дополнительно символом «w» указывается функция записи и следом через двоеточие указывается имя (и расположение) файла (в примере test.hex), содержимое которого требуется записать в память.

Опция «U» также используется для чтения содержимого памяти AVR. Например, следующая команда позволит считать содержимое памяти чипа AVR и сохранить в файле под названием «test.hex»:

avrdude c usbtiny p atmega328p U flash:r:test.hex:r

или для варианта с ATtiny45:

avrdude c usbtiny p t45 U flash:r:test.hex:r

Инструмент поддерживает работу только с файлами, имеющими расширение «*.hex»!

Прочесть развёрнуто об утилите программирования и применяемых в процессе командах можно на этом блоге.

Программирование микроконтроллера ATmega8

Практика электронщиков (начинающих и уже достаточно опытных) отмечает частое пользование ещё одним чипом из серии AVR, именуемым даташит «ATmega8».

Несмотря на приличный «возраст» с момента своего рождения, эта микросхема остаётся не менее популярной, чем упомянутые выше микроконтроллеры.

Популярный микроконтроллер atmega8
Благодаря этой микросхеме удаётся собирать электронные устройства нередко уникальные по своим техническим возможностям

Форм-фактор: 28-контактный (PDIP) либо 32-контактный (TQFP), причём 23 контакта из 28 – это линии ввода/вывода общего назначения.

Для питания микросхемы потребуется стабилизированный источник 5В, а для удобства использования рекомендуется применить колодку (сокет) на 28 контактов.

Чтобы понять азы процедуры программирования, достаточно запрограммировать, например, функцию включения /выключения светодиода.

Для решения задачи потребуется присоединить электронный элемент — светодиод, к любому контакту ввода/вывода микроконтроллера ATmega8.

Например, выбрать 28 контакт, обозначенный на схеме «PC5», входящий в 7-контактный набор PC0 — PC6 (порт C). Следует отметить: согласно схеме ATmega8, имеются также другие наборы контактов, имеющих отношение к порту B (PB0-PB7) и порту D (PD0-PD7).

Ресурсы программирования  ATmega8

Нужно подготовить программный код для прошивки микросхемы. Потребуется компилятор языка программирования «C». Соответственно, необходим также программатор под загрузку скомпилированного кода в память микроконтроллера.

В качестве компилятора обычно используется фирменное программное средство «Atmel Studio 7.0» (установщик онлайн). Для прошивки микросхемы ATmega8 опять же удачно выступает утилита AVRDUDE.

Компилятор кода С Atmel Studio 7
Заставка фирменного компилятора программного кода от компании «Atmel». Мощное средство, необходимое для создания уникальных дампов

Далее пошаговый процесс программирования можно описать следующим образом:

  1. Запускается компилятор «Atmel Studio 7».
  2. В меню выбрать «Новый проект» (New Project) и далее «AVR GCC».
  3. Затем указать месторасположения сохранения проектного файла.
  4. Перейти «Далее» (Next) и выбрать из списка симуляторов ATmega
  5. Завершить кнопкой «Finish» после чего можно писать программный код.

Первая нитка программного кода:

#include <avr / io.h>

Функция Include включает системную библиотеку в проект, обеспечивая доступ к основным функциям ввода / вывода и макросам.

int main()

Вторая строчка указывает точку входа в программу пользователя. Отсюда программа пользователя стартует.

Дальше необходимо обозначить вывод порта C. В данном случае — «PC5». Для этого используется специальный регистр DDRC:

DDRC = 0x20;

Значение регистра 0x20 задаёт целевую «1» для контакта «PC5», согласно двоичному представлению. Тем самым пользователь открывает действие на активацию контакта «PC5».

Следующий шаг, решение непосредственно поставленной задачи — включение и выключение светодиода исполнением кода. Если нужен бесконечный цикл, решение может быть таким:

Код компиляции составленный в Atmel Studio 7
Простейший программный код для микроконтроллера ATmega8, которые заставляет мерцать подключенный к микросхеме светодиод

Завершающий этап компиляции кода выбор опции меню «Сборка» (Build). В результате «Atmel Studio 7» создаст файл с расширением .hex, с именем, указанным пользователем. Например: «test.hex». Останется только записать программный код в память микроконтроллера с помощью прошивки.


Комментариев: 31 “Микроконтроллеры ATmega328P / ATtiny45 – программирование”

  1. I am also writing to make you understand of the amazing discovery my friend’s child found checking your site. She figured out so many issues, which include what it is like to have a marvelous teaching style to make most people really easily master a number of impossible matters. You undoubtedly exceeded her desires. Thank you for distributing those powerful, safe, informative and even easy tips on this topic to Evelyn.

  2. I simply wished to say thanks all over again. I’m not certain the things that I might have done without the creative ideas provided by you regarding this topic. It was before an absolute horrifying crisis for me personally, however , understanding your skilled way you handled it made me to weep with delight. Extremely thankful for the guidance and then hope you are aware of an amazing job you were getting into training the others with the aid of your blog post. Most probably you haven’t got to know all of us.

  3. My husband and i were absolutely comfortable when Raymond managed to round up his basic research because of the precious recommendations he got while using the site. It’s not at all simplistic to simply be giving freely strategies that some others may have been trying to sell. And we all figure out we have you to thank for that. The most important explanations you made, the simple blog menu, the relationships you give support to engender — it’s all extraordinary, and it is assisting our son in addition to our family understand this idea is entertaining, which is rather essential. Thanks for all!

  4. Needed to put you one tiny remark so as to thank you yet again regarding the pleasant concepts you have contributed in this article. This has been certainly tremendously generous of people like you to convey extensively all that most people might have offered for sale for an e book to get some cash for themselves, most importantly since you might well have tried it in the event you desired. Those smart ideas in addition served as a great way to be certain that other people have similar dreams really like my own to realize a little more around this problem. I think there are millions of more pleasant situations in the future for folks who go through your site.

  5. Thanks so much for providing individuals with such a superb opportunity to discover important secrets from here. It can be so superb and as well , stuffed with a good time for me personally and my office acquaintances to search your blog minimum 3 times in one week to study the new stuff you have got. And lastly, we are actually impressed for the extraordinary strategies served by you. Selected 1 facts in this post are rather the most impressive I’ve ever had.

  6. Thank you so much for giving everyone an extraordinarily superb possiblity to discover important secrets from here. It’s always so great and full of a lot of fun for me and my office mates to search the blog at a minimum three times weekly to read the latest secrets you will have. And of course, I am also at all times contented with the powerful tricks served by you. Certain 4 ideas in this posting are in fact the very best I’ve had.

  7. I’m just commenting to let you understand what a useful encounter our girl had viewing your site. She even learned lots of things, most notably how it is like to have an ideal coaching heart to have many people without difficulty gain knowledge of certain grueling subject areas. You really surpassed our own expectations. Thanks for coming up with the insightful, healthy, edifying as well as easy thoughts on this topic to Janet.

  8. I must voice my passion for your generosity in support of those people that absolutely need assistance with the topic. Your personal commitment to passing the solution across had become exceptionally productive and has all the time enabled guys and women like me to attain their desired goals. Your amazing valuable recommendations indicates so much to me and still more to my colleagues. Many thanks; from each one of us.

  9. Aw, this was a really nice post. In concept I want to put in writing like this moreover ?taking time and precise effort to make an excellent article?but what can I say?I procrastinate alot and by no means seem to get something done.

  10. I wanted to compose you this little observation in order to thank you very much the moment again for your striking information you have contributed in this article. It was generous with you to grant easily just what a few individuals might have offered for an ebook to make some dough on their own, mostly seeing that you might have done it if you desired. These strategies as well acted to be the great way to be certain that the rest have the identical desire like my own to learn way more related to this problem. I believe there are numerous more pleasurable times up front for individuals who read your site.

  11. I’m commenting to let you know of the magnificent discovery my friend’s princess went through reading through your site. She realized a wide variety of pieces, including how it is like to have an ideal giving spirit to make the mediocre ones really easily know just exactly specific problematic things. You truly exceeded visitors’ expectations. Thank you for delivering these informative, trustworthy, explanatory and in addition fun guidance on that topic to Gloria.

  12. Good post. I study something tougher on completely different blogs everyday. It would at all times be stimulating to learn content from different writers and follow a bit one thing from their store. I抎 want to use some with the content material on my blog whether you don抰 mind. Natually I抣l offer you a link in your net blog. Thanks for sharing.

  13. Aw, this was a really nice post. In thought I wish to put in writing like this additionally ?taking time and precise effort to make a very good article?however what can I say?I procrastinate alot and not at all seem to get something done.

  14. I found your blog site on google and check a few of your early posts. Proceed to keep up the excellent operate. I simply additional up your RSS feed to my MSN Information Reader. Seeking ahead to reading more from you in a while!?

  15. Thank you a lot for giving everyone remarkably nice opportunity to read from here. It’s usually so useful and as well , packed with a lot of fun for me and my office acquaintances to search your blog at least thrice in 7 days to see the newest secrets you will have. And lastly, I’m also always impressed with the attractive tips and hints you give. Selected two facts in this posting are unequivocally the most suitable I’ve had.

  16. I am only writing to let you understand of the impressive encounter my friend’s princess went through using the blog. She picked up a good number of pieces, not to mention what it’s like to have an excellent teaching spirit to have other individuals smoothly completely grasp selected complicated matters. You truly exceeded readers’ desires. Thanks for imparting the interesting, safe, revealing and fun guidance on this topic to Lizeth.

  17. Thanks so much for giving everyone remarkably nice possiblity to read articles and blog posts from this site. It’s usually so great plus packed with a lot of fun for me and my office peers to visit your site on the least thrice a week to see the new stuff you have got. And indeed, I’m so usually fulfilled with the perfect hints you serve. Some 4 ideas in this posting are without a doubt the best we have ever had.

  18. Do you know what the most popular Halloween costumes are for 2018?
    Check out and see what they are.
    You’re really going to be surprised by number nine.
    It’s definitely one you’re not going to forget any time soon.

  19. I wanted to create you this little observation in order to thank you so much yet again on your splendid concepts you have shared at this time. This has been quite seriously open-handed of you to deliver publicly precisely what a lot of folks would’ve advertised as an e book to generate some bucks on their own, specifically seeing that you might well have done it if you desired. The smart ideas additionally acted to become a great way to fully grasp that most people have similar zeal really like my personal own to understand a great deal more on the subject of this matter. Certainly there are several more fun occasions in the future for folks who find out your site.

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

Внимание: Спам не пройдёт. Работает фильтрация комментариев. *