Site Loader

Содержание

ATmega8 в среде разработки Arduino

Для работы с микроконтроллером ATmega8 или с Arduino устройством на ATmega8 в среде разработки Arduino программу Arduino необходимо настроить. Нужно добавить в файл hardware/arduino/boards.txt параметры поддерживаемых устройств на микроконтроллере ATmega8.

Возможно, будет необходимо добавить файлы bootloader (загрузчик) в папку hardware/arduino/bootloaders/optiboot.

Микроконтроллер ATmega8 может работать на частоте 0-16МГц при напряжении ~5В, а ATmega8L на частоте 0-8МГц и ATmega8A на частоте 0-16МГц в широких пределах напряжения питания. Это по паспорту, а практически, при напряжении 5В, все микроконтроллеры серии ATmega8 могут работать на частоте 16МГц с внешним кварцевым резонатором и на частотах 8, 4, 2, 1МГц с внутренним генератором.

Существует вариант платы Arduino на микроконтроллере ATmega8, это Arduino NG. Среда разработки Arduino (Arduino IDE) готова к работе с микроконтроллером ATmega8, но только с одним устройством — это плата Arduino NG с микроконтроллером ATmega8 на частоте 16МГц с внешним кварцевым резонатором. Так обстоят дела в Arduino v. 1.0.6. Кроме того, для Arduino NG предлагается не самый оптимальный и главное не удобный bootloader.

Для того, чтобы была возможность программировать микроконтроллеры ATmega8 работающие на разных частотах с кварцевым резонатором и без него необходимо внести изменения в файл hardware/arduino/boards.txt Например, можно добавить в него следующие секции:

# http://optiboot.googlecode.com
# http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik

##############################################################

atmega8o.name=ATmega8 (optiboot 16MHz ext)
atmega8o.upload.protocol=arduino
atmega8o.upload.maximum_size=7680
atmega8o.upload.speed=115200
atmega8o.bootloader.low_fuses=0xbf
atmega8o.bootloader.high_fuses=0xdc
atmega8o.bootloader.path=optiboot50
atmega8o.bootloader.file=optiboot_atmega8.hex
atmega8o.bootloader.unlock_bits=0x3F
atmega8o.bootloader.lock_bits=0x0F
atmega8o.build.mcu=atmega8
atmega8o.build.f_cpu=16000000L
atmega8o.build.core=arduino:arduino
atmega8o.build.variant=arduino:standard

##############################################################

a8_8MHz.name=ATmega8 (optiboot 8 MHz int)
a8_8MHz.upload.protocol=arduino
a8_8MHz.upload.maximum_size=7680
a8_8MHz.upload.speed=115200
a8_8MHz.bootloader.low_fuses=0xa4
a8_8MHz.bootloader.high_fuses=0xdc
a8_8MHz.bootloader.path=optiboot
a8_8MHz.bootloader.file=a8_8MHz_a4_dc.hex
a8_8MHz.build.mcu=atmega8
a8_8MHz.build.f_cpu=8000000L
a8_8MHz.build.core=arduino
a8_8MHz.build.variant=standard

##############################################################

a8_1MHz.name=ATmega8 (optiboot 1 MHz int) 
a8_1MHz.upload.protocol=arduino 
a8_1MHz.upload.maximum_size=7680 
a8_1MHz.upload.speed=9600 
a8_1MHz.bootloader.low_fuses=0xa1 
a8_1MHz.bootloader.high_fuses=0xdc 
a8_1MHz.bootloader.path=optiboot 
a8_1MHz.bootloader.file=a8_1MHz_a1_dc.hex 
a8_1MHz.build.mcu=atmega8
a8_1MHz.build.f_cpu=1000000L 
a8_1MHz.build.core=arduino 
a8_1MHz.build.variant=standard

##############################################################

a8noboot_8MHz.name=ATmega8 (no boot 8 MHz int)
a8noboot_8MHz.upload.maximum_size=8192
a8noboot_8MHz.bootloader.low_fuses=0xa4
a8noboot_8MHz.bootloader.high_fuses=0xdc
a8noboot_8MHz.build.mcu=atmega8
a8noboot_8MHz.build.f_cpu=8000000L
a8noboot_8MHz.build.core=arduino
a8noboot_8MHz.build.variant=standard

##############################################################

Теперь в программе Arduino в меню / появятся следующие устройства:

  • ATmega8 (optiboot 16MHz ext)
  • ATmega8 (optiboot 8 MHz int)
  • ATmega8 (optiboot 1 MHz int)
  • ATmega8 (no boot 8 MHz int)

Первые три устройства на микроконтроллере ATmega8 содержат bootloader, являются Arduino совместимыми и в них непосредственно можно загружать скетчи (программы) из среды разработки Arduino. Четвертое устройство не содержит bootloader, это может быть отдельная микросхема ATmega8. В ATmega8 (no boot 8 MHz int) скетчи из программы Arduino можно загружать через программатор, в том числе и через программатор на базе платы Arduino.

ATmega8 (optiboot 16MHz ext) работает с внешним кварцевым резонатором, остальные устройства с внутренним генератором.

Параметры в файле hardware/arduino/boards.txt определяют fuse биты, путь к файлу загрузчика (bootloader), тип микроконтроллера и его частоту. Fuse биты записываются в микроконтроллер (с загрузчиком или без него) когда вы выбираете пункт меню / . Fuse биты определяют на какой частоте будет работать Ваш микроконтроллер и другие важные параметры, в том числе и такие, от которых зависит его работоспособность, перепрограммируемость и т.д.

Fuse биты НЕ записываются в микроконтроллер когда вы заливаете скетчи. Если в меню / будет выбрано не подходящая платформа то:

  • При загрузке скетчей
    • Не подходящая частота — приводит к изменению скорости работы программ
    • Не подходящий процессор — приводит к неработоспособности программ
  • При записи загрузчика
    • Не подходящая частота — может привести к неработоспособности микроконтроллера в данной системе
    • Не подходящий процессор (fuses) — к блокировке микроконтроллера

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

Bootloader для микроконтроллера ATmega8.

Оптимальный bootloader для микроконтроллеров ATmega 8 можно скачать с сайта проекта Optiboot.

Optiboot bootloaders для различных рабочих частот микроконтроллера можно скачать с сайта Конструктор загрузчика.

Bootloaders Optiboot — это не зависимая свободная разработка загрузчиков, признанная разработчиками Arduino. Optiboot предназначен для использования в разных вариантах Arduino и для множества микроконтроллеров Atmel. Основные отличия загрузчика Optiboot от конкурентов — это до четырех раз уменьшенный размер  кода, сокращение бесполезных задержек в работе микроконтроллера, высокая скорость загрузки скетчей с компьютера.

Размещайте файлы bootloaders в программе Arduino в соответствии с тем, что написано в файле hardware/arduino/boards.txt. Например, для устройства ATmega8 (optiboot 16MHz ext) файл загрузчика необходимо поместить в папку hardware/arduino/bootloaders/optiboot50 и имя файла должно быть optiboot_atmega8.hex

Про Arduino IDE, загрузчики (bootloader), программаторы (avrdude.exe), фьюзы, HEX-файлы. В одном флаконе. Не претендуя на оригинальность.

РадиоКот >Статьи >

Про Arduino IDE, загрузчики (bootloader), программаторы (avrdude.exe), фьюзы, HEX-файлы. В одном флаконе. Не претендуя на оригинальность.

Про Arduino IDE, загрузчики (bootloader), программаторы (avrdude.exe), фьюзы, HEX-файлы. В одном флаконе. Не претендуя на оригинальность.

Для предметности разговора начну с картинки

Нет худа без добра (с).
Пока использовал заводские платы «Arduino UNO» и «Arduino MiniPRO», я не задумывался о том, как работает система в целом. Я просто писал код, нажимал кнопку «Вгрузить» и всё заливалось в микроконтроллер, далее МК, установленный на плате (ATmega328). В этом и заключается прелесть экосистемы «Arduino».

Сподвигла написать данный опус проблема. Никак мне удавалось залить исходную программу, далее СКЕТЧ, из Arduino IDE в нестандартный для неё МК «ATmega8L» с кварцем 8МГц стандартным способом, т.е. через USB-порт (на самом деле через преобразователь USB- UART). Это кратко. Теперь начну рассказывать, какую важную информацию я «наковырял» и как решил свою проблему.

Немного общей теории.
Для того, что бы залить (прошить, загрузить, UPLOAD) скетч в ATmega8L из Arduino IDE через USB-порт, нужен преобразователь, который преобразует информацию, передаваемую по USB-интерфейсу(каналу, дороге, линиям) в сигналы последовательного канала UART. Т.е. должны получиться определенные уровни сигналов – интерфейс (RS232, RS485) и определенные длительности сигналов (протокол).

Что бы принять информацию, поступающую в ATmega8L по UART (физически через выводы Rx, Tx) в МК должна быть ПРЕДВАРИТЕЛЬНО загружена программа, которая настраивает определенные выводы МК как Rx и Tx, и умеет обрабатывать полученную через них информацию. Эта программа называется ЗАГРУЗЧИК или по англицки BOOTLOADER.

(Отступление. ЗАГРУЗЧИКи бывают для разных интерфейсов и, соответственно, протоколов. Программа-программатор, заливающая информацию, должна соответствовать имеющемуся ЗАГРУЗЧИКу. И наоборот — прошитый ЗАГРУЗЧИК должен соответствовать управляющей программе-программатору. Грубо говоря — это «папа» и «мама» одного разъема. Очень часто для МК фирмы ATMEL «папой» является программа avrdude.exe).

