С чего начать программировать AVR микроконтроллеры. Урок AVR 1
В этом учебном курсе по avr я постарался описать все самое основное для начинающих программировать микроконтроллеры avr. Все примеры построены на микроконтроллере atmega8. Это значит, что для повторения всех уроков вам понадобится всего один МК.
В качестве эмулятора электронных схем используется Proteus — на мой взгляд, — лучший вариант для начинающих. Программы во всех примерах написаны на компиляторе C для avr CodeVision AVR. Почему не на каком-нибудь ассемблере? Потому что начинающий и так загружен информацией, а программа, которая умножает два числа, на ассемблере занимает около ста строк, да и в сложных жирных проектах используют С. Компилятор CodeVision AVR заточен под микроконтроллеры atmel, имеет удобный генератор кода, неплохой интерфейс и прямо с него можно прошить микроконтроллер.
В этом учебном курсе будет рассказано и показано на простых примерах как:
- Начать программировать микроконтроллеры, с чего начать, что для этого нужно.
- Какие программы использовать для написания прошивки для avr, для симуляции и отладки кода на ПК,
- Какие периферийные устройства находятся внутри МК, как ими управлять с помощью вашей программы
- Как записать готовую прошивку в микроконтроллер и как ее отладить
- Как сделать печатную плату для вашего устройства
- Proteus — программа-эмулятор (в ней можно разработать схему, не прибегая к реальной пайке и потом на этой схеме протестировать нашу программу). Мы все проекты сначала будем запускать в протеусе, а потом уже можно и паять реальное устройство. Скачать можно здесь
- CodeVisionAVR — компилятор языка программирования С для AVR. В нем мы будем разрабатывать программы для микроконтроллера, и прямо с него же можно будет прошить реальный МК. Скачать можно здесь
Написание программы для микроконтроллера
- Вход
- Выход
- DDRx.y = 0 — вывод работает как ВХОД
- DDRx.y = 1 вывод работает на ВЫХОД
Все, теперь код готов. Кликаем на пиктограму Build all Project files, чтобы скомпилировать (перевести в инструкции процессора МК) нашу программу. В папке Exe, которая находится в нашем проекте, должен появиться файл с расширением hex, это и есть наш файл прошивки для МК. Для того, чтобы нашу прошивку скормить виртуальному микроконтроллеру в Proteus, нужно два раза кликнуть на изображении микроконтроллера в протеусе. Появится вот такое окошко кликаем на пиктограму папки в поле Program File, выбераем hex — файл нашей прошивки и нажимаем кнопку ОК. Теперь можно запустить симуляцию нашей схемы. Для этого нажимаем кнопку «Воспроизвести» в нижнем левом углу окна Протеус.
Как залить прошивку в протеусе
У вас есть два пути: взять красную таблетку и использовать протеус, или же взять синюю, прошить микроконтроллер(мк) и спаять схему. Хотя в принципе, прежде чем паять нужно всё-таки убедиться в её правильности, мало ли что.
Качаем и устанавливаем Proteus(протеус) и повторяем за мной.
Запускаем ярлык ISIS 7 и появляется такое окно:
![]()
Далее двойной клик на поле Devices и видим строку поиска элементов, можно найти нужные элементы по категориям, но проще по названию. Вводим Atmega8, клацаем на него что бы переместить в список.
![]()
Теперь вводим LED, у нас есть выбор из стандартных светодиодов синего, красного, желтого и зеленого, я выбрал зеленый, кому какой нравится.
![]()
![]()
Следующим этапом загрузим прошивку в Atmega, двойной клик по МК и в разделе Program File нажать на папку.
![]()
Далее жмём на зеленый треугольник запуска и танцуем. Да, прежде чем расстроится, вдруг не заработало, подождите 8 секунд, бывает если не настроено время светодиод будет мигать раз в 8сек.
Дело за практикой. Во-первых, нужен программатор, если есть хорошо, если нету — собираем или покупаем. Хотите собрать? тогда ищите программаторы AVR COM/LTP, к примеру, Громова. Я не советую собирать пятипроводку(stk200) лучше уж stk500/300 хотя он и сложнее. Да! и парадокс чтобы сделать программатор stk500 нужен будет другой программатор . На крайний случай попросите у знакомых, если таковые имеются.
А вот если у вас ноутбук или что ПК без СОМ порта, то вам стоит купить программатор, например USBASP тот же STK500 и т.п. Стоит заметить, что каждая программа «прошивальщик» имеет список программаторов с которыми она может работать. К примеру, USBASP может работать только с Khazama, AVR Dude, Bascom и тд и тп. А простые STK будут работать со штатной средой Atmel Studio (AVR Studio).
Пара слов о немаловажной части микроконтроллера, а именно о Фьюзах. FUSE биты (фьюзы), если уж совсем понятным языком, устанавливают параметры МК такие как частоту генератора, разрешение или запрет на чтение прошивки, памяти и т.д. Обязательно, прежде чем записывать FUSE биты убедитесь в их правильной установке, из-за неопытности в свое время я залочил мегу8, но в умелых руках и имея высоковольтный программатор или fuse doctor можно без проблем разблокировать МК(но опять же имея высоковольтный программатор или fuse doctor).
Запомните, запрограммированный фьюз=0, а не запрограммированный=1.
Приступим к прошивке т.к. у меня USBASP программатор я покажу метод, как прошить контроллер в CodeVision AVR и в Khazame.
Открываем CodeVision и повторяем за мной. Для начала настроим программу под программатор, а уже потом будем программировать.
![]()

Далее настраиваем Фьюзы. Для этого можно использовать Калькулятор фьюзов AVR. В CodeVision галочка — это запрограммированный фьюз , т.е. 0.
![]()
После загружаем прошивку (*.hex) в программу и зашиваем ее в МК . Прошивку берём из предыдущей статьи или качаем Project.rar [318 b] (cкачиваний: 168) .
![]()
И нажимаем Program All.
Теперь как работать с Khazama. Очень простая программа, зная английский всегда можно разобраться. Но стоит запомнить, что в Казарме не запрограммированный — это галочка, привыкайте .
Итак следим за простыми действиями
Выбираем МК в списке
![]()



Жмём Read, и выставляем(галочки) так как на скрине, и жмём Write
![]()
Всё мы прошили,
P.S Если у вас вылетают ошибки в Казарме, скипайте (жмите ОК).
Основы ПО ISIS Proteus, работа с платформой Arduino
В этой статье я хочу поделиться своим опытом и, в основном, рассказать как можно использовать ПО Proteus.
Начнем с информации для общего понимания.
Если всё очень сильно упростить, то Proteus Design Suite — это набор программ для проектирования электронных схем. ISIS Proteus — это одна из программ в данном пакете и именно она представляет больший интерес.
Зачем вообще нужен ISIS Proteus?
А нужен он для моделирования электронных схем. Вы, наверное, спросите — зачем мне изучать и использовать ISIS Proteus, если есть множество других программ, которые позволяют делать это. И я вам отвечу — ISIS Proteus может моделировать работу программируемых устройств: микропроцессоров, микроконтроллеров, DSP и проч. Вы только представьте, вы можете не покупая микроконтроллеры создать, проверить и отладить свой проект без малейшего вложения в покупку МК и прочих компонентов (например: резисторы, транзисторы, светодиоды, моторы, реле и т.д.).
Что понадобится для этого проекта?
Сначала — специализированное ПО. Поскольку в этом проекте я использовал Arduino, мне понадобится среда разработки Arduini IDE. https://www.arduino.cc/en/software — тут вы можете скачать его с официального сайта. Далее нам необходимо будет установить Proteus Design Suite. https://www.youtube.com/watch?v=td4D7BzbX2Q — в этом видео продемонстрировано, как правильно это сделать, всё просто и ничего лишнего.
Примечание: да, я знаю, что на данный момент вышла уже 8-я версия Proteus-а, но у меня и моих знакомых постоянно возникали проблемы с ней. Поэтому будем использовать 7-ю.
Что будем делать после установки?
7-я версия Proteus-а имеет в себе огромную библиотеку компонентов на любой вкус и цвет, но платформ Arduino в ней сначала нет. Нам необходимо это исправить. Скачать одну из таких библиотек можно на этом сайте -https://www.theengineeringprojects.com/2021/03/download-proteus-library-of-arduino-modules.html . Лучше скачивайте версию 2.0.
После скачивания вам нужно распаковать эти файлы и переместить в корневую папку Proteus-а. . \Labcenter Electronics\Proteus 7 Professional\LIBRARY — именно в эту папку нужно распаковать данную библиотеку. https://www.youtube.com/watch?v=YF13YaGg3Mo — видео по теме.
Готово, теперь в библиотеке компонентов мы можем найти основные варианты платформы Arduino.

Теперь нам необходимо написать код для нашего проекта. В свою очередь, для демонстрации возможностей Proteus-а я возьму готовый код из примера, которые хранятся в IDE Arduino, а именно — Blink.

Обязательно нужно поставить галочку «Компиляция» в настройке Arduino IDE. Таким способом мы сможем получить бинарный файл с расширением .hex.

Далее мы компилируем нашу программу и для удобства из панели вывода сразу копируем в буфер ссылку на .hex файл. Пример на скриншоте ниже, но не переживайте, этот файл находиться в корневой папке проекта.

После написания кода и его компиляции нам необходимо построить схему в ISIS Proteus. Можете, конечно, посмотреть пару видео для того что бы разобраться в самой программе.
Вот такая простая схемка у меня получилась. Также нам нужно указать путь к бинарной прошивке Arduino, для этого необходимо двойным кликом по графическому компоненту ARD1 открыть его параметры и в разделе «Program File» указать путь к .hex файлу, который мы получили в ходе компиляции кода.

После того как мы указали путь к прошивке, нажимаем кнопку «Play» и наблюдаем мигание светодиода.
Думаю, что суть работы я достаточно просто изложил. Для того, что бы у вас была мотивация работать далее с этой программой и изучать её функционал ниже вы можете увидеть один из проектов, который я делал. Это схема имитации работы лифта. Как видите, здесь есть кнопки для вызова лифта, экран(на нем выводится номер этажа и другая полезная информация из других режимов работы системы), светодиоды(они дублируют информацию о положении лифта) и еще много других интересных систем.
Как эмулировать AVR в Proteus
Наверняка, многие из читателей данного сайта хотели бы самостоятельно разработать и собрать какое-нибудь устройство на МК AVR. Но причин, по которым это затруднительно сделать в железе, может быть масса. Например, проживание в сельской местности, где нет радиомагазинов с большим выбором радиодеталей. Хотя в таком случае, как всегда, нам приходит на помощь сайт Али экспресс. Либо ограниченность бюджета. Особенно это актуально для школьников и студентов, еще не имеющих постоянного источника дохода.
Так как же быть в таком случае? Здесь на помощь нам приходят специальные программы-симуляторы, специально созданные для отладки схем.
Одну из них, Proteus версию 7.7, мы и разберем в этой статье применительно к нашему проекту.

Что же нам дает эта программа? Начинающие подумают, что она слишком сложная для освоения. Нет, это не так. Просто всеми функциями программы при эмуляции наших первых проектов мы пользоваться не будем. Освоить её основы реально за один-два вечера. Что она дает нам в плане изучения работы с микроконтроллера ми? Там, например, есть визуальное представление работы светодиодов, дисплеев в реальном времени. Можно выбрать для эмуляции работы множество типов МК AVR, в том числе и те, на которых будут основаны наши уроки: Tiny2313 и Mega8. Что это означает и как это осуществляется? Мы пишем код нашей прошивки, компилируем его, получаем нужный нам HEX-файл и виртуально прошиваем наш МК в программе Proteus. Причем мы также можем изменить и фьюз биты нашего виртуального МК.
Давайте разберем, какие действия нам нужно произвести, чтобы собрать эту схему на рабочем поле самостоятельно и произвести эмуляцию.
Вот такое окно у нас открывается сразу после запуска программы (кликните для увеличения):
Далее нам нужно нажать Файл => Новый проект, ввести название и выбрать в какой папке мы его сохраняем

Затем нам нужно выбрать из библиотеки те радиодетали, которые нам нужны для проекта и поместить их в список деталей. Их мы затем сможем выбрать и установить на рабочее поле. В нашем проекте мы будем использовать МК Attiny2313, желтый светодиод LED-YELLOW (он хорошо «светится» в Протеусе) и резистор RES для ограничения тока, протекающего через светодиод. Иначе мы, как бы это смешно не звучало, «спалим» виртуальный светодиод :-).

Для того, чтобы выбрать эти радиоэлементы, мы должны кликнуть по буковке «Р»:

После того, как кликнули, выйдет вот такое окошко:

В поле «Маска» вбиваем то, что хотим найти, а именно, наш МК, светодиод и резистор

Набираем в поле Маска “Tiny2313” и кликаем по найденному нами МК в графе «Результаты(1)»:

Затем повторяем то же самое с резистором. Вбиваем «res»:

и точно также ищем светодиод:

Ну вот, теперь все эти три элемента у вас должны отобразиться в графе «Устройства»:

Теперь кликаем по черной стрелочке, и потом уже в списке выбираем нужный нам радиоэлемент:

Слева в вертикальной колонке мы видим значок «Терминал». Нас там интересуют две строчки: Power и Ground. Это соответственно в нашей схеме +5 вольт питания и земля. На МК питание подавать не надо, оно подается автоматически. Для схемы мы берем только значок «земля».

Вытаскиваем все радиоэлементы на рабочее поле

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

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

А потом меняем значение на 200 Ом. Вполне хватит, что наш виртуальный светодиод не помер)

Иногда рабочее поле у нас пытается убежать с экрана, тогда нам нужно, используя скроллинг колесика мыши изменить масштаб, и кликнуть, установив зеленую рамку в левом верхнем углу так, чтобы весь наш проект оказался внутри нее

Кстати, хочу сразу сказать, если мы совершили какое-то ошибочное действие, нам достаточно нажать кнопку «Отменить» и последнее действие будет отменено. Думаю, многие это знают из сторонних программ, но мало ли).

Итак, мы собрали схему. Теперь надо залить прошивку в наш микроконтроллер и посмотреть, как же это выглядит в действии. Для этого нам нужно кликнуть правой кнопкой мыши по МК и нажать иконку с изображением желтой папки в графе Program Files. Кстати, здесь же можно при необходимости выставить фьюз биты (кликните для увеличения картинки):
Затем нужно выбрать файл прошивки с расширением *.HEX и нажать «Открыть». Все готово, можно эмулировать проект.
(для увеличения кликните по картинке)
Для начала эмуляции нужно нажать кнопочку «треугольник» в нижнем левом углу программы «Протеус»:

У нас начнется эмуляция. Мы увидим, как мигает светодиод. В какой-то момент времени наш светодиод будет светиться. Смотрите как ярко горит желтым цветом 🙂

А потом он снова будет тухнуть:

Теперь мы можем при желании сохранить наш проект под любым названием, выбрав “Cохранить проект как”, а также если требуется открыть готовый файл другого проекта, выбрав “Открыть проект”

Так выглядит иконка сохраненного проекта на рабочем столе:

Также можно сохранить проект как готовый шаблон, выбрав “Сохранить проект как шаблон” и в будущем использовать его, в качестве части любой будущей схемы:

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