Как запрограммировать AVR (Arduino) с другим Arduino: 7 шагов
Как запрограммировать AVR (Arduino) с другим Arduino: 7 шагов

Видео: Как запрограммировать AVR (Arduino) с другим Arduino: 7 шагов

Видео: Как запрограммировать AVR (Arduino) с другим Arduino: 7 шагов
Видео: Цифровые выходы #2 | Arduino - учимся программировать 2025, Январь
Anonim

Эти инструкции полезны, если:

* у вас есть arduino с atmega168, и вы купили atmega328 в местном магазине электроники. У него нет загрузчика arduino *, вы хотите создать проект, который не использует arduino - просто обычный чип AVR (например, USBTinyISP) - у вас есть чистый attiny2313 / attiny48 и т. Д., На который вы хотите записать прошивку. Обычно у вас должен быть ISP (системный программист), такой как USBTinyISP, чтобы запрограммировать ваш новый чип. Имея ардуино, вы можете научить его быть программистом благодаря отличной работе, проделанной Рэндаллом Боном. Он создал Mega-ISP - скетч Arduino, который работает как программист.

Шаг 1. Что вам нужно?

* рабочий Arduino (или клон - я использую BBB - BareBonesBoard и RBBB - RealBareBonesBoard от ModernDevices) * чип, который вы хотите запрограммировать (протестирован с atmega8, atmega168, atmega368, attiny2313, attiny13) * макет или плата с разъемом ISP * 3 светодиода + 3 резистора * макетные провода

Шаг 2. Создание программатора Mega-isp на макетной плате

Есть два способа подключить ваш Arduino для программирования чипа.

Вы можете подключить свой avr-чип к макетной плате и подключить 5 В и GND к соответствующим контактам (проверьте техническое описание!) + Подтягивающий резистор для сброса и подключения контактов от вашего Arduino к чипу. Это строки на Arduino и их функция 13 - SCK 12 - MISO 11 - MOSI 10 - RST (Reset) Или вы можете сделать 2x3-контактный заголовок ISP, который вы можете подключить к плате, которая предоставляет один (другая плата Arduino). Распиновка заголовка ISP находится на третьем изображении. Есть 3 светодиода для индикации статуса программатора. контакт 9 - синий светодиод - это сердцебиение программиста. контакт 8 - красный светодиод - указывает на ошибку контакт 7 - зеленый светодиод - указывает на то, что происходит программирование (я был ленив, поэтому я не сопоставил цвета в моей настройке) Вот рисунки, сделанные во Fritzing Вы также можете сделать Щит МЕГА-исп. Ярослав Осадчий оформил щит в виде орла. Вы можете получить файлы орла на его сайте:

Шаг 3. Загрузка эскиза

Загрузите скетч из кода google mega-isp. (Avrisp.03.zip на момент написания). Распакуйте его, запустите arduino ide и откройте avrisp.pde. Загрузите его на свою плату Arduino. Светодиод сердцебиения должен начать биться.

Шаг 4: Использование с Avrdude

Для использования с avrdude (и со всеми графическими интерфейсами, которые его используют) вы должны выбрать программатор avrisp. самый безопасный битрейт - 19200.

Чтобы проверить свой новый atmega168 из командной строки, попробуйте: $ avrdude -p m168 -P / dev / ttyUSB0 -c avrisp -b 19200 / dev / USB0 - это порт, через который arduino подключен к моему Linux-серверу (ваш может быть com5). Это можно проверить в IDE arduino в Инструменты -> Последовательный порт. Вы должны получить: [kabturek @ hal-9000 ~] # avrdude -p m168 -P / dev / ttyUSB0 -c avrisp -b 19200 avrdude: устройство AVR инициализировано и готово принимать инструкции. Чтение | #################################################################################################### | 100% 0,13 с avrdude: Подпись устройства = 0x1e9406 avrdude: safemode: Предохранители в порядке avrdude done. Спасибо. Значит, все в порядке. Если вы получите ошибки - проверьте последний шаг.