Итак, посредством USBasp-платы и avrdude.exe я залил ЗАГРУЗЧИК в ATmega8L. Залитый ЗАГРУЗЧИК должен учитывать определенные физические характеристики МК. В моем случае это то, что МК работает с внешним кварцем на частоте 8МГц (в рамках данной статьи этой характеристики достаточно). Заливка ЗАГРУЗЧИКа происходит просто и жестко – как указал разработчик МК. Не залить HEX-файл (FIRMWARE) ЗАГРУЗЧИКа при минимальном количестве извилин, прямых руках, исправных деталях и правильном соединении просто невозможно.

А почему же тогда возникает проблема залить скетч? Ответ есть выше. Предварительно прошитый ЗАГРУЗЧИК должен соответствовать настройкам «программы-заливатору» (от слова «программатор») и, конечно же, преобразователю интерфейса (плате-программатору). Если идиот подключит два проводка от Rx и Tx ATmega8 к двум выводам разъема USB, то ничего не прошьется. Поэтому на платах-преобразователях останавливаться не буду. Единственно напомню, что ISP-программаторы — это программаторы «железа», которые работают на самом низком уровне и позволяют настраивать МК почти как угодно в пределах возможного.

Вот и нарисовался главный вопрос: Как определить, что имеющийся в МК ЗАГРУЗЧИК соответствует программе-программатору (в рамках данной статьи – Arduino IDE)? Если кратко – то никак!!! И не поможет вам ни осциллограф, ни анализатор. С помощью анализатора можно увидеть длительности каких-то сигналов и максимум, что можно определить – используемую ЗАГРУЗЧИКом скорость, если он будет что-нибудь выдавать по линии Tx. Но даже если скорость будет согласованная, а считанная информация читабельна, это не скажет нам ровным счетом ничего. Единственный способ подружить ЗАГРУЗЧИК в МК и «программу-заливатор» – это читать и следовать информации разработчика ЗАГРУЗЧИКа.
И вот здесь мы подходим к главному плюсу и недостатку одновременно Arduino IDE – дружелюбному интерфейсу для начинающего пользователя. Читай: скрытие всех системных настроек программы от пользователя.
Продолжаю. Итак, мы прочитали информацию от разработчика ЗАГРУЗЧИКа как прошивать его ЗАГРУЗЧИК и как потом загружать HEX-файлы в МК. НО СТОП! В Arduino IDE нет понятия «ЗАГРУЗЧИК», «HEX-файл». Здесь я вынужден прервать рассказ, вернуться к первой картинке и рассказать «с высоты птичьего полета» как устроена Arduino IDE.

1) Грубо говоря, программная платформа «Arduino IDE» предоставляет нам только убогий (для профи) и замечательный для экосистемы «Arduino» интерфейс для написания скетчев и легкой настройки (плата, порт, программатор). При нажатии кнопки «Проверить»(скетч) в дело вступает «наемный профессионал» — компилятор avr-gcc.exe, который преобразует нашу гениальную программу в вид, принимаемый программой-программатором – HEX-файл. Если скетч преобразовался (скомпилировался) и получился HEX-файл, то можно приступить ко второму шагу(смотри картинку1).
2) Запустить программу-программатор с определенными параметрами, что бы HEX-файл «скормить», например, через преобразователь USB-UART, ЗАГРУЗЧИКу МК. Из данной схемы видно, что если автор ЗАГРУЗЧИКа использует в качестве программы-программатора, например, классическую «дудку» (avrdude.exe), то нам вовсе необязательно мучится с настройками платформы «Arduino IDE», спрятанными в фиг знает каких файлах и фиг знает в каком формате. Мы можем просто написать свой bat(cmd, скрипт)-файл и запускать его как для компиляции проекта (avr-gcc.exe), так и для заливки HEX-файла в МК (avrdude.exe). А дальше процесс происходит практически на уровне железа.
3) Драйверы операционной системы преобразуют информацию так, что бы она была понятной подключенным USB-устройствам. В представленной схеме я показал два варианта:
4) 1-й вариант с USB-UART -преобразователем и МК с обязательным (5.1) ЗАГРУЗЧИКом. 2-й вариант с аппаратным USBasp-программатором и (5.2)МК (ЗАГРУЗЧИК не нужен, хотя может иметься).

Какие можно сделать выводы, глядя на представленную картинку?
1. НЕ НАДО устраивать танцы с бубном, если не происходит в Arduino IDE компиляция проекта. Заходим на сайт разработчика компилятора для требуемого МК (ATmega, ESP8266 и т.п.) и читаем, какая среда требуется для компиляции проекта, и с какими опциями надо запустить компиляцию. Часто это будет быстрее и проще, чем пытаться подружить Arduino IDE с нужным МК. Да, для этого надо обладать определенным уровнем знаний не на уровне электрика.
2. Тоже самое можно сказать и о случае, если не происходит заливка HEX-файла в МК через ЗАГРУЗЧИК. Вводим в командной строке рекомендуемую для данного ЗАГРУЗЧИКа команду и получаем результат. Если результат отрицательный, то почти сразу знаем куда «копать». Либо проблема с драйверами ОС, либо дохлая ножка Rx, либо косяк разработчика и на худой конец – проблема в ДНК пользователя.
Вроде всё, о чем я рассказал, есть в интернете, но часто для начинающего ардуинщика непонятно, нужна ли ему некая информация и как ею воспользоваться. Это как на первом курсе универа нас пичкают производными, интегралами, матрицами и у студента растет естественное чувство «А нафига нам это надо?». А потом какой-нибудь практик возьмет и покажет, как использовать для решения реальных задач эту «вышку». И наступает «дзен». Вдруг резко всё, что валялось в голове в виде ненужного хлама, раскладывается по полочкам и ты понимаешь, что стал ИНЖЕНЕРОМ.

К сожалению это не всё, что надо бы знать начинающему ардуинщику. Кое-что расскажу о ЗАГРУЗЧИКЕ (bootloader) подробней.
Что же надо знать о ЗАГРУЗЧИКе, что бы осознанно им пользоваться?
1)Размер загрузчика.
2)Область памяти, в которую он загружается.
3)Фьюзы, которые должны быть использованы с загрузчиком.
4)Скорость для UART.
5)Частоту МК, под которую рассчитан ЗАГРУЗЧИК.
6)Ну и конечно же, под какой МК рассчитан ЗАГРУЗЧИК.
7)Внешнее проявление работающего ЗАГРУЗЧИКа.
8)Критерий для запуска ЗАГРУЗЧИКА.

1) Загрузчик имеет некий размер. Есть МК, у которых мало памяти, и разместить ЗАГРУЗЧИК просто нет места. Или место есть, но не останется места для программы пользователя. Загрузчик – это все таки только программа-посредник для нашего удобства.
2) В МК ATmega Загрузчик может заливаться (условно говоря) в одну из 4х верхних областей Flash-памяти.
3) Соответственно фьюзами задаем область памяти МК, в которой находится ЗАГРУЗЧИК, что бы МК знал, с какого адреса запускать программу в МК после «Reset» или другого события.
4) В экосистеме «Arduino» используется ЗАГРУЗЧИК по UART. А для этого протокола важна скорость. Если Загрузчик настроен на одну скорость обмена информацией, а программа-программатор(avrdude.exe) на другую, то загрузки HEX-файла в память МК не произойдет.
5) МК может работать с разными тактовыми частотами. Чем ниже частота – тем меньше потребляемая мощность. Если залить ЗАГРУЗЧИК, не рассчитанный на используемую МК тактовую частоту, то как минимум будет проблема в несогласованной скорости UART. Т.е. скетч вряд ли загрузится в МК, а если ЗАГРУЗЧИК без контроля ошибок, то может загрузиться черт знает что.
6) Типов МК очень много. ЗАГРУЗЧИК для МК AVR не подходит для МК PIC. Проблемы могут возникнуть даже для одинаковых МК, но в разных корпусах.
7) Очень не мешает знать, как ведет себя загрузчик в МК без пользовательской программы. Вот получили вы посылку из Китая с Arduino ProMini и как узнать есть в ней загрузчик или нет? А если есть описание, то можно прочитать, что при подаче питания или сбросе должен 5 раз мигнуть желтый светодиод. Не мигает? Значит нет загрузчика или у вас проблемы с платой.
8) Вообще-то ЗАГРУЗЧИК может активизироваться (начать свою работу, прервав работу основной программы) не только по сигналу сброса, но любым другим способом, который реализовал разработчик, например, замыканием выв. 5 МК на землю.

А теперь переведем полученную информацию в практическую плоскость.

1) Как узнать размер ЗАГРУЗЧИКА, находящегося в МК?
Если речь о загрузчике, залитом в плату ардуино (читай в МК ATmega8/168/328), то можно прочитать с помощью программы-программатора, например, AVRDUDESS и платы-программатора USBasp, Flash-память и фьюзы BOOTSZ0 и BOOTSZ1. Открыв сохраненный HEX-файл текстовым редактором, можно увидеть в младших адресах код пользовательской программы, потом незанятую память (FF) и в самых верхних адресах памяти (см строку 225) код загрузчика с адреса 1C00 и до признака конца 01FF. Таким образом можно узнать длину загрузчика в байтах, а потом перевести в длину в словах.

 

2)Как узнать размер ЗАГРУЗЧИКА, который мы хотим разместить в МК?
Открываем в текстовом редакторе HEX-файл, в котором хранится интересующий нас загрузчик. Видим приблизительно такую куртинку

Здесь пояснения как понимать полученные цифры

3)Что будет, если залить загрузчик и неправильно выставить фьюзы BOOTSZ0 и BOOTSZ1?
Надо иметь ввиду, что не любой загрузчик способен перезаписать сам себя. Почему так? Этот вопрос выходит за рамки данной статьи. Более того, вопрос поставлен не «как перезаписать загрузчик в МК средствами платформы Arduino IDE?», а о первичной записи в новый МК загрузчика и установке конкретных фьюзов BOOTSZ0 и BOOTSZ1, предполагая, что остальные фьюзы установлены гарантированно правильно.
Итак, первый раз загрузчик всегда прошивается аппаратным программатором (ISP), поэтому выставим ли сначала фьюзы BOOTSZ0 и BOOTSZ1, а потом зальем ЗАГРУЗЧИК или наоборот, значения не имеет, так как ISP-программатор будет загружать данные по адресам, указанным в HEX-файле. Но вот потом, после Reset, ATmega8 начнет выполнение программы с адреса 000, если фьюз BOOTRST=1, независимо от BOOTSZ0 и BOOTSZ1


Из таблицы видно, что если Загрузчик разместим не с нужного адреса или неправильно установим фьюзы, то Загрузчик не запустится должным образом. Под должным образом я подразумеваю запуск нештатным способом за счет других ошибок, которые «исправляют» начальные ошибки. Например, залили в ATmega8 ЗАГРУЗЧИК длиной 510 слов с адреса E02, т.е. как фьюзы BOOTSZ1 и BOOTSZ0 не выставляй, а при сбросе ЗАГРУЗЧИК не запустится (не получит управление МК). Или прошили ЗАГРУЗЧИК размером в 1000 слов с адреса C00, но фьюзы BOOTSZ1 и BOOTSZ0 выставили в 0 и 1. Тогда при сбросе счетчик команд будет установлен в E00 и какой-то участок кода ЗАГРУЗЧИКа запустится, но такой запуск может привести к непредсказуемым результатам.
4)Что будет, если ЗАГРУЗЧИК от ATmega8 залить в ATmega328?
С одной стороны ATmega8 и ATmega328 выводно совместимы, с другой – у них разный объем памяти, а ЗАГРУЗЧИК всегда размещается в конце памяти (в старших адресах). Поэтому, если мы перекомпилируем исходник загрузчика для ATmega8 под ATmega328, то нельзя говорить о том, что мы пытаемся залить ЗАГРУЗЧИК от ATmega8 в ATmega328. Другое дело, если мы попытаемся HEX-файл с ЗАГРУЗЧИКом от ATmega8 залить в ATmega328. Здесь ответ однозначный – данные зальются вовсе не в конец памяти ATmega328, где должен располагаться ЗАГРУЗЧИК, а в область пользовательской программы и никогда штатным образом ЗАГРУЗЧИК не получит управление (не запустится).

И о результате осознания и конечном итоге.
Теперь я знаю, что ЗАГРУЗЧИК optiboot_flash_atmega8_UART0_57600_8000000L.hex из проекта MiniCore, который я хочу залить в свою ATmega8L зальется с адреса 1E00, т.е. займет сектор памяти 1FFF-1E00=1FF (512байт или 256 слов). Соответственно я должен установить (в ноль) три фьюза следующим образом: BOOTRST=0, BOOTSZ1=0 и BOOTSZ0=1 (см таблицу выше)

Залил с помощью программы AVRDUDESS и USBasp-программатора
Как я говорил выше, ЗАГРУЗЧИК и Программа-программатор – это мама и папа одного разъема. И коль я прошил ЗАГРУЗЧИК (маму), то теперь надо настроить «папу»-ArduinoIDE, которой я должен «рассказать» 1) скорость UART, 2)марку МК, 3)Частоту тактирования процессора МК (требуется для правильной компиляции, а не для загрузки), 4)Место, где лежит HEX-файл прошитого ЗАГРУЗЧИКА. Зачем? Не знаю.
Отредактируем файл boards.txt. В разных версиях ArduinoIDE он имеет разный формат!!!
1)Название платы для меню в ArduinoIDE задаётся в строке с «.name=», например: 328.name=ATmega328 или atmegang.name=Arduino NG or older

2)За выбор названия МК для меню отвечает строка вида «.menu.cpu.atmega8=», например: atmegang.menu.cpu.atmega8=ATmega8 или 8.build.mcu=atmega8
К сожалению, все параметры для всех версий ArduinoIDE описать невозможно. Поэтому я показал соответствующие разделы файла boards.txt двух версий. Думаю по образцу и подобию Вы сможете доработать свою версию ArduinoIDE под свои ЗАГРУЗЧИКИ.

Проверим теорию на практике, для чего:
1)Зальем посредством USBasp в ATmega8 (на беспаечной плате) с кварцем 16МГц штатный загрузчик из состава ArduinoIDE «ATmegaBOOT-prod-firmware-2009-11-07.hex» (размер файла 2,8кБ), загрузка с адреса 1C00. Разъемы от плат-программаторов USBasp и USB-UART от беспаечной платы отключать не буду, что бы не перепутать при подключении. Проще отсоединить/присоединить к программаторам, которые надо обязательно отсоединять. Устанавливаю фьюзы L=FF, H=C0. Отключаю USBasp, смотрю на светодиод, подаю питание. Несколько раз быстро мигнул и более не светится. Значит загрузчик работает. Теперь зальем скетч BLINK штатным способом. Подключаюсь USB-UART и светодиод начинает вести себя совсем по другому- раз в 8 сек светится. Запускаю ArduinoIDE 1.6.6.0, устанавливаю Arduino NG…, ATmega8, порт, программатор AVRISP mkII. AVRDUDE 6.0.1 выдает кучу всякой информации (у меня так настроено), скорость 19200. Скетч прошивается и сразу начинает выполняться. Т.е. провода, фьюзы, настройки выполнены правильно.
2)По такой же методике выполним заливку загрузчика optiboot_flash_atmega8_UART0_115200_16000000L.hex, переименовав в «01.hex» и положив в каталог optiboot (размер файла 1,34кБ), загрузка с адреса 1E00. Поэтому фьюзы L=FF, H=C2. После заливки загрузчика светодиод начинает мигать несколько раз в секунду. Без программаторов (только питание) не светится, т.е. загрузчик не выдает своего присутствия. Добавляю секцию в файл boards.txt
##############################################################
#поместите HEX-файл в каталог optiboot

a8_16MHz_E.name=atmega8 (16 MHz_ExtOsc_115k)
a8_16MHz_E.upload.tool=avrdude
a8_16MHz_E.upload.protocol=arduino
a8_16MHz_E.menu.cpu.atmega8.upload.maximum_size=7680
a8_16MHz_E.menu.cpu.atmega8.upload.maximum_data_size=512
a8_16MHz_E.upload.speed=115200
a8_16MHz_E.bootloader.unlock_bits=0x3F
a8_16MHz_E.bootloader.lock_bits=0x0F
a8_16MHz_E.menu.cpu.atmega8.bootloader.low_fuses=0xff
a8_16MHz_E.menu.cpu.atmega8.bootloader.high_fuses=0xc2
a8_16MHz_E.bootloader.tool=avrdude
a8_16MHz_E.bootloader.path=optiboot
a8_16MHz_E.bootloader.file=01.hex
a8_16MHz_E.build.mcu=atmega8
a8_16MHz_E.build.f_cpu=16000000L
a8_16MHz_E.build.core=arduino
a8_16MHz_E.build.variant=standard
a8_16MHz_E.build.board=AVR_NG

Прошиваю штатным способом. Светодиод при наличии USB-UART не светится. При отключении преобразователя и подаче питания начинает мигать, т.е. скетч запустился.

3)Когда попытался повторить вышеописанное для загрузчика optiboot_flash_atmega8_UART0_115200_8000000L.hex потерпел неудачу. Штатным способом скетч не заливался. После долгих танцев с бубном, на основании которых и появился данный трактат, пришел к выводу, что косяк разработчика, так как те же действия для optiboot_flash_atmega8_UART0_38400_8000000L.hex привели к загрузке скетча штатным способом. Кроме того, посмотрев файл boards.txt, нашел в нем ошибки, например:
###################
#### ATmega8/A ####
###################

8.name=ATmega8
8.upload.tool=avrdude
8.upload.protocol=arduino
8.upload.maximum_size=7680
8.upload.maximum_data_size=1024!!!!!!!!!!!!!!!! Ошибка
8.menu.clock.16MHz_external.bootloader.high_fuses=0xc4!!!!!!!!!!!!ошибка
И нет для 8МГц скорости 115200, а нерабочий HEX-файл есть. Вот и верь разработчикам.

Извините, что не могу привести отличия форматов файла boards.txt в разных версиях ArduinoIDE, так как этим вопросом не занимался. Попробовал сделать под имеющуюся версию по образцу и подобию – получилось. Глубже не «копал».

Спасибо за внимание. Буду рад, если кому-то мои исследования оказались полезными.

P.S. В последних версиях в конфигурацию (boards.txt) начали прописывать vid и pid. Видимо жаба душит итальянцев. Берегите старые версии ArduinoIDE. А то будет как с хромом – негде скачать старую версию.

P.S.2 При прошивке скетча в МК в сообщениях об ошибках ArduinoIDE, а правильнее сказать AVRDUDE, может упоминаться протокол STK500. В штатном режиме работы мы выбираем программатор AVRISP mkII. А в меню еще есть AVR ISP, Arduino ISP, Arduino as ISP. В русскоговорящем интернете я не встречал объяснения «на пальцах» зачем такое обилие типов программаторов в ArduinoIDE и главное, чем они отличаются и когда какой использовать. Поэтому чувствую себя как лох в хорошем ресторане, перед которым положили 5 ложек и 5 вилок…. И все смотрят только на меня. Кое-что я нашел на сайте microsin, но у автора есть проблема с обозначением объекта. Это как безобъектный праздник «день независимости». Независимости кого, от чего? Каждый волен понимать как хочет. И многие этим пользуются. Но в технике нужна однозначность. Попробую объяснить «на пальцах» как понял я. Если не прав, то прошу поправить.
Итак, AVRISP mkII это плата-программатор от AVR для своих микроконтроллеров серий ATtinyXX, ATmegaXX и других с последовательным (не UART ) интерфейсом ISP (4 сигнальных провода MOSI, MISO, SCK, GND) (режим последовательного программирования на основе интерфейса SPI). Интересно, зачем нужны эти два интерфейса ISP и SPI в одном программаторе? Так как обмен данными между AVRISP mkII и компьютером PC происходит через интерфейс USB, а плата-программатор AVRISP mkII построена на основе AVR-USB162, AVR-USB162MU, AVR-USB32U4 и других, то требуется прошивка для используемого МК. Firmware для программатора AVRISP mkII, распространяется свободно. Понятно, что количество типов МК растет и хотелось бы, что бы плата-программатор AVRISP mkII умел с ними работать. Соответственно надо дорабатывать прошивку AVRISP mkII. Но AVRISP mkII должен общаться не только с программируемым (целевым) МК, но и компьютером. Так вот этот набор «слов для общения» называют протоколом. И эти протоколы тоже развиваются (STK500, STK600. AVRISP mkII во многом совпадает с протоколом STK600). До сих пор вроде понятно, если вспомнить, что на плате Arduino UNO использовался преобразователь-программатор на основе ATmega8U2. Но всякое понимание улетучивается, когда вспоминаем, что платы Arduino продаются с прошитым в основной МК загрузчиком. И нет никакого ISP (MOSI, MISO, SCK, GND). Всё общение происходит по интерфейсу UART, и даже нет необходимости эмулировать сигналы ISP. Тогда при чем AVRISP mkII?
А вот если мы обратим свой взор на стартеркит STK500 (что это такое?), то увидим, что обмен между STK500 и PC происходит через интерфейс RS232 (PC COM-порт)(тот же UART, только уровни сигналов +/- 12в, а не 0-5в). При этом STK500 использует следующие настройки порта: 115.2kbps, 8 data bits, 1 stop bit, no parity. Интерфейс на выходе программатора STK500 – ISP и PP. STK500 и AVRISP поддерживают тактовые частоты ISP от 4 кГц до 1.8 МГц.
Про UART и загрузчик – ни слова. Так почему AVRISP mkII?

Файлы:
ATmega8 Addressing the Flash
распределение памяти в атмега8
ATmega8 фьюзы Заводские и как должно стать
ATmega8 зависимость частоты от напряжения питания
AVRDUDESS фьюзы
Последовательное программирование
преобразователь usb-uart
Штатный загрузчик от Ардуино
03.hex
01.hex
04.hex
FLASH память-RWW-NRWW
USBasp-atmega8A-pin
Эта статья в ворд-формате
Работа с представленными загрузчиками
проверенная Blink РАБОЧАЯ секция
проверенная Blink РАБОЧАЯ секция3
проверенная Blink РАБОЧАЯ секция1
сообщения при удачной заливке скетча новым загрузчиком на 16МГц
сообщения при удачной заливке скетча штатным загрузчиком

Все вопросы в Форум.


Как вам эта статья?

Заработало ли это устройство у вас?


Эти статьи вам тоже могут пригодиться:

Программируем м/к Atmega через Arduino

Программируем м/к Atmega через Arduino

Иногда на новый м/к необходимо прошить загрузчик ,или мы хотим использовать нестандартный микроконтроллер в своих поделках,а отдельного программатора у нас нет,то тут приходит на помощь плата arduino со специально загруженным скетчем.

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

Напомним расположение выводов SCK,MISO,MOSI на ардуинке:


 У плат серии Mega выводы SCK,MISO,MOSI находятся на других портах: 50 -MISO, 51 -MOSI , 52 -SCK , 53 — reset у программируемого м/к .

 

Подключаем питание на соотвествующие выводы программируемого микроконтроллера GND и VCC к Arduina , а так же соотвественно выводы SCK,MISO,MOSI.Вывод м/к Reset необходимо подключить к 10 выводу(53 у Mega) По такой схеме подключаются все м/к Atmega для программирования или просто прошивки загрузчика.

 

Прошивка микроконтроллеров Atmega через плату arduino:

 Если Вы уже подключили программируемый микроконтроллер к плате arduino ,то можем уже заняться прошивкой,но для этого необходимо запрограммировать плату arduino в режим программатора. Для этого выбираем скетч из примеров под названием ArduinoISP:

Загружаем данный скетч в плату arduino.

 

 

 

 

 

 

 

Выбираем программатор arduino as ISP в меню сервис в подменю программатор.Не забываем вернуть программатор на место,когда будем программировать снова платы arduino.

 

Выбираем в меню свой микроконтроллер:

Если Вы просто хотите загрузить в микроконтроллер загрузчик,то необходимо через меню сервис выбрать записать загрузчик,этим самым вы установите необходимые фьюзы.

Для чего нужен загрузчик ? Установка загрузчика дает возможность напрямую ,через последовательный порт прошивать микроконтроллер (только имеющие аппаратный последовательный порт).Например так прошиваются пустые ATMEGA328P,которые потом можно использовать вместо установленной штатно микросхемы на Arduino UNO и устанавливать далее на самодельные платы.

Далее пример заливки скетча на Attiny85:

Не пугайтесь — при прошивке возможно могут появится некоторые ошибки,но они никак не влияют на сам процесс программирования:

 

Далее,если мы прошиваем сам скетч (например у нас не стандартный микроконтроллер), то сейчас просто выбираем в меню файл загрузить с помощью программатора:

 

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

 Для проверки работоспособности прошьем скетч Blink из примеров,укажем номер вывода тот,на котором будет подключен светодиод.Если указать порт номер 2 и оставить подключенный проводок SCK,то увидим мигание светодиода на плате arduino на 13 ноге(не актуально для плат arduino Mega -там выводы  SCK,MISO,MOSI находятся на других портах )

 

 

Прошивка микроконроллеров Atmega возможна и через дешевые программаторы USBasp без использования плат Arduino.Цена такого программатора всего 3 $ .Подробно тут.

Как загрузить скетч в Atmega8A-PU с помощью USBasp

Сегодня я расскажу Вам как загрузить скетч в Atmega8A-PU с помощью программатора USBasp S51&AVR и среды разработки Arduino IDE. Это способ загрузки очень удобен и не требует много сил, а в итоге у нас получится минимальное arduino на микроконтроллере Atmega8A-PU. Для работы нам потребуется только программатор USBasp S51&AVR и микроконтроллер Atmega8A-PU который после прошивки будет работать на частоте 8 MHz. Более подробно смотрите на видео.

Для начала рассмотрим сам контроллер Atmega8A-PU.

Основные характеристики микроконтроллера  Atmega8A-PU:

  • Серия процессора: ATMEGA8x
  • Тактовая частота максимальная: 16 МГц
  • Разрядность АЦП: 10 бит
  • Встроенный в чип АЦП: да
  • Шина данных: 8 битШирина: 7.5 мм
  • Размер ОЗУ: 1 Кб
  • Размер ПЗУ данных: 512 B
  • Размер памяти программ: 8 Кб
  • Тип памяти программ: Flash
  • Доступные аналоговые/цифровые каналы: 6
  • Интерфейс: SPI, TWI, USART
  • Количество линий ввода/вывода: 23
  • Количество таймеров: 3
  • Ядро: AVR
  • RoHS: да
  • Диапазон напряжения питания: 2.7 В … 5.5 В
  • Рабочий диапазон температрур: – 40 C … + 85 C
  • Тип корпуса: PDIP-28
  • Ширина: 7.5 мм
  • Длина: 34.8 мм
  • Высота: 4.57 мм

Где купить Atmega8A-PU

Заказать микроконтроллер Atmega8a-PU

Блок схема микроконтроллера Atmega8A-PU:

блок схема микроконтроллера Atmega8A

Arduino pinout (распиновка) микроконтроллера Atmega8A-PU:

Распиновка Atmega8A-PU

Если вы хотите узнать больше информации о контроллере Atmega8A-PU , скачайте даташит на Atmega8A

После небольшого знакомства с Atmega8A-PU я думаю можно приступить к настройке Arduino IDE и заливке скетча в наш контроллер.

Для начала установите Arduino IDE как указано в нашей статье Установка Arduino IDE на компьютер с ОС Windows и подключите программатор USBasp и установите драйвера как указано в статье Подключение программатора USBasp S51&AVR.

Теперь ищем в Windows папку установки Arduino IDE  под названием arduino, полный путь к папке у меня C:\Program Files\Arduino\hardware\arduino но у Вас он может отличатся.

В этой папке мы ищем текстовый файл boards.txt и открываем его с помощью любого текстового редактора ( я использую Notepad++)

Текстовый файл boards.txt

После этого копируем текст

############################################################## atmega8noxtalfast.name=ATmega8(A) (8MHz int. RC osc, short bootloader delay, 38400 baud rate) atmega8noxtalfast.upload.protocol=arduino atmega8noxtalfast.upload.maximum_size=7168 atmega8noxtalfast.upload.speed=38400 atmega8noxtalfast.bootloader.low_fuses=0xe4 atmega8noxtalfast.bootloader.high_fuses=0xc2 atmega8noxtalfast.bootloader.path=atmega8a atmega8noxtalfast.bootloader.file=ATmegaBOOT.hex atmega8noxtalfast.bootloader.unlock_bits=0x3F atmega8noxtalfast.bootloader.lock_bits=0x0F atmega8noxtalfast.build.mcu=atmega8 atmega8noxtalfast.build.f_cpu=8000000L atmega8noxtalfast.build.core=arduino:arduino atmega8noxtalfast.build.variant=arduino:standard ############################################################## atmega8optiboot.name=ATmega8(A) (16Mhz XTAL, optiboot) atmega8optiboot.upload.protocol=arduino atmega8optiboot.upload.maximum_size=7680 atmega8optiboot.upload.speed=115200 atmega8optiboot.bootloader.low_fuses=0xBF atmega8optiboot.bootloader.high_fuses=0xCC atmega8optiboot.bootloader.path=optiboot atmega8optiboot.bootloader.file=optiboot_atmega8.hex atmega8optiboot.bootloader.unlock_bits=0x3F atmega8optiboot.bootloader.lock_bits=0x0F atmega8optiboot.build.mcu=atmega8 atmega8optiboot.build.f_cpu=16000000L atmega8optiboot.build.core=arduino:arduino atmega8optiboot.build.variant=arduino:standard

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

##############################################################

 

atmega8noxtalfast.name=ATmega8(A) (8MHz int. RC osc, short bootloader delay, 38400 baud rate)

 

atmega8noxtalfast.upload.protocol=arduino

atmega8noxtalfast.upload.maximum_size=7168

atmega8noxtalfast.upload.speed=38400

 

atmega8noxtalfast.bootloader.low_fuses=0xe4

atmega8noxtalfast.bootloader.high_fuses=0xc2

atmega8noxtalfast.bootloader.path=atmega8a

atmega8noxtalfast.bootloader.file=ATmegaBOOT.hex

atmega8noxtalfast.bootloader.unlock_bits=0x3F

atmega8noxtalfast.bootloader.lock_bits=0x0F

 

atmega8noxtalfast.build.mcu=atmega8

atmega8noxtalfast.build.f_cpu=8000000L

atmega8noxtalfast.build.core=arduino:arduino

atmega8noxtalfast.build.variant=arduino:standard

 

 

##############################################################

atmega8optiboot.name=ATmega8(A) (16Mhz XTAL, optiboot)

 

atmega8optiboot.upload.protocol=arduino

atmega8optiboot.upload.maximum_size=7680

atmega8optiboot.upload.speed=115200

 

atmega8optiboot.bootloader.low_fuses=0xBF

atmega8optiboot.bootloader.high_fuses=0xCC

atmega8optiboot.bootloader.path=optiboot

atmega8optiboot.bootloader.file=optiboot_atmega8.hex

atmega8optiboot.bootloader.unlock_bits=0x3F

atmega8optiboot.bootloader.lock_bits=0x0F

 

atmega8optiboot.build.mcu=atmega8

atmega8optiboot.build.f_cpu=16000000L

atmega8optiboot.build.core=arduino:arduino

atmega8optiboot.build.variant=arduino:standard

вставляем в конец нашего текстового файла boards.txt, сохраняем документ и перезапускаем Arduino IDE. В окне с доступными платами у нас должны появится две новые записи ( на фото обведено красным )

Наша Arduino IDE теперь успешно настроена для заливки скетчей в микроконтроллеры Atmega8A.

  1. Первый режим программирует наш контроллер для работы от встроенного кварца, частота работы 8 MHz
  2. Второй режим программирует наш контроллер для работы от внешнего кварца, частота работы 16 MHz (для работы подключаем кварц на 16 MHz к ножкам XTAL1 и XTAL2)

Теперь переходим к подключению нашего микроконтроллера к программатору.

Для удобства я сделал небольшую плату для прошивки микроконтроллеров Atmega8A и Attiny13a,

где можно просто вставить нужный контроллер подключить кабель и прошивать скетчи

Все смотрится примерно так

А для Вас рекомендую подключать USBasp программатор к Atmega8A-PU по схеме на картинке

Подключение USBasp к atmega8A-PU

Схема подключения контактов

  • USBasp +5v  к контроллеру VCC (pin7)
  • USBasp – GND к контроллеру GND (pin8)
  • USBasp – RST к контроллеру RST (pin1)
  • USBasp – SCK к контроллеру SCK (pin19)
  • USBasp – MISO к контроллеру MISO (pin18)
  • USBasp – MOSI к контроллеру MOSI (pin17)

После подключения переходим снова к Arduino IDE в котором будем использовать режим программирования микроконтроллера  без внешнего кварца  ATmega8(A) (8MHz int. RC osc, short bootloader delay, 38400 baud rate)

потом устанавливаем Serial Port, у меня как на фото

и выбираем программатор

после чего открываем из примеров скетч Blink, наводим курсор мышки на стрелочку для заливки скетча в плату ( на фото белая стрелка ) и жмем на клавиатуре Shift – у нас должна появится надпись Upload Using Programmer и жмем по стрелке для заливки скетча в наш контроллер  Atmega 8A-Pu

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

После чего подключаем Анод (+) светодиода к 19 ноге, а минус к GND, подаем питание к нашему микроконтроллеру и светодиод должен моргать с интервалом в 1 секунду

Поздравляю теперь вы знаете как загрузить скетч в Atmega8A-PU

Прошивка бутлоадера Arduino в ATmega8, бюджетный Arduino

Смотрите так же прошивка ATtiny13 при помощи Arduino: http://razniepodelki.blogspot.com/2014/05/attiny13-arduino.html

В данном видео я постарался полностью раскрыть все нюансы по прошивке bootloader в ATmega8 своими руками, тем самым превратив этот микроконтроллер в очень бюджетный ардуино а саму ардуино в программатор для некоторых микроконтроллеров от фирмы Atmel. Прошивка осуществлялась при помощи Arduino Pro Mini, но можно и запрограммировать к примеру с помощью Arduino Uno или Arduino Mega и других ардуин…

Загрузка бутлоадера Arduino в ATmega8A почти ничем не отличается. Соединяем  Arduino и ATmega8 так как показано на картинке:

Зашиваем в ардуинку пример ArduinoISP превращая нашу ардуинку в программатор, потом изменяем тип программатора в Arduino IDE на Arduino as ISP и зашиваем загрузчик в ATmega8(или ATmega8A) нажимая кнопку «Записать загрузчик», Arduino IDE тем самым запишет бутлоадер(bootloader, он же загрузчик) в микроконтроллер и выставит все нужные фьюзы для работы на той или иной частоте. Например нам нужно чтобы микроконтроллер работал на частоте в 16 MHz с внешним источником тактовых сигналов(кварцевой резонатор) или с внутренним источником тактовых сигналов(RC цепочка) 8 MHz или же если нам нужно очень экономно потреблять ток, то даже 1 MHz, да да, ATmega8 с загрузчиком ардуино может работать на такой частоте в очень широком диапазоне напряжений если отключить или же настроить под себя Brown-out detection(детектор пониженного напряжения питания) в калькуляторе фьюзов. 
Ссылка на Конструктор Bootloader`а для Arduino:

http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik

Вся инструкция по добавлению новых профилей и новых микроконтроллеров внутри ссылки.

Карта пинов АТмега8:

Маленькая фотосессия:

Вот мой «программатор для ATmega8» собран на макетной плате:

А вот моделька моей клонированной китайцами Arduino Pro Mini: 

FLProg Arduino Atmega8 и немного Visual Studio

Здравствуйте. Немного поднаторев в программе FLProg и научившись составлять простые алгоритмы для прошивки Arduino разных версий типа uno, nano, mini решил попробовать прошить микроконтроллер ATmega8, но не с помощью USBasp, а используя в качестве программатора все ту же Arduino UNO, а саму прошивку написать, пользуясь визуальным языком программирования FLProg. Собрав с различных сайтов много полезной информации, приступил к реализации своего проекта. И вот как я это сделал и что в итоге получилось в картинках.
Первым делом с официального сайта загрузил и установил последнюю версию FLProg версия 5.3.0, в ней есть, библиотеки и сама среда для разработки прошивок Arduino IDE версия 1.8.9 интегрирована, так что ее отдельно устанавливать не пришлось.

1.После установки программы подключил Arduino UNO к USB порту, нашел папку (у меня здесь по умолчанию C:\Program Files (x86)\FLProg\ideV3) и запустил файл «arduino exe». Теперь все готово для создания программатора на базе UNO.

2.В меню «Инструменты — Плата» выбрал «UNO», программатор «AVRISP mkll» и «Порт COM5» возможно у вас номер порта будет другой.

3.Далее в меню «Файл-Примеры» выбрал скетч «ArduinoISP»

4. Затем перешел к пункту меню «Скетч» и нажал  «Загрузка» или что тоже самое стрелка в кружке. Все прошивка залита, программатор готов.

5. Далее перешел в меню «Файл – Настройки» здесь я нечего не менял только в поле «Дополнительные ссылки для Менеджера плат» вставил вот эту ссылку (https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_atmega8_series_index.json) и нажал  окей.

6. И снова выбрал «Инструменты-Плата» далее перешел в раздел «Менеджер плат» там нашел установочный пакет, он был в самом низу, как показано на картинке 7.

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

8. Опять перехожу в «Инструменты-Плата» и ищу ATmega8/A и выбираю ее.

9. Теперь снова к пункту «Инструменты — Программатор» и меняю его нажатием с «AVRISP mkll» на «Arduino as ISP» вот так.

10. Если все правильно, то должны появиться дополнительные настройки микроконтроллера, здесь я нечего не менял. Теперь временно отключаю питание UNO и подключаю к ней ATmega8 (мануал здесь) он заранее размещен на макетной плате и согласно верхнего рисунка соединяю к нему шесть проводов. Проверяю все ли правильно и снова подаю питание, в меню «Инструменты» см. картинку 10 жму «Записать загрузчик».

11. Наконец-то микроконтроллер ATmega8 готов к заливке. Пробую скетч с мигающим светодиодом, все работает, но надо что-то посерьёзнее. Подключаю LCD дисплей 1602 к шине I2C через плату конвертер. Нужно соединить два провода для питания VCC, GND (ножки 7 и 8) и два провода к пинам A4-SDA, A5-SCL микросхемы ATmega8 (ноги 27 и 28 соответственно). Пробую записать скетч из примеров, перехожу «Файл-Примеры» выбираю программку «LiquidCrystal_I2C – BlinkingCursor» 11 рисунок.

12. Далее в меню «Скетч» выбираю и жму «Загрузить через программатор», перемигивание светодиодов на UNO свидетельствует о том, что идет загрузка файла.

Через несколько секунд на дисплее появился текст с мигающим курсором и без см. фото ниже, и надпись в программе загрузка завершена, рисунок 13, если нет ничего, то необходимо настроить контрастность на плате I2C.

Все отлично работает. Закрываю программу Arduino IDE и отключаю устройство.

Дополнительно уже к этой схеме добавляю часы реального времени DS3132 также к шине I2C, еще соединяю три кнопки без фиксации для  управления таймером одним контактом к минусу другим к ножкам микроконтроллера D2, D3, D4 и пятивольтовое реле два провода к питанию, а третий управляющий провод к пину D7 мк ATmega8.

Снова включаю и теперь уже запускаю программу FLProg, создаю входы и выход выбираю в настройках часы и дисплей и пробую составить алгоритм работы простого таймера, который будет включать и отключать нагрузку через реле по истечению установленного времени,  ранее я уже делал что-то подобное, но для Arduino Nano в ней флэш памяти 32к а в ATmega8 не более 8к с учетом загрузчика.

Ну вот, кажется, вариант таймера готов. Триггеров, экранов, переменных, всего надо поменьше и вот ОН момент. Нажимаю Компилировать, пока все идет хорошо.

Появилось окно программы Arduino IDE, здесь выбираю «Скетч» и жму «Загрузить через программатор», еще несколько секунд ожидания и прошивка записана в микроконтроллер. Появилась надпись загрузка завершена и размеры файла, я так полагаю что залез впритык, рисунок 16.























Немного о работе таймера. Время задается в секундах в верхней строке,  например для 3-х минутного отчета необходимо набрать 180 секунд. Управление тремя кнопками — одна кнопка пуск, две другие добавить и убавить на одну секунду, при одновременном  нажатие последних происходит сброс счетчика. В нижней строчке идет прямой отчет в формате часов. Визуально в конце заметно раннее срабатывание реле на 1с., но при старте показания на дисплее тоже отстают, так что есть компенсация.
Работа таймера на видео.


И напоследок еще хочу немного сказать про программу «Visual Studio 2019». Очень удобная для отладки редактирования и уменьшения файла если включить Release.
Пробовал такой вариант. Составляю программку в FLProg компилирую и пытаюсь «Загрузить через программатор», а она не лезет, тогда из окна Arduino IDE копирую код скетча в буфер и вставляю его в окно Visual Studio включаю конфигурацию Release и нажимаю зеленую стрелочку «Пуск», есть файл стал легче, пошла загрузка.

Чтобы Visual Studio работала с Arduino и микроконтроллерами, необходимо установить в меню «Расширения» см. на рисунке дополнительный пакет, настроить связи, подключить библиотеки и теперь создаваемые прошивки можно записывать напрямую из VS в Ардуину в моем случае в Атмегу8.

P.S. Это моя шпаргалка, а то через месяц все забуду.

Вольтамперметр на Ардуино (ATmega8 ).

Надоело мне тестировать всевозможные стабилизаторы и блоки питания в слепую, подключая к ним различного рода резисторы и прочую чепуху и решил я собрать электронную нагрузку, а какая нагрузка без блока индикации? Правильно, фиговая! Поэтому был собран вольтамперметр, на базе имеющихся в наличие микроконтроллера ATmega8 и дисплея 16 символов на 2 строки.

В устройстве применено совсем не много деталей, пробегусь по основным узлам. Питание микроконтроллера и дисплея реализовано от отдельного источника состоящего из 2-х литиевых банок формата 18650 и линейного стабилизатора на пять вольт L7805, перед которым расположен делитель напряжения R1 — R2 необходимый для измерения напряжения на аккумуляторах. Подстроечный резистор R3 служит для настройки контраста дисплея. При включении устройство в течении 3-х секунд выводит на дисплее напряжение на аккумуляторах.

Напряжение подключаемого источника питания измеряется на делителе R4 — R5. Коэффициент этого делителя позволит микроконтроллеру измерять напряжение до 55 вольт, что более чем достаточно для моих целей.

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

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

Дисплей устанавливается на плату со стороны дорожек и крепиться к ней 18-ти миллиметровыми винтами М3. При разводки платы я допустил ошибку и промахнулся с одним из крепежный отверстий, если вы захотите собрать схему, то это легко исправить, например немного переместив входное отверстие для подключения плюса питания от аккумулятора, свободного места на плате осталось достаточно, но и на 3-х винтах дисплей держится отлично. При сборки следует обратить внимание, что на плате имеются перемычки. Проставки для винтов в моём случае распечатаны на 3д принтере и имеют высоту 11 миллиметров.

Перед заливкой прошивки в микроконтроллер, необходимо задать некоторые параметры (строки с 30 по 35):

  reference_voltage = 4.95; // Значение опорного напряжения в вольтах
  shunt_resistance = 1.50;  // Сопративление шунта (резистора R6) в омах
  float R1 = 14810.00;      // Сопративление резистора R1 делителя напряжения аккумулятора в омах
  float R2 = 12020.00;      // Сопративление резистора R2 делителя напряжения аккумулятора в омах
  float R4 = 4625.00;       // Сопративление резистора R4 делителя напряжения вольтметра в омах
  float R5 = 470.00;        // Сопративление резистора R5 делителя напряжения вольтметра в омах

В качестве опорного напряжения использовано напряжение питания микроконтроллера, а так как стабилизатор L7805 выдает на выходе не точные 5 вольт, то необходимо измерить выходное напряжение стабилизатора мультиметром и внести его значение в прошивку. Аналогично необходимо поступить с резисторами и вписать в прошивку их точные значения.

В виде бонуса! Подписчик YouTube канала Дмитрий Ягупов развел плату для дисплея с подсветкой и любезно предоставил Fuse-биты для работы ATMega8 от внутреннего генератора на 8МГц на случай если кто захочет прошивать не из под Arduino IDE. Скачать архив.

Arduino NG или более ранняя версия ATmega8 — последняя версия документации PlatformIO

Платформа

Atmel AVR: 8-битные микроконтроллеры Atmel AVR обеспечивают уникальное сочетание производительности, энергоэффективности и гибкости конструкции. Оптимизированные для ускорения вывода на рынок — и легкой адаптации к новым — они основаны на самой эффективной в отрасли архитектуре программирования на языке C и ассемблере

.

Микроконтроллер

ATMEGA8

Частота

16 МГц

Вспышка

7 КБ

RAM

1 КБ

Поставщик

Ардуино

Используйте atmegangatmega8 ID для опции платы в «platformio.ini »(файл конфигурации проекта):

 [env: atmegangatmega8]
платформа = atmelavr
доска = atmegangatmega8
 

Вы можете переопределить настройки Arduino NG по умолчанию или более старые настройки ATmega8 для каждой среды сборки, используя board _ *** option, где *** — путь к объекту JSON от манифест платы atmegangatmega8.json. Например, board_build.mcu , board_build.f_cpu и т. Д.

 [env: atmegangatmega8]
платформа = atmelavr
доска = atmegangatmega8

; изменить микроконтроллер
board_build.mcu = atmega8

; изменить частоту MCU
board_build.f_cpu = 16000000L
 

Отладка — решение «в один клик» для отладки с нулевой конфигурацией.

Предупреждение

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

Вы можете переключаться между инструментами отладки и зондами отладки, используя параметр debug_tool в «platformio.ini» (файл конфигурации проекта).

Arduino NG или более ранняя версия ATmega8 имеет встроенный датчик отладки, а ГОТОВА для отладки. Вам не нужно использовать / покупать внешний датчик отладки.

Совместимые инструменты

Бортовой

По умолчанию

симавр

Есть

Есть

Имя

Описание

Ардуино

Arduino Wiring-based Framework позволяет писать кроссплатформенное программное обеспечение для управления устройствами, подключенными к широкому спектру плат Arduino, для создания всех видов творческого кодирования, интерактивных объектов, пространств или физического опыта

Minimal Arduino с ATmega8 — блог todbot

Или: Хорошее применение для старых плат Arduino

Как и я, у вас может быть несколько старых плат Arduino или чипов ATmega8 (в платах), оставшихся с того момента, когда вы впервые играли с Arduino.Эти чипы все еще могут быть действительно полезны в качестве основы крошечной установки «Minimal Arduino».

Обычная плата Arduino содержит вспомогательные компоненты, упрощающие ее использование. Если вам нужна меньшая занимаемая площадь, вы можете получить одну из многих плат, похожих на Arduino. Но если вы хотите, чтобы действительно занимал мало места в , и повторно использовать свои старые детали, вы можете сделать плату Arduino, используя всего пять компонентов:
— микросхема ATmega8
— одиночный резистор 10 кОм
— одиночный конденсатор 0,1 мкФ
— крошечный макет
— некоторые соединительный провод


(Слева ИК-пульт дистанционного управления BlinkM.Справа светодиод RGB с ИК-пультом дистанционного управления)

Схема

Минимальная схема Arduino очень проста. Он полагается на внутренний генератор 8 МГц (например, Lilypad Arduino). И, как и Lilypad, он не поддерживает переходник от USB к последовательному порту. Вы должны предоставить это с кабелем FTDI USB-to-serial или со старой платой Arduino.


Файл минимального arduino.sch в формате Eagle

Получение загрузчика Arduino в ATmega8

Схема очень похожа на Lilypad Arduino, но используется другой чип.ATmega8 имеет меньше памяти и должен быть запрограммирован немного иначе, чем ATmega168 Lilypad.

Итак, модифицированный загрузчик Arduino необходимо запрограммировать в ATmega8. Загрузчик — это небольшая программа на микросхеме, которая прослушивает последовательный порт при включении питания и может перепрограммировать остальную часть микросхемы, если будет указано на это. Здесь используется вариант стандартного загрузчика «Arduino NG». Модификации:
— использует внутренний генератор 8 МГц (внешняя часть не требуется)
— последовательная скорость 38400 вместо 19200 для более быстрой загрузки

Файлы для минимального загрузчика Arduino ATmega8:
— atmega8_noxtal.zip
Распакуйте этот файл в каталог «arduino-0015 / hardware / bootloaders» вашей установки Arduino, чтобы создать каталог «atmega8_noxtal». ZIP-файл содержит:
— ATmegaBOOT.hex — фактический загрузчик для программы
— ATmegaBoot.c — исходный код загрузчика
— Makefile — Makefile для создания и программирования загрузчика

На самом деле программирование загрузчика для микросхемы ATmega8 может быть выполнено несколькими способами. Я предпочитаю использовать программатор AVRISPmkII и старую плату Arduino.Установите ATmega8 в Arduino, подключите AVRISP к 6-контактному разъему «ICSP», подключите оба к USB и запрограммируйте файл ATmegaBOOT.hex. Если вы знакомы с командной строкой, перейдите в каталог «atmega8_noxtal» и введите «make isp» для программирования. Если нет, вы можете установить программу Arduino, как только расскажете об этом новом виде платы Arduino.

Настройка Arduino для использования Minimal Arduino

Поскольку эта минимальная настройка Arduino не совсем похожа на любые другие предыдущие платы Arduino, нам нужно указать программному обеспечению Arduino, как с ней разговаривать.В каталоге Arduino есть файл с именем «arduino-0015 / hardware /boards.txt», который делает это. Откройте этот файл в текстовом редакторе и добавьте в него следующие строки:

########################################################################## ############

atmega8noxtal.name = ATmega8-noxtal @ 8 МГц

atmega8noxtal.upload.protocol = stk500
atmega8noxtal.upload.maximum_size = 7168
atmega8noxtal.upload.speed = 38400

atmega8noxtal.bootloader.low_fuses = 0xe4
atmega8noxtal.bootloader.high_fuses = 0xc4
atmega8noxtal.bootloader.path = atmega8_noxtal
atmega8noxtal.bootloader.file = ATmegaBOOT.hex
atmega8noxtal.bootloader.unlock_bits = 0x3F
atmega8noxtal.bootloader.lock_bits = 0x0F

atmega8noxtal.build.mcu = atmega8
atmega8noxtal.build.f_cpu = 8000000L
atmega8noxtal.build.core = arduino
 

При следующем запуске программного обеспечения Arduino у вас должна появиться новая запись «ATmega8-noxtal @ 8MHz» в меню «Boards». Это будет выглядеть примерно так:

С этого момента вы можете записать загрузчик на чип ATmega8, перейдя в меню «Записать загрузчик» и выбрав «w / AVRISP mkII».

Загрузка эскизов Arduino

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

Ссылки / ресурсы

В этой минимальной идее Arduino нет ничего нового. Многие другие поступали аналогично.Если бы я мог найти клон Arduino, который использовал бы внутренний генератор 8 МГц на ATmega8, я бы использовал его вместо этого. Некоторые из страниц, на которые я ссылался:

— Страница загрузчика на Arduino.cc
— Настройка Arduino на макетной плате от Tom Igoe в ITP
— Автономный Arduino на игровой площадке Arduino
— Boarduino от Adafruit
— Плата Really Bare Bones, совместимая с Arduino, от Modern Device
— Arduino Страница Core Hardware на Arduino Playground

Совместимая плата Arduino на базе Freeduino Atmega8 по цене 450 рупий за единицу | Плата для разработки электронных устройств Arduino

Совместимая с Arduino плата на базе Freeduino Atmega8 по цене 450 рупий за единицу | Электронная плата разработки Arduino | ID: 1704

48

Описание продукта

Это плата, совместимая с программным обеспечением Arduino, основанная на микроконтроллере ATMEGA8.

Отказ от ответственности: «Arduino» является товарным знаком команды Arduino. Все товарные знаки являются собственностью соответствующих владельцев.


Заинтересовал этот товар? Получите последнюю цену у продавца

Связаться с продавцом

Изображение продукта


О компании

Юридический статус фирмы Единоличное владение (физическое лицо)

Характер бизнеса Электронный магазин / Интернет-бизнес

Участник IndiaMART с октября 2017 г.

GST29AQSPM5541Q1ZR

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

Есть потребность?
Получите лучшую цену

1

Есть потребность?
Получите лучшую цену

Файл: Arduino avr atmega8-2.jpg — Wikimedia Commons

Этот файл содержит дополнительную информацию, такую ​​как метаданные Exif, которые могли быть добавлены цифровой камерой, сканером или программой, использованной для их создания или оцифровки. Если файл был изменен по сравнению с исходным состоянием, некоторые детали, такие как временная метка, могут не полностью отражать данные исходного файла. Отметка времени точна ровно настолько, насколько точны часы в камере, и она может быть совершенно неправильной.

11 2,97
Название изображения
Производитель камеры Samsung Techwin
Модель камеры [[: en: | ]]
Правообладатель АВТОРСКИЕ ПРАВА, 2006
Время воздействия 1/60 сек (0.016666666666667)
F-число f / 2.8
Рейтинг скорости ISO 50
Дата и время создания данных 14:26, 2 января 2006 г.
Фокусное расстояние объектива 5,8 мм
Ориентация Нормальное
Горизонтальное разрешение 96 точек на дюйм
Вертикальное разрешение 96 точек на дюйм
Используемое программное обеспечение 611161
Дата и время изменения файла 14:26, 2 января 2006 г.
Y и C позиционирование совмещено
Программа экспонирования Обычная программа
Exif версия 2.2
Дата и время оцифровки 14:26, 2 января 2006 г.
Режим сжатия изображения 3,6395572916667
Выдержка APEX 6
Апертура APEX
Смещение экспозиции APEX 0
Максимальная апертура фаски 2,97 APEX (f / 2,8)
Режим замера Шаблон
Источник света Неизвестно
Вспышка Вспышка не срабатывает, принудительное подавление вспышки
Цветовое пространство sRGB
Связанный аудиофайл Связанный звук
Индекс экспозиции 1
Метод обнаружения Однокристальный датчик цветовой области
Режим экспозиции Автоэкспозиция
Баланс белого Автоматический баланс белого
Коэффициент цифрового увеличения 1
Фокусное расстояние 35-мм пленки 35 мм
Тип захвата сцены Стандартный
Насыщенность Нормальный
Резкость Нормальный

Как программировать Atmega8 с Arduino

На рынке представлено множество гаджетов, включая Arduino.Он становится все более популярным для общего пользования. Эту программу можно использовать для создания множества различных проектов, и это упростит задачу. Человек узнает, как установить ATmega 8 и чип в код Arduino, чтобы все было компактнее.

Это позволит человеку продолжить работу своей электроники. Они смогут использовать в помощь генераторы и кристаллы 8 МГц, которые поставляются с ATmega 8. Человек может выполнить несколько шагов и загрузить некоторые элементы, и все будет готово для установки.

Элементы, необходимые для установки

  • Arduino UNO
  • ATMEGA8 IC
  • 2 конденсатора 22 пФ
  • 1 кварцевый генератор 16 МГц
  • Резистор 10 кОм

Есть некоторые вещи, которые нужно будет загрузить как часть этой установки. Человеку нужно будет хотеть загрузить определенные программы. Им понадобится загрузчик для ATmega 8, и им нужно будет загрузить Arduino IDE v1.01.

Эти ссылки можно найти в Интернете, и человек может загрузить их, чтобы убедиться, что его система обновлена ​​и имеет самую последнюю версию. Самая последняя версия позволит человеку иметь лучшую связь и лучшие шансы на успех. Эта программа также часто обновляется, и у человека должна быть последняя версия с последними функциями.

Работа с Arduino

Arduino можно преобразовать в программатор, который понадобится для этой установки, загрузив скетч ArduinoiSp.Это позволит человеку получить доступ к кодам. Когда программа завершит загрузку, они будут готовы к работе. Для завершения загрузки может потребоваться некоторое время, и в это время человек не должен беспокоиться.

После загрузки

После того, как человек загрузил Arduino v1.01, ему нужно будет извлечь папку. Они также могут скопировать весь текст и использовать код board.txt, чтобы убедиться, что их файл заполнен. Затем они введут эту информацию в извлеченную папку / Arduino-1.01 / оборудование / Arduino / плат.текст. Человеку нужно будет скопировать и вставить это, чтобы его можно было открыть. Затем человек откроет Arduino.exe, откуда он был извлечен. Затем им будет предоставлен выбор на плате Arduino.

Это будет Atmega8-noxtal @ 8MHz. Затем человек выберет Arduino в качестве программиста ISP. Затем он настроен, и он готов к работе. С этого момента человек может начать подключать соединения, и он сможет подключать устройства и соединять их вместе.

Подключение

После того, как загрузка была завершена и извлечена, пора начать соединение, и будет время для подключения. Человеку потребуется подключить микросхему ATmega18 к Arduino. Человек должен знать о конденсаторе 10 мкФ, который находится между сбросом и заземлением.

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

Горение

Человек перейдет к инструментам на экране и выберет загрузчик записи, чтобы продолжить настройку. Как только он будет выбран, человек будет использовать код atemga8-noxtal.zip, чтобы начать процесс извлечения.

Если Arduino работала, ее следует перезапустить в это время.Затем человек проверит программатор и порты, чтобы убедиться, что все настроено правильно. Затем они нажмут кнопку прожига, и лампочки на Arduino начнут светиться. Это признак того, что он работает.

После ожога

После того, как ATmega8 будет сожжен, человек сможет перейти к завершающим этапам этого проекта. Им нужно будет обновить конкретный эскиз, который они ищут, до микросхем. Плата должна быть настроена на Atmega8, и программист также должен быть отправлен на Arduino в качестве ISP.Надпись будет использована для выжигания и зарисовок.

Есть простой способ убедиться, что этот эскиз работает. Человек будет использовать Arduino как программист. Человеку нужно будет нажать ctrl + Shift + U. Это скажет программисту, что чипы проходят через Arduino.

Настройка подключения

Необходимо настроить некоторые соединения. Есть руководство, которое поможет человеку убедиться, что все, что у него есть, правильно подключено, чтобы все работало так, как задумано.Ch440 будет подключен прямо к Atmega8.

VCC будет использовать то же соединение VCC, и эти соединения помечены. GND также будет соединен с другим GND. Это также будет помечено. Tx соединится с RX / PDO. Rx на одном устройстве затем соединится с Tx / PD1 на другом. Эти соединения будут противоположными, и это поможет правильно настроить все соединения.

Подключите компоненты! 🙂

Это способ подключения Atmega 8 к Arduino.Это позволит человеку иметь дополнительные функции, а процесс прост. Все, что им нужно сделать, это загрузить необходимую информацию и затем подключить устройства. Это позволит человеку получить доступ к большему количеству функций, и он сможет делать больше как с Atmega8, так и с Arduino.

SSD на базе Arduino использует чипы EEPROM ATmega8 и 8

«Теперь вместо использования SD-карты для хранения файлов конфигурации я могу просто отправлять команды через интерфейс UART на SSD с внешней платы и сохранять / извлекать данные без дополнительных накладных расходов на код.”

SD-карты

используются для хранения информации при регистрации данных или извлечении файлов, но с микроконтроллерами, которые имеют более короткую оперативную память или небольшое количество контактов GPIO, хранение больших объемов данных с помощью SD-карты при сохранении небольшой программы может быть действительно сложной задачей. Существует проблема дополнительных накладных расходов на программное обеспечение и медленного времени доступа.

Пытаясь найти подходящее решение этой общей проблемы, «Have11» приступил к своему новому проекту: разработке твердотельного накопителя на базе Arduino, который использует ATmega8 в качестве контроллера с несколькими микросхемами EEPROM .

Обычно SSD состоит из контроллера, набора микросхем флэш-памяти и DRAM, который действует как кэш. Встроенный контроллер принимает команду через интерфейс, декодирует ее и настраивает для чтения или записи данных с помощью флэш-памяти, подключенной к контроллеру.

Во-первых, ему нужно было решить, какую микросхему использовать, и EEPROM, казалось, идеально подходил для этой работы. Чипы, размером около 256 байт каждый, относительно дешевы и просты в взаимодействии. Они работают при напряжении 5 В и исключают любую форму преобразования логического уровня между EEPROM и контроллером.

«Как и большинство проектов, все началось с простого наброска на бумаге. Я приблизительно расположил компоненты, например, сгруппировал восемь чипов EEPROM вместе и разместил Ch440G рядом с ATmega8. Затем я перешел к созданию схем ».

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

Между тем он добавил, что до того, как команды можно будет отправлять через USB или UART, необходимо запрограммировать плату; либо вы записываете загрузчик Arduino в ATmega8, либо используете заголовок ICSP для прошивки чипа через интерфейс SPI, если вы хотите сэкономить место.

«Поскольку я хотел, чтобы« SSD »также обменивался данными через USB, было необходимо добавить преобразователь Ch440G USB t UART. Чтобы проверить это, я подключил конвертер FDTI USB к UART к своему ПК и SSD.Затем я написал простой скрипт на Python, который может отправлять различные команды и распечатывать соответствующие данные ».

Теперь у него есть SSD, который удобно работает как SD-карта без дополнительных затрат на программное обеспечение.

Более подробную информацию о проекте, включая пошаговое руководство по созданию проекта, можно найти здесь

Загрузите микроконтроллер ATmega и создайте свой собственный Arduino — 2

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

Обычно в модуле доступно одно соединение интерфейса USB и шесть выходных соединений (DTR, RXI, TXO, 5V, CTS, GND). Вам нужно всего 5 подключений для нашего Arduino, поэтому просто оставьте терминал CTS, а остальные подключите к Arduino, как показано в этой таблице.

Если вы хотите создать свой собственный модуль преобразователя USB в последовательный порт, обратитесь к этой испытанной принципиальной схеме модуля преобразователя USB в последовательный порт (FTDI). Обязательное условие — хорошие навыки пайки SMD!

Понял? Теперь у вас есть небольшая плата Arduino, использующая в качестве мозга Atmega328P (с предварительно загруженным загрузчиком Arduino). Кроме того, вы можете загрузить свой скетч из Arduino IDE на плату Arduino с помощью модуля FTDI.

Поскольку у вас есть программатор AVR USBasp, можно ли загрузить загрузчик и / или программный код в Arduino с помощью того же USB-программатора asp вместо проверенных методов, описанных ранее? Ответ ДА! AVR USBasp — это внутрисхемный программатор USB, который можно использовать для программирования большинства контроллеров Atmel AVR.Он просто состоит из ATMega8 и пары пассивных компонентов, таких как резисторы, конденсаторы, светодиоды и т. Д. Программатор использует драйвер USB только для прошивки, и специальный USB-контроллер не требуется.

Запись загрузчика Arduino с AVR USBasp

Здесь я собираюсь показать вам простейший способ записи прошивки загрузчика Arduino в микросхему микроконтроллера ATMEGA328P на плате Arduino. Прежде всего, следуйте индикатору проводки, просто выберите свой программатор USBasp и подключите его к плате Arduino / микросхеме ATmega328P.

Обратите внимание, что выходной разъем / соединительный кабель программатора USBasp несовместим с разъемом ICSP на плате Arduino, поэтому вам нужно найти способ подключить интерфейс USBasp к плате Arduino / микросхеме ATmega. После подключения программатора AVR-USBasp с вашего компьютера к плате Arduino, откройте Arduino IDE и нажмите на меню «Инструменты», а в подменю «Программист» выберите «USBasp». Затем нажмите «Записать загрузчик», чтобы начать запись загрузчика в меню «Инструменты».После завершения Arduino IDE отобразит «Готово записать загрузчик». Это все!

Нет USBasp в меню инструментов?

Не паникуйте… по умолчанию вы не можете найти такой вариант в Arduino IDE. Есть простой трюк, который вы должны использовать, если хотите работать с вашим программатором AVR USBasp. Используя этот трюк, вы можете использовать свой программатор AVR USBasp для программирования микроконтроллеров AVR без предварительно загруженных загрузчиков! Шаги приведены ниже:

  • Перейдите на диск, на который вы установили программное обеспечение Arduino (например, C: \ Arduino IDE -0022)
  • Теперь откройте папку с программой, перейдите в настройки.txt (например: C: \ Arduino IDE-0022 \ Arduino-0022 \ lib \ preferences), найдите предложение upload.using = bootloader и измените его на upload.using = usbasp
  • После этого изменения сохраните его и закройте. Затем откройте папку оборудования (например: C: \ Arduino IDE-0022 \ Arduino-0022 \ hardware \ arduino \ programmers), откройте файл programmers.txt и добавьте еще две строки под последней строкой в ​​текстовом файле (см. окно блокнота):
    USBasp.name = USBasp
    USBasp.protocol = usbasp

Наконец, сохраните и закройте текстовый файл, затем откройте IDE arduino как обычно, напишите в ней свою программу и загрузите скетч (код) в микроконтроллер AVR с помощью программатора AVR USBasp.

Arduino упрощает проекты в области электроники, и поэтому Arduino намеренно включен в эту серию руководств по AVR. Далее мы собираемся начать простой роботизированный проект с использованием микроконтроллера AVR. Перед этим интересным ходом я хотел бы познакомить вас с Arduino Builder!

Строитель Arduino

Arduino Builder — это полностью автономная утилита для просмотра, компиляции и загрузки файла эскиза Arduino и скомпилированного файла ELF или HEX (обычно загрузчика) на плату Arduino с интерфейсом последовательного программирования Arduino, USBasp или Arduino ISP без необходимости в Arduino IDE.Это легко сделать, выполнив не более 3 шагов. Когда требуется компиляция (для загрузки файла эскиза), утилита сканирует эскиз на предмет наличия библиотек, на которые имеются ссылки, и автоматически создает необходимые библиотеки. Arduino Builder поставляется в версии с графическим интерфейсом пользователя (GUI) для обычных конечных пользователей.

Почему вы предпочитаете эту утилиту, ведь Arduino IDE может все?

Иногда нам нужно только скомпилировать заранее написанный скетч и загрузить его в Arduino. Обычно мы делаем это с помощью Arduino IDE, но это не лучший опыт.Иногда мы просто хотим записать загрузчик в HEX-файл для платы. Для этого есть много графических интерфейсов AVRDUDE. Но многие из них устарели и не подходят для Леонардо (на базе ATMega32U4), не говоря уже о том, что они просто графические интерфейсы для AVRDUDE, которые не могут компилироваться.

Вы можете загрузить последнюю (Windows) версию Arduino Builder отсюда: http://sourceforge.

alexxlab

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

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