Шаг 5. Запись прошивки USBtinyISP на Attiny2313

USBTinyISP - отличный программатор от LadyAda, очень дешевый - 22 доллара. У меня был запасной attiny2313 и некоторые детали, поэтому я решил сделать его сам. Если у вас нет опыта изготовления печатных плат, советую покупать комплект, потому что он более качественный, чем вы можете сделать сами:). По крайней мере, купите печатную плату, если хотите ее построить. Вы можете получить его от Adafruit. Подключение ATtiny2313 На последнем рисунке вы можете увидеть attiny2313 с контактами, используемыми для ISP, отмеченными красным. Изображение взято из учебника LadyAda avr. Запись прошивки: Распакуйте прошивку USBTinyISP. Перейдите в каталог spi и запустите $ avrdude -p pt2313 -P / dev / ttyUSB0 -c avrisp -b 19200, чтобы проверить, все ли в порядке с чипом. Теперь установите предохранители: $ avrdude -P / dev / ttyUSB0 -c avrisp -b 19200 -pt2313 -U hfuse: w: 0xdf: m -U lfuse: w: 0xef: m Теперь вы должны прикрепить к микросхеме внешний генератор 12 МГц.. И записать прошивку: $ avrdude -B 1 -pt2313 -U flash: w: main.hex -P / dev / ttyUSB0 -c avrisp -b 19200 Вуаля. На вашем attiny2313 установлена прошивка USBTinyISP.

Шаг 6: запись загрузчика Arduino

Я немного схитрил, потому что использовал RBBB для упрощения соединений. Схема представлена на картинке №2. Если вы используете 2 Arduino, используйте рисунок 3 и подключите вывод ISP к заголовку ICSP 2x3 на втором (подчиненном) Arduino. Подключите USB-питание только к первой плате. Способ с графическим интерфейсом Это немного сложно, потому что вы не можете просто использовать Tools-> Burn Bootloader -> w / AVR ISP, потому что скорость по умолчанию слишком велика для мега-isp. Найдите avrdude.conf, который поставляется с IDE arduino (в arduino / hardware / tools / avrdude.conf), и измените граничную скорость для программатора avrisp с 115200 на 19200 (около строки 312). Найдите и измените avrdude.conf programmer id = "avrisp"; desc = "Интернет-провайдер Atmel AVR"; скорость передачи = 115200; # по умолчанию 115200 type = stk500;; кому: id программиста = "avrisp"; desc = "Интернет-провайдер Atmel AVR"; скорость передачи = 19200; # по умолчанию 115200 type = stk500;; Теперь вы можете использовать Инструменты -> Записать загрузчик -> с AVR ISP (после выбора соответствующей платы в меню Инструменты) Командная строка. Вы также можете использовать командную строку: Отредактируйте arduino / hardware / bootloaders / atmega / Makefile и измените ISPTOOL / PORT / SPEED to: # введите параметры для инструмента avrdude isp ISPTOOL = avrisp ISPPORT = / dev / ttyUSB0 ISPSPEED = -b 19200 нет, вы можете написать $ make diecimila_isp для записи предохранителей и загрузчика. Тест Теперь подключите новый arduino к usb и сжечь моргание!

Шаг 7. Устранение неполадок

Ошибки avrdude: avrdude: ser_open (): не удается открыть устройство "/ dev / ttyUSB0": нет такого файла или каталога. У вас указан неправильный порт (-P) или ваш arduino не подключен. проверьте соединение avrdude: Подпись устройства = 0x000000 avrdude: Ура! Неверная подпись устройства. Дважды проверьте соединения и попробуйте еще раз, или используйте -F для отмены этой проверки. Это своего рода общая ошибка. Ваш чип не распознается. Проверьте соединение на плате (GND / 5V подключен к контактам?) Вы получите эту ошибку, когда ваш чип настроен на использование внешнего генератора и не работает (его нет или он не генерирует должным образом - конденсаторы 22pf отсутствует ?)