Как «перепрошить» китайский программатор USBasp
«Перепрошить» китайский программатор USBasp может даже новичок. Для этого достаточно:
1. Перевести USBasp в режим, разрешающий программирование встроенного микроконтроллера! Обычно это делается установкой соответствующей перемычки или замыканием определенных контактов на плате!
Например, у программатора на фото — это контакты, отмеченные линией!
2. Подключить USBasp к любому программатору, который поддерживает программирование AVR контроллеров!
Выходы контактного разъема USBasp должны быть соединены в точности так же, как и при «прошивке» обычного микроконтроллера! То есть:
GROUND (GND) — общий провод GND <—>GND
VCC (питание) должно быть не больше 5V! VCC <—> VCC
SCK (serial clock) — последовательная синхронизация! Импульсы генерирует MASTER (ведущее устройство) SCK <—> SCK
MOSI (MASTER OUT SLAVE IN) – это выход сигнала с MASTER (ведущего) устройства на SLAVE (ведомое)
MISO (MASTER IN SLAVE OUT) – вход для ведущего устройства, на который сигнал приходит с выхода ведомого!
RESET (сброс) – обратите внимание именно на этот контакт поступает сигнал для начала программирования! По умолчанию вывод RESET встроенного в USBasp контроллера не подключен – подключается он замыканием соответствующих выводов (установкой перемычки) см. фото!
Внимание, если ваш USBasp работает нормально, не спешите его сразу «перепрошивать» – сделайте вначале резервную копию «прошивки»!
Перед «прошивкой» желательно полностью стереть чип, не изменяя FUSE Bits!
Фьюз биты AVR микроконтроллера – это специальные ячейки памяти для конфигурации его работы. Помните, что неправильная установка даже одного фьюз бита, может привести к тому, что контроллер начнет работать совсем не так, как ожидалось, и возможно даже перестанет реагировать на команды с обычного ISP программатора!
— неправильно подсоединены выводы – попробуйте поменять местами MOSI и MISO, предварительно убедившись, что всё соединения имеют надежный контакт!
— неправильно выбран тип микроконтроллера – выберите его вручную!
После загрузки в USBasp новой прошивки обязательно разомкните выводы (снимите перемычку), чтобы программатор смог работать в обычном режиме!
Стоит также заметить, что для «перепрошивки» USBasp не обязательно использовать программатор – его можно заменить даже дешевой платой Arduino, поддерживающей USB! Например, китайским аналогом Arduino Nano! Разумеется, предварительно в плату Arduino необходимо загрузить скетч (программу) «Arduino ISP».
Creality Ender-3 Нюансы прошивки программатором USBASP.
Причина подтолкнувшая к написанию данного поста — те сложности, которые возникли у меня, новичка, после перегрева экструдера, с последующим наплавлением на него огромного кома пластика и решения перепрошить принтер.Приключения с очисткой хот и кул-енда паяльником и горелкой опустим и перейдём к заявленной теме.
Видео с алгоритмом можно посмотреть на буржуйском видео. Но вы не сможете выполнить инструкцию до конца потому, что указанные в ссылках драйвера для USBASP глючат.
Или уважаемого Сергея Ирбиса в приложенном видео к статье. Расписано хорошо, но используется программатор Arundino UNO. Поэтому процесс его программирования можно пропустить.
Кому интересно изучить возможности программатора, читаем статью ‘ПРОГРАММАТОР AVR :: AVRDUDE :: USB-программатор USBasp’.
И так! Разбор полётов.
1. Качаем драйвер USBASP v3.0.7:Повторюсь: С драйверами libusb_0.1.12.1 и libusb_1.2.4.0, указанными на буржуйском сайте программатор работать не будет. Они встанут, но работать не будут.
После установки драйвера v3.0.7, COM порт не появится в настройках. Управление идёт напрямую
2. Если вы взяли переходник с 10pin на 6pin, то придётся немного потрудиться. 6pin разъём слишком широкий, поэтому нужно немного его сточить со стороны контактов GND/RST(RESET) и оставить 0,75-1мм. Иначе он не встанет на контакты.
3. В Th4D выбираем программатор ‘USBasp’ и смело заливаем загрузчик в принтер. После успешной заливки, не забываем отключить программатор и подключить к ПК принтер напрямую.
4. Редакция настроек прошивки в Th4D (Configuration.h)
Я у себя раскомментил (убрал в прошивке ‘//‘):
— //#define ENDER3
— //#define DISABLE_BOOT
— //#define USER_PRINTER_NAME ‘CHANGE ME’
Изменил имя принтера: ‘CHANGE ME’ на ‘
Включил русский язык на принтере, благодаря правке строки: ‘#define LCD_LANGUAGE en’
‘en’ на ‘ru’
После прошивки, внизу экрана висит надпись: ‘Th4D U1.R2.7 готов.‘ Исправил строку ‘#define UNIFIED_VERSION ‘Th4D U1.R2.7‘ ‘, заменил на ‘Ender-3‘. Теперь внизу экрана гордая надпись: ‘Ender-3 готов.’
5. После успешной установки загрузчика, меняем в Th4D как в видео программатор ‘USBASP’ на ‘AVRISP mkII‘ и прошиваем принтер.
Надеюсь, данные нюансы сэкономят и ваши нервы, и алкоголь.
Прошивка flash-памяти 25xxx через программатор USBasp
Микросхемы флеш-памяти eeprom серии 25xxx широко применяются в микроэлектронике. В частности, в современных телевизорах и материнских платах в 25xxx хранится прошивка биоса. Перепрошивка 25xxx осуществляется по интерфейсу SPI, в чем и заключается отличие этих микросхем от флеш-памяти семейства 24xxx, которые шьются по i2c(квадратная шина).
Соответственно, для чтения/стирания/записи 25xxx нужен SPI-программатор. Одним из самых дешевых вариантов программаторов для этой цели является USBasp, который стоит смешные деньги- с доставкой всего около 2$ на ебее. В свое время я купил себе такой для программирования микроконтроллеров. Теперь мне понадобилось прошить не микроконтроллер, а SPI-флеш и решено было им воспользоваться.
Оказалось, что сам по себе USBasp с оригинальной прошивкой такую память не шьет, но отечественный программист с ником Tifa (низкий поклон ему и долгих лет жизни) модернизировал прошивку USBasp специально для обеспечения возможности работы с флеш-памятью. Постоянная ветка обсуждения альтернативной прошивки USBasp от Tifa, связь с автором и ссылки на файлы тут: http://forum.easyelectronics.ru/viewtopic.php?f=17&t=10947
Забегая вперед скажу, что прошивка от Tifa работает, микросхемы 25xxx шьются. Кстати, кроме 25xxx, модифицированный программатор рассчитан на работу с 24xxx и Microwire.
1. Перепрошивка USBasp
Сначала нужно замкнуть контакты J2:
Лично я не просто замкнул, а впаял в контакты переключатель:
При замкнутых контактах J2 (это у меня переключатель в положении вправо) USBasp переходит в режим готовности к перепрошивке.
Сам себя USBap перепрошить не может, поэтому нужен еще один программатор. USBasp как бы оказывается в положении хирурга, который не может сам себе вырезать аппендикс и просит друга помочь. Для перепрошивки USBasp я использовал самодельный программатор AVR910, но для одного раза можно по-быстрому за пару минут спаять программатор «5 проводков», который состоит всего-лишь из одного разъема LPT и 5 резисторов.
Подключаем программатор к USBasp:
Теперь идем на форум альтернативной прошивки от Tifa, в самом верхнем посте находим и качаем архив с последней прошивкой и ПО.
Находим там файл mega8.hex, это и есть альтернативная прошивка для USBasp.
Запускаем CodeVisionAvr (я использую версию 2.0.5), выставляем настройки программатора: Settings-> Programmer.
Устанавливаем настройки записи: Tools->Chip programmer. Выбираем чип Atmega8L, именно такой стоит на USBasp. Фьюзы не выставляем- те, что надо, уже прошиты в чипе. Остальные настройки оставляем по умолчанию.
Стираем старую программу USBasp: Program-> Erase chip.
Открываем файл прошивки mega8.hex: File-> Load flash.
Перепрошиваем USBasp: Program-> Flash.
Если прошла запись и не выдало сообщение об ошибке, значит альтернативная прошивка благополучно прошита в USBasp. Теперь USBasp может не только шить AVR-микроконтроллеры, как раньше, но еще и работать с флеш-памятью. Размыкаем контакты J2, что бы USBasp снова перешел в режим программатора.
Теперь проверим, видит ли Windows 7 x86 этот программатор. Вставляем USBasp в USB и… система пишет «USBasp не удалось найти драйвер». Понятно, нужно установить драйвер. Но драйверов в скачанном на форуме архиве нет, их нужно скачать на родном сайте USBasp тут, оригинальные драйвера подходят и для модифицированного программатора. Скачали, установили, Win7 увидела программатор, все ок. Впрочем, я программирую микроэлектронику на ноутбуке с WinXP, она тоже после установки драйверов видит программатор.
2. Площадка для подключения USBasp к микросхеме 25xxx DIP
Теперь нужно подготовить площадку для программирования 25xxx. Я это сделал на макетной плате по такой схеме:
3. Прошивка микросхем 25xxx через USBasp
Для прошивки 25xxx через модифицированный USBasp используется программа AsProgrammer, которая тоже есть в архиве.
Для примера, поработаем с микросхемой Winbond 25×40. Запускаем AsProgrammer, ставим режим работы SPI и выбираем тип микросхемы: Микросхема-> SPI-> Winbond->…
… и видим, что W25X40 в списке нет. Что же, тогда заполним параметры микросхемы вручную. Находим мануал на Winbond 25X40 и там на странице 4 видим такие параметры:
Эти параметры вносим сюда:
Подключаем USBasp к компьютеру и микросхеме Winbond 25×40:
С помощью кнопок «прочитать», «записать», «стереть», проверяем работу программатора:
Все ок.
Только нужно учесть, что перед тем, как что-то записать в микросхему, сначала нужно выставить: Настройки-> Проверка записи, что бы после записи прошивки в микросхему была выполнена проверка на соответствие того, что писали тому, что в итоге записали. Это немаловажная вещь, потому что если прошивку делать не на очищенный чип, в него запишется чёрт-те что. Поэтому сначала нужно стереть микросхему, а затем только проводить ее запись.
Благодаря прошивке от Tifa дешевый китайский программатор USBasp теперь умеет работать с микросхемами flash-памяти eeprom 25xxx. Теоретически еще может работать c 24xxx и Microwire, но я проверил только работу с 25xxx.
UPD1:
Оказывается, такую же прошивку можно записать и в программатор AVR910. Тогда он тоже будет работать с flash-памятью 25xxx: Программатор ISP памяти из AVR910.
Прошивка flash-памяти 25xxx через программатор USBasp
Микросхемы флеш-памяти eeprom серии 25xxx широко применяются в микроэлектронике. В частности, в современных телевизорах и материнских платах в 25xxx хранится прошивка биоса. Перепрошивка 25xxx осуществляется по интерфейсу SPI, в чем и заключается отличие этих микросхем от флеш-памяти семейства 24xxx, которые шьются по i2c(квадратная шина).
Соответственно, для чтения/стирания/записи 25xxx нужен SPI-программатор. Одним из самых дешевых вариантов программаторов для этой цели является USBasp, который стоит смешные деньги- с доставкой всего около 2$ на ебее. В свое время я купил себе такой для программирования микроконтроллеров. Теперь мне понадобилось прошить не микроконтроллер, а SPI-флеш и решено было им воспользоваться.
Оказалось, что сам по себе USBasp с оригинальной прошивкой такую память не шьет, но отечественный программист с ником Tifa (низкий поклон ему и долгих лет жизни) модернизировал прошивку USBasp специально для обеспечения возможности работы с флеш-памятью. Постоянная ветка обсуждения альтернативной прошивки USBasp от Tifa, связь с автором и ссылки на файлы тут: http://forum.easyelectronics.ru/viewtopic.php?f=17&t=10947
Забегая вперед скажу, что прошивка от Tifa работает, микросхемы 25xxx шьются. Кстати, кроме 25xxx, модифицированный программатор рассчитан на работу с 24xxx и Microwire.
1. Перепрошивка USBasp
Сначала нужно замкнуть контакты J2:
Лично я не просто замкнул, а впаял в контакты переключатель:
При замкнутых контактах J2 (это у меня переключатель в положении вправо) USBasp переходит в режим готовности к перепрошивке.
Сам себя USBap перепрошить не может, поэтому нужен еще один программатор. USBasp как бы оказывается в положении хирурга, который не может сам себе вырезать аппендикс и просит друга помочь. Для перепрошивки USBasp я использовал самодельный программатор AVR910, но для одного раза можно по-быстрому за пару минут спаять программатор «5 проводков», который состоит всего-лишь из одного разъема LPT и 5 резисторов.
Подключаем программатор к USBasp:
Теперь идем на форум альтернативной прошивки от Tifa, в самом верхнем посте находим и качаем архив с последней прошивкой и ПО.
Находим там файл mega8.hex, это и есть альтернативная прошивка для USBasp.
Запускаем CodeVisionAvr (я использую версию 2.0.5), выставляем настройки программатора: Settings-> Programmer.
Устанавливаем настройки записи: Tools->Chip programmer. Выбираем чип Atmega8L, именно такой стоит на USBasp. Фьюзы не выставляем- те, что надо, уже прошиты в чипе. Остальные настройки оставляем по умолчанию.
Стираем старую программу USBasp: Program-> Erase chip.
Открываем файл прошивки mega8.hex: File-> Load flash.
Перепрошиваем USBasp: Program-> Flash.
Если прошла запись и не выдало сообщение об ошибке, значит альтернативная прошивка благополучно прошита в USBasp. Теперь USBasp может не только шить AVR-микроконтроллеры, как раньше, но еще и работать с флеш-памятью. Размыкаем контакты J2, что бы USBasp снова перешел в режим программатора.
Теперь проверим, видит ли Windows 7 x86 этот программатор. Вставляем USBasp в USB и… система пишет «USBasp не удалось найти драйвер». Понятно, нужно установить драйвер. Но драйверов в скачанном на форуме архиве нет, их нужно скачать на родном сайте USBasp тут, оригинальные драйвера подходят и для модифицированного программатора. Скачали, установили, Win7 увидела программатор, все ок. Впрочем, я программирую микроэлектронику на ноутбуке с WinXP, она тоже после установки драйверов видит программатор.
2. Площадка для подключения USBasp к микросхеме 25xxx DIP
Теперь нужно подготовить площадку для программирования 25xxx. Я это сделал на макетной плате по такой схеме:
3. Прошивка микросхем 25xxx через USBasp
Для прошивки 25xxx через модифицированный USBasp используется программа AsProgrammer, которая тоже есть в архиве.
Для примера, поработаем с микросхемой Winbond 25×40. Запускаем AsProgrammer, ставим режим работы SPI и выбираем тип микросхемы: Микросхема-> SPI-> Winbond->…
… и видим, что W25X40 в списке нет. Что же, тогда заполним параметры микросхемы вручную. Находим мануал на Winbond 25X40 и там на странице 4 видим такие параметры:
Эти параметры вносим сюда:
Подключаем USBasp к компьютеру и микросхеме Winbond 25×40:
С помощью кнопок «прочитать», «записать», «стереть», проверяем работу программатора:
Все ок.
Только нужно учесть, что перед тем, как что-то записать в микросхему, сначала нужно выставить: Настройки-> Проверка записи, что бы после записи прошивки в микросхему была выполнена проверка на соответствие того, что писали тому, что в итоге записали. Это немаловажная вещь, потому что если прошивку делать не на очищенный чип, в него запишется чёрт-те что. Поэтому сначала нужно стереть микросхему, а затем только проводить ее запись.
Благодаря прошивке от Tifa дешевый китайский программатор USBasp теперь умеет работать с микросхемами flash-памяти eeprom 25xxx. Теоретически еще может работать c 24xxx и Microwire, но я проверил только работу с 25xxx.
UPD1:
Оказывается, такую же прошивку можно записать и в программатор AVR910. Тогда он тоже будет работать с flash-памятью 25xxx: Программатор ISP памяти из AVR910.
Материал взят с сайта http://plc-blog.com.ua/usbasp-flash-25xxx
Как прошить Arduino Pro Mini
Загрузить прошивку на этот микроконтроллер можно несколькими способами:
- Через другую плату ардуино, у которой есть встроенный USB-UART
- С помощью специального программатора
- Используя USBasp-программатор
Последние два способа очень похожи. Они отличаются лишь типом программатора. Поэтому в этой статье мы рассмотрим только прошивку с помощью другой Arduino и с помощью специального программатора.
Прошивка ардуино про мини с помощью Arduino Uno или Nano
Для того что бы прошить одну ардуинку через другую, нам понадобятся 2 платы Arduino, соединительные провода, USB кабель и компьютер. Я покажу как прошить Arduino Pro Mini с помощью Arduino Nano, но по этой же инструкции можно использовать и другие платы Arduino, такие как Uno, Mega и тд.
Для начала надо настроить нашу плату, которая будет выступать в роли программатора. Для этого подключим ее к USB компьютера и перейдем в Arduino IDE. В примерах уже есть готовый скетч, написанный специально для этой цели.
Выбор программатораВыбираем этот скетч и прошиваем. Теперь мы готовы подключать Arduino Pro Mini. Подключаем следующим образом:
Arduino Nano -> Arduino Pro Mini
- +5v -> Vcc
- GND -> GND
- D10 -> RST
- D11 -> D11
- D12 -> D12
- D13 -> D13
У меня это выглядит так:
Arduino Pro Mini через Arduino NanoДалее нам нужно выставить в меню «Инструменты» нашу прошиваемую плату и тип программатора «Arduino as ISP»:
Теперь мы можем прошить нашу Arduino Pro Mini. Откройте или напишите нужную вам прошивку. Будьте внимательны! Стандартная кнопка загрузки скетча нам не подходит. По умолчанию она заливает прошивку без использования программатора. Таким образом мы прошьем микроконтроллер, который должен выступать в качестве программатора. Чтобы этого не произошло нужно перейти в меню Скетч >> Загрузить через программатор.
Готово!
Прошивка Arduino Pro Mini с помощью специального программатора
Купить специальный программатор можно здесь. Стоит он меньше одного доллара. Если вы часто используете ардуино про мини, то этот программатор сильно упростит и ускорит прошивку.
Для преобразования USB-to-Serial используется микросхема Ch440. Что бы она определялась компьютером правильно необходимо установить специальный драйвер. Скачать и установить драйвер Ch440
Прошить ардуино с помощью программатора очень просто. Нужно подключить программатор к Arduino Pro Mini следующим образом:
Arduino <-> Программатор
- Vcc <-> Vcc
- GND <-> GND
- RX1 <-> TXD
- TX0 <-> RXD
Подключаем программатор к компьютеру и проверяем, что он не требует драйверов. Если же он определяется как «неопознанное устройство» скачайте и установите драйвер. Его легко найти, набрав в поисковике «*модель вашего программатора* драйвер». Например «CP2102 драйвер». Далее запускаем Arduino IDE. Выбираете модель вашей платы. Потом переходим в меню Инструменты -> Программатор и выбираете ваш программатор. Далее открываете нужный вам скетч и загружаете его с помощью пункта в меню Скетч -> Загрузить через программатор.
Если ваш программатор не поддерживает программный сброс, то вам придется вручную нажать кнопку перезагрузки на вашей Arduino Pro Mini в момент компиляции скетча. Это нужно сделать сразу как только в Arduino IDE появится строка, что скетч скомпилирован.
Вот и все. Мы успешно прошили Arduino Pro Mini с помощью программатора.
Прошивка микроконтроллеров Atmega через USBasp
Прошивка микроконтроллеров Atmega без arduino через USBasp:
Существуют простые и дешевые программаторы для прошивки м/к Atmega ,которые поддерживает среда Arduino IDE- необходимо просто выбрать соотвествующий программатор USBasp в настройках Arduino IDE.USBasp необходим,если вы просто прошиваете микроконтроллеры Amtel.Программатор основан на м/к Atmega 8 и использует програмный USB.
Цена такого программатора на ebay.com около 3$.Он имеет выход питания 5v/3.3 v(переключается перемычкой JP1) ,а так же соотвествующие выводы SCK,MISO,MOSI,RESET для подключению напрямую к микроконтроллеру.На картинке показаны выводы на самом программаторе — на разъеме шлейфа соответственно будет зеркально относительно ключа (у 5 вывода),не забывайте об этом.
Для работы в операционной системе Windows необходимы драйвера.Linux же не требует их.
Данный программатор легко превратить в друое устройство,например в I2C-USB переходник , USB контроллер с GIO или контроллер чтения термодатчиков DS18B20.
Программирование через USBasp в Arduino IDE
Для программирования микроконтроллеров,подключенных через USBasp в Arduino IDE необходимо выбрать его в программе согласно скриншоту.
Программирование осуществляется через меню файл,выбрав пункт
«Загрузить с помощью программатора».Не забываем выбрать микроконтроллер в меню «сервис» ->»плата».
Программирование через USBasp утилитой avrdude
Утилиту avrdude можно найти в папке /hardware/tools/ в дистрибутиве Arduino IDE или скачать в интернете.
Для того,чтобы залить прошивку в микроконтроллер необходимо выполнить команду:
avrdude -c usbasp -p m8 -U flash:w:имя_файла.hex . где -p m8 — это модель микроконтроллера.В данном случае atmega 8.
Дополнительно так же можно установить фьюзы дописав :-U hfuse:w:0xХХ:m -U lfuse:w:0xХХ:m .Где ХХ — соотвествующие фьюзы микроконтроллера ,необходимые для конкретной прошивки.
Обычно прошивку можно осуществить через команду make flash ,если Вы имеете исходный код прошивки и установленную WinAVR.
В других средах программирования выбор программатора осуществляется через соответсвующее меню программы.
Обратите внимание,
Что на некоторых микроконтроллерах с завода,например на серии Attiny включен по умолчанию фьюз CKDIV8 ,который устанавливает делитель на 8 и из-за этого USBasp не программирует такие микроконтроллеры пока не установить перемычку JP3 на USBasp.Для настройки фьюзов воспользуйтесь калькулятором фьюзов чтобы выставить нужные настройки , в том числе выключить данный делитель.Фьюзы прошиваются через avrdude командой avrdude -c usbasp -p имя_м/к -U lfuse:w:0xХХ:m .
Пример для установки фьюзов attiny85 для внутреннего генератора 8мгц с выключенным делителем на 8 :
avrdude -c attiny85 usbasp -p -U lfuse:w:0x62:m
При программировании через Arduino IDE можно установить нужные фьюзы выбрав в меню «записать загрузчик»,выбрав перед этим необходимый микроконтроллер.
«Допиливание» программатора.
или исправляем ошибку: avrdude: warning: cannot set sck period. please check for usbasp firmware update
При программировании некоторых микроконтроллеров(например у серии ATtiny) возможны не фатальные ошибки.Хотя и программирование микроконтроллера происходит,но обновить прошивку микроконтроллера на программаторе рекомендуется.
Что для этого нужно ? Вы можете использовать плату arduino как программатор или использовать другой USBasp программатор.Для программирования используются те же выводы SCK,MISO,MOSI,RESET.
Порядок действий для прошивки через arduino:
1. Подключаем выводы SCK,MISO,MOSI,RESET к Arduino согласно инструкции.
2. Установавливаем перемычку self programming (на фото обозначена как JP2),обычно место для перемычки не распаяно.
3. Качаем последнюю версию прошивки usbasp.2011-05-28 тут и кидаем в папку путь_к_папке_ардуины_/hardware/tools/.
4. Перейдем в консоль (cmd или bash) Вашей операционной системы в папку через команду cd путь_к_папке_ардуины_/hardware/tools/ и далее вводим команды для Windows,не забывем указать верный порт,на котором подключена Arduina:
avrdude -C avrdude.conf -c avrisp -P COM1 -b 19200 -p m8 -v
Программа выдаст сообщение ,где покажет состояние фьюзов и другую информацию:
Если Вы видите такие же сообщения- значит подключено все правельно и можно прошивать командой:
avrdude -C avrdude.conf -c avrisp -P COM1 -b 19200 -p m8 -U flash:w:usbavr.hex -U lfuse:w:0xef:m -U hfuse:w:0xc9:m
Успешная прошивка:
Для прошивки из Linux все аналогично, заменяется часть строки:
./avrdude -C avrdude.conf -c avrisp -P /dev/ttyUSB0 …
Порядок действий для прошивки через другую USBasp:
Прошивка аналогична прошивке обычного микроконтроллера: подключаем выводы SCK,MISO,MOSI,RESET один в один шлейфом идущим в комплекте с программатором.Не забываем про перемычку JP2.
Указываем опцию -c usbasp вместо -c avrisp
Программатор для AVR-микроконтроллеров USBasp | CUSTOMELECTRONICS.RU
Мы предлагаем вам собрать нашу версию популярного программатора AVR-микроконтроллеров USBasp. Он имеет форм-фактор USB-флэшки и может быть собран в домашних условиях.А здесь вы можете ознакомиться с материалами автора проекта.
Программатор USBasp
Печатная плата
Наша версия максимально уменьшена и упрощена. Вид печатной платы с лицевой:
USBasp плата сверху
…и с обратной стороны
USBasp плата снизу
Скачать файл печатной платы в формате SprintLayout можно по ссылке.
Плата двухсторонняя и при ее сборке необходимо пропаивать элементы с двух сторон (кроме кварцевого резонатора). Также на плате достаточно много переходных отверстий, в которые нужно запаять перемычки. Все это сделано для максимального уменьшения габаритов платы.
Элементы платы
- C1,С2 — конденсаторы на 22пФ, 2шт.
- DD1 — микроконтроллер Atmega8, в корпусе TQFP32, 1шт.
- HL1,HL2 — светодиоды KA-3528, 2шт. (лучше взять разных цветов)
- R1,R2, R6-R9 — резисторы с сопротивлением 1кОм, в корпусе 0805, 5шт.
- R3 — чип-резистор 0805 на 2,2кОм, 1шт.
- R4,R5 — чип-резисторы 0805 на 68 Ом, 2шт.
- VD1,VD2 — стабилитроны BZX84C3V6, 2шт.
- ZQ1 — кварцевый резонатор 12МГц, 1шт.
- Разъем IDC-06, 1шт
- USB-разъем
- Гребенка PLS-контактов
В собранном виде плата выглядит следующим образом:
Программатор USBasp в сборе
Программатор USBasp в сборе
Работа с программатором
Недостаток программатора в том, что его необходимо прошить. Файл прошивки можно скачать здесь.
Должны быть запрограммированы фьюз-биты SPIEN, CKOPT, BOOTSZ1, BOOTSZ0. Остальные незапрограммированы.
При первом подключении Windows предложить установить драйвер. Выберите установку из указанного места. Скачать драйвер можно здесь. После этого в системе появится устройство USBasp — все, программатор готов к работе.
Для прошивки мы используем Khazama AVR Programmer. Хотя USBasp очень популярен и многие IDE поддерживают работу с ним.
Для прошивки используется стандартный 6ти-пиновый IDC-разъем. Вот его распиновка:
ISP-разъем
Рядом с IDC-разъемом можно установить две перемычки. SlowSCK позволяет снизить скорость программирования, а перемычка RESET нужна для программирования контроллера на программаторе. То есть с установленной перемычкой его можно программировать непосредственно через тот же разъем.
Мы будем очень рады, если вы поддержите наш ресурс и посетите магазин наших товаров shop.customelectronics.ru.
Как прошить или запрограммировать Arduino с помощью USBasp из Atmel Studio?
Примечание
Эта статья является частью Руководства по программированию встроенного микропрограммного обеспечения C Arduino / ATmega328p . Попробуйте изучить домашнюю страницу курса, чтобы найти статьи на похожие темы.
Учебное пособие по Arduino Уровень встроенного регистра C Мастер-класс Arduino
Также посетите страницу выпуска для встроенной библиотеки аппаратной абстракции C уровня регистров и код для AVR .
Введение
Это руководство проведет вас через процесс настройки Atmel Studio для прошивки плат Arduino на базе AVR из Atmel Studio с помощью USBasp. Вы также узнаете, как установить драйверы USBasp.
Для прошивки платы Arduino или любых плат AVR с использованием интерфейса ISP USBasp — самый дешевый и лучший вариант. Он поддерживает широкий спектр микроконтроллеров AVR и прост в использовании.
Использование AVR USBasp для программирования платы Arduino даст вам больше места во флэш-памяти, чем при программировании через последовательный USB.По умолчанию платы Arduino используют загрузчик для программирования без использования какого-либо внешнего программатора, но для этого платы Arduino используют 2 Кбайт флэш-памяти для загрузчика. Если вы используете USBasp, вы можете использовать эти дополнительные 2 КБ для своей прошивки, и ваша программа начнет выполнение без какой-либо задержки, которую загрузчик вводит в противном случае.
Перед тем, как продолжить, вы должны установить Arduino IDE, так как мы будем использовать avrdude из установки Arduino. Если вы хотите узнать, как установить, перейдите по ссылке.
https://www.arnabkumardas.com/platforms/atmel/how-to-install-arduino-ide-and-drivers/
Что вы узнаете
- Как установить драйверы USBasp в Windows 10?
- Как использовать USBasp в Atmel Studio?
- Как прошить Arduino UNO с помощью USBasp от Atmel Studio?
- Как прошить Arduino NANO с помощью USBasp от Atmel Studio?
- Как прошить Arduino от Atmel Studio?
Шаги по настройке
Необходимое время: 15 минут.
Как установить драйверы USBasp и настроить Atmel Studio на флэш-память с помощью USBasp
- Установка драйверов USBasp
Лучший и простой способ установить драйверы USBasp — использовать установщик USB-драйверов Zadig.
- Загрузите Zadig по ссылке ниже
https://zadig.akeo.ie/
- Подключите USBasp к компьютеру
- Откройте диспетчер устройств
Вы должны увидеть ‘ ! ‘ рядом с USBasp.
- Откройте приложение Zadig, которое вы скачали.
. В левом углу вы увидите «1 устройство найдено».
- Выберите драйвер и установите
Выберите ‘libusb-win32’ и щелкните ‘Install Driver’ .
- Установка драйвера
Обычно установка драйвера занимает несколько минут.
- После успешной установки
Если все в порядке, отображается сообщение об успешном выполнении.
- Откройте диспетчер устройств
Откройте диспетчер устройств, чтобы проверить установку. Знак ‘!’ не должен присутствовать.
- Откройте Atmel Studio
Откройте Atmel Studio и перейдите в меню -> Инструменты -> Внешние инструменты .
- Нажмите «Добавить»
Будет создана новая запись.
- Заполните текстовые поля
Заголовок: USBasp
Команда: C: \ Program Files (x86) \ Arduino \ hardware \ tools \ avr \ bin \ avrdude.exe
Аргументы: -C "C: \ Program Files (x86) \ arduino \ hardware \ tools \ avr \ etc \ avrdude.conf" -v -p atmega328p -c usbasp -U flash: w: " $ (ProjectDir) Debug \ $ (TargetName) .hex ": i
Выберите « Использовать окно вывода »
Измените параметр -p в зависимости от микросхемы AVR.
Микроконтроллер Arduino UNO / NANO> -p atmega328p
Микроконтроллер Arduino MEGA> -p atmega2560 - Подключите AVR или плату Arduino с USBasp
Убедитесь в правильности ориентации контактов.
- Протестируйте инструмент
Перейдите в меню -> Инструменты -> USBasp Вы должны увидеть такой экран:
DIYmall USBASP Programmer 10-контактный загрузчик AVR Flash Tool USB ISP Burn Bootloader 51 AVR ATMEGAA8 с перемычкой для Arduino Ender 3 Pro 5V / 3.3V: Электроника
5,0 из 5 звезд Работает «из коробки» на моем MacBook Pro (Big Sur)
Автор: Д.Порри 28 февраля 2021 г.
Если вы используете какой-либо микроконтроллер с Arduino IDE и загрузчик на чипе, то этот программатор вам не нужен.По умолчанию IDE Arduino использует последовательный порт и загрузчик всякий раз, когда вы нажимаете кнопку загрузки. Если вы используете AVRDUDE или Arduino IDE для микроконтроллеров без загрузчика, этот программатор прост и экономичен. С помощью этого программатора вы можете загружать загрузчик в микроконтроллер, а также загружать скетчи / прошивки.
Я подключил это, и устройство сразу же было опознано моей ОС (Big Sur). См. Изображение 1. Он не показывает никаких деталей, но распознал устройство как USBasp.
В среде Arduino IDE это устройство не отображается как порт. Вместо этого выберите меню «Инструменты», а затем «Выбрать программист». В списке выбора выберите USBasp (см. Второе изображение).
Теперь вы можете либо записать загрузчик, либо запрограммировать микроконтроллер. Чтобы записать загрузчик, вам нужно выбрать правильную плату / микроконтроллер и все соответствующие настройки для вашего устройства, а затем выбрать «Записать загрузчик» в меню «Инструменты».
Для программирования устройства / микроконтроллера не используйте кнопку «Загрузить», как обычно.Это выдаст вам ошибку. Вместо этого, убедившись, что выбранный вами программист — USBasp, выберите «Загрузить с помощью программатора» в меню Sketch. Это будет использовать USBasp, подключенный к компьютеру.
Чтобы это устройство было универсальным, я рекомендую заказывать версию с переходником с 10 на 6 контактов.
Я заказал комплект с двумя наборами и протестировал оба. Они оба работали. Все мои тесты были с простым мигающим светодиодным эскизом, а также с прошивкой 3D-принтера Marlin, записанной на ATMEGA1284P-PU на макетной плате.
Я очень рекомендую это устройство
Программирование 3DoT с помощью USBasp — Arxterra
Шаг 1: Загрузите Zadig
Zadig — это инструмент, обычно используемый для установки драйверов. Программисту USBasp для работы должны быть установлены правильные драйверы.
Шаг 2: Подключите USBasp к USB-порту и немного подождите, пока Windows завершит попытку установки драйверов (это не удастся!).
Шаг 3: Откройте Zadig.В раскрывающемся меню вверху выберите USBasp . В поле справа выберите « libusb-win32 »
Шаг 4: Щелкните установить. Когда это будет сделано, вы можете закрыть Zadig.exe и удалить его.
Шаг 5: Вставьте перемычки в SDO, SDI, SCLK и RESET на 3DoT
См. Распиновку ниже. Рекомендуется использовать разные цвета для каждой проволоки, чтобы не перепутать их.
Шаг 6: Подключите провода, которые вы только что подключили, к небольшому разъему, поставляемому с USBasp, следующим образом:
3DoT | USBasp |
SDO | MISO |
SDI | MOSI |
SCLK | SCK |
СБРОС | RST |
(Если вы запутались, в настоящее время MISO и MOSI называются SDI и SDO.Я оставил имена в правом столбце, используя старое соглашение, поскольку они напечатаны на USBasp как таковые.)
Шаг 7: Установите переключатель 3DoT в среднее положение
Шаг 8: Откройте блокнот и вставьте следующее, изменив только «filename.hex» на имя вашего шестнадцатеричного файла.
avrdude -v -p atmega32u4 -c USBasp -P usb -b 57600 -U flash: w: filename.hex
pause
Сохранить как.bat файл
Шаг 9: Запустите файл .bat. Ваш файл .hex должен быть загружен!
Теперь вы можете отсоединить разъем ленточного кабеля, а остальные оставить подключенными к 3DoT, чтобы легко подключать и отключать программатор.
Рекомендуется обмотать перемычки лентой или другим способом связать их, чтобы они оставались соединенными.
Помните, что аккумулятор все равно нужно заряжать через USB!
Небольшой успех: перепрошивка USBasp
Две недели назад я написал о своем эксперименте с ATTiny10.8-битный микроконтроллер 12 МГц, достаточно маленький, чтобы его можно было спутать с тучным муравьем. К сожалению, мне не удалось запрограммировать этого крошечного человечка, поэтому на этой неделе я продолжаю свой небольшой квест по прошивке.
Моим первым предположением было то, что крошечные провода, которые я использовал для подключения ATTiny10 к моему USBasp-флешеру, не работали, или я повредил ATTiny10 в своих любительских попытках микропайки.
Чтобы проверить, были ли это причины, я припаял ATTiny10 и WS2812 2020 к коммутационной плате SOP16. Это позволяет мне провести тестирование на макете.Это также значительно упростило пайку, снизив риск перегрева компонентов.
К сожалению, это не помогло. Мне все еще не удалось загрузить прошивку на ATTiny. Пора переключить внимание на следующего подозреваемого: флешер USBasp.
Чтобы запрограммировать ATTiny10, я попытался использовать USBasp-флешер, купленный на AliExpress. Я использовал этот флешер для программирования своих электронных карт, поэтому знаю, что он работает. Единственное различие между ATTiny85 и ATTiny10 на электрокарте состоит в том, что последний использует протокол TPI вместо протокола ISP, который нужно программировать.
После небольшого сеанса Google я нашел веб-сайт проекта USBasp. Помимо некоторых интересных технических деталей, этот веб-сайт также предлагает загрузки прошивки. И тут я заметил, что поддержка TPI была доступна только в новейших прошивках. Может мой дешевый китайский USBasp включал какую-то старую прошивку? Пришло время обновления!
Чтобы разрешить обновление USBasp, необходимо закрыть JP2. В этом случае JP2 находится на задней стороне печатной платы. Паять короткий провод между этими точками подключения достаточно для включения режима самопрограммирования.
Затем я использовал Arduino Uno в качестве программатора. Для этого я загрузил скетч ArduinoISP
в Uno. Этот скетч доступен в разделе Примеры скетчей в Arduino IDE. Затем я подключил USBasp к Arduino, используя следующую конфигурацию контактов:
ARDUINO --- USBasp
5 В ------- 2 (VCC)
ЗЕМЛЯ ------- 10 (ЗЕМЛЯ)
13 ------- 7 (SCK)
12 ------- 9 (MISO)
11 ------- 1 (MOSI)
10 ------- 5 (СБРОС)
(Обратите внимание, что синий светодиод USBasp не загорится после его подключения.Я вернусь к этому позже …)
Чтобы проверить, работает ли соединение, я использовал следующую команду в своем терминале macOS:
avrdude -c avrisp -P /dev/cu.usbmodem14201 -b 19200 -v -p m8
- avrdude — это утилита для загрузки / выгрузки / управления содержимым ROM и EEPROM микроконтроллеров AVR.
- Флаг -c указывает, какой программатор используется. В этом случае Arduino usni настроен как программатор avrisp .
- Используя -P , я указываю, к какому порту подключен Arduino Uno. В моем случае это порт /dev/cu.usbmodem14201 , но в вашем случае он может иметь другое имя / путь.
- Затем я указываю скорость связи с помощью флага -b . В данном случае 19200 бод.
- Чтобы получить обратную связь, я включаю подробный режим с помощью -v .
- И последнее, но не менее важное: я указываю тип AVR, который хочу запрограммировать.Поскольку у моего USBasp есть ATMEGA8A, я указываю часть m8 , используя -p . Если вы опустите флаг -p, вы получите список всех поддерживаемых AVR.
После выполнения этой команды avrdude
попытается установить связь с микроконтроллером USBasp с помощью Arduino avrisp.
Отлично! Это работает! Пришло время заняться настоящей работой: прошить USBasp новой прошивкой. Сначала я загрузил последнюю версию прошивки по адресу: http://www.fischl.de/usbasp. В данном случае последняя прошивка была usbasp.2011-05-28.tar.gz . После загрузки и извлечения файла (просто дважды щелкнув его в поисковике macOS) я перешел в папку usbasp.2011-05-28 / bin / firmware
, в которой находится нужная мне прошивка: usbasp.atmega8.2011-05 -28.hex
.
Загрузка прошивки в USBasp — это почти та же команда, что и раньше:
avrdude -c avrisp -P /dev/cu.usbmodem14201 -b 19200 -v -p m8 -U flash: w: usbasp.atmega8.2011-05-28.hex
В этом случае я добавил флаг -U для выполнения операции с памятью:
- Я хочу выполнить операцию с частью микроконтроллера flash .
- Я хочу записать, поэтому указываю записывающую флеш-память с флагом w .
- И самое главное: я определяю имя файла шестнадцатеричного файла flash (который находится в текущей папке)
Давай нажимаем Enter и надеемся на лучшее…
Да! Кажется, сработало! 🙂 Так как после мигания загорелся синий светодиод, действительно такое ощущение, что произошло что-то хорошее. Светодиоды всегда улучшают ситуацию, правда ?!
А теперь самое главное … не будь таким, как я: не забудьте открыть / отсоединить самопрограммируемый джампер JP2 на задней стороне USBasp! Когда он подключен / закрыт, ESPasp не сможет работать.
Итак, после повторного подключения ATTIny10 к USBasp настало время для самого интересного. Сможет ли Arduino IDE прошить ATTiny10 с помощью ATTiny10Core?
Как насчет того, чтобы просто выбрать программатор USBasp и нажать кнопку «Загрузить»?
ДА! Это сработало! 🙂
Если вы хотите узнать больше об этом процессе перепрошивки, обязательно прочтите отличный пост Роджера Кларка на эту тему…
Мне пора начать работать с прошивкой, чтобы светодиод WS2812 2020 заработал.Не пропустите, поэтому следите за моим блогом или подписывайтесь на меня в Twitter или Instagram .
Использование AVR-USBasp для программирования Arduino
Как правило, есть два метода загрузки программы в Arduino:
- USB / последовательный метод связи
- Метод ISP
Первый метод — наиболее распространенный метод, который реализуется с помощью микросхемы / преобразователя переходника USB-последовательный порт. Например, CT-UNO использует микросхемы FTDI FT23x, которые являются популярными микросхемами адаптера USB-последовательный порт, а BBFuino требует преобразователя USB-последовательного порта UC00A для загрузки программы.В то время как оригинальный Arduino UNO использует Atmega32u4 в качестве микросхемы USB для последовательного интерфейса (аналогично CT-UNO). Метод, примененный к CT-UNO, может быть применен к Arduino UNO.
Другой метод — это метод ISP, где требуется программист ISP. ISP (внутрисистемное программирование) — это метод, используемый для программирования этих свежих пустых микросхем Atmel AVR. Если в микросхемы Atmel AVR предварительно не загружена прошивка загрузчика, можно использовать метод ISP для загрузки программы в микросхемы; метод загрузчика работать не будет. Как и в руководствах «Использование ISP Programmer для записи загрузчика в Arduino» и «Запись загрузчика Arduino с AVR USBasp», мы использовали ISP для записи загрузчика в Arduino.В этом руководстве показано, как загрузить программу в Arduino с помощью программатора ISP — AVR USBasp, и в этом руководстве есть 3 сеанса:
- Загрузить программу в CT-UNO
- Загрузить программу в BBFuino
- Загрузить программу в автономный Arduino
Введение
AVR USBasp — это внутрисхемный USB-программатор, который может использоваться для программирования большинства микроконтроллеров Atmel AVR. Он просто состоит из ATmega8 и пары пассивных компонентов, т.е.е. резисторы, конденсаторы, светодиоды и т. д. Этот программатор использует драйвер USB только для прошивки, и специальный контроллер USB не требуется. AVR USBasp поставляется с 6-жильным кабелем. На рисунках ниже показано, каковы все отверстия в головке кабеля:
На этом рисунке показан вид сверху, на нем обозначено каждое из отверстий. Обратите внимание на квадрат, указывающий на ориентацию вашего кабеля.
Заголовок ISP состоит из 2×3 контактов. Вы заметите, что рядом с заголовком ISP есть метка «1» или метка со стрелкой.Эта метка указывает, что контакт рядом с ним является контактом 1 заголовка ISP.
Перед тем, как перейти к следующему шагу, убедитесь, что вы установили драйвер AVR USBasp на свой компьютер. В противном случае загрузите драйвер AVR USBasp и следуйте инструкциям в руководстве пользователя AVR USBasp.
Сессия 1: Загрузить программу в CT-UNO
- Вставьте разъем кабеля программатора ISP в разъем ISP. Пластиковый наконечник радужной кабельной головки и метка со стрелкой должны находиться на одной стороне.Вы заметите, что светодиод PWR горит. Если это не так, проверьте соединение между головкой кабеля и заголовком ISP.
- Откройте программное обеспечение Arduino IDE. Если вы используете старую версию Arduino IDE, вы можете получить некоторую ошибку. Загрузите последнюю версию с веб-сайта Arduino. Я использую Arduino IDE версии 1.0.5, и она отлично работает.
- Затем вызовите любой пример исходного кода. В этом руководстве будет использоваться пример Blink, который можно вызвать из меню File> Example> Basics> Blink.
Пример эскиза Blink: - Выберите «USBasp» в меню «Инструменты»> «Программист».
- Выберите «Загрузить с помощью программатора» в меню «Файл». Процесс загрузки займет минуту.
Если вы выберете «Загрузить» или нажмете кнопку «Загрузить», вы получите сообщение об ошибке, как показано на рисунке ниже. Это связано с тем, что AVR USBasp не установлен в качестве последовательного порта на нашем ПК, а функция «Загрузить» означает загрузку программы через последовательный порт. Не волнуйтесь, IDE все равно будет загружать через USBasp. - Процесс загрузки завершается, когда в Arduino IDE отображается сообщение «Готово».
Сессия 2: Загрузка программы в BBFuino
BBFuino использует микросхему ATmega328 вместо микросхемы ATmega328P (на момент написания этого руководства).
Разница между ATmega328 и ATmega328P в том, что ATmega328P имеет технологию Atmel picoPower, а ATmega328 — нет. Идентификационная подпись ATmega328 и ATmega328P также различается.ATmega328 имеет подпись 0x1E 0x95 0x14 , а ATmega328P имеет подпись 0x1E 0x95 0x0FB . В остальном ATmega328 и ATmega328P архитектурно идентичны во всех смыслах. Для загрузки скетчей в ATmega328 необходимо внести некоторые изменения в конфигурацию:
- Найдите каталог Arduino. В моем случае мой каталог Arduino — C: \ Users \ user \ Desktop \ arduino-1.0.5
Затем найдите каталог hardware \ tools \ avr \ etc. Вы заметите, что есть файл с именем «avrdude.conf »внутри этого каталога. - Сделайте копию файла «avrdude.conf» для резервного копирования.
- Откройте файл «avrdude.conf» с помощью WordPad.
- Найдите «m328p».
- Ищите «подпись». Под «m328p» должно быть несколько строк.
Изменить 0x1e 0x95 0x0f на 0x1e 0x95 0x14
- Нажмите «Сохранить», чтобы сохранить отредактированный файл конфигурации и закрыть его. Теперь вы изменили конфигурацию Arduino IDE.
Затем подключите головку кабеля программатора ISP к заголовку ISP BBFuino. Пластиковый выступ на головке кабеля «радуга» должен находиться на той же стороне, что и этикетка «ISP» на BBFuino.
Процедура загрузки скетчей в BBFuino аналогична сеансу 1:
- Откройте программное обеспечение Arduino IDE и вызовите любой пример. В этом руководстве будет использоваться пример Blink, который можно вызвать из меню File> Example> Basics> Blink.
- Выберите «USBasp» в меню «Инструменты»> «Программист».
- Выберите «Загрузить с помощью программатора» в меню «Файл». Процесс загрузки завершается, когда в Arduino IDE отображается сообщение «Выгрузка завершена».
Сессия 3: Загрузка программы в автономную Arduino
В этом сеансе требуется следующее оборудование:
Создайте схему автономного Arduino, как показано ниже:
Рисунки ниже будут хорошей справкой при подключении AVR USBasp и автономной Arduino:
Источник: Arduino.ccНа автономной Arduino нет заголовка ISP. Поэтому мы используем перемычку «папа-папа», чтобы выполнить некоторую проводку между кабельной головкой и автономным Arduino. См. Схему подключения в таблице ниже:
Программист ISP Кабельная головка | Автономная Arduino |
Контакт 1: MISO | PB4 (MISO / цифровой контакт 12) |
Контакт 2: VCC | VCC |
Контакт 3: SCK | PB5 (SCK / цифровой контакт 13) |
Контакт 4: MOSI | PB3 (MOSI / цифровой контакт 11) |
Контакт 5: СБРОС | PC6 (СБРОС) |
Контакт 6: GND | ЗЕМЛЯ |
Процедура загрузки эскизов в автономную Arduino аналогична сеансу 1.Выберите «USBasp» в меню «Инструменты»> «Программист» и выберите «Загрузить с помощью программатора».
Процесс загрузки завершен, когда в среде Arduino IDE отображается сообщение «Выгрузка завершена».
Отлично! Я закончил рассказывать о методе ISP для загрузки скетчей в Arduino, надеюсь, это будет полезно, и если у вас есть какие-либо вопросы, обсудите их на нашем техническом форуме, так как мы редко проверяем раздел комментариев на сайте руководства. Обратите внимание, что для этого метода существует ограничение, то есть прошивка загрузчика заменяется исходным кодом примера мигания.Чтобы вернуться к загрузке эскизов через USB, вам нужно записать загрузчик в чип на плате Arduino. Обратитесь к разделу Запись загрузчика Arduino с помощью AVR USBasp, чтобы записать загрузчик на Arduino с помощью AVR USBasp.
Проблемы программиста с plaformIO, а не с Arduino IDE — PlatformIO IDE
Высокий каждый,
У меня странная проблема. Я надеюсь, что вы, ребята, сможете мне помочь.
У меня есть 3D-принтер с кастомной платой (atmega2560).Эту плату можно запрограммировать только через разъем ISP. Не через USB-соединение (действительно нестабильное usb-соединение. Вероятно, плохой дизайн платы). Я давно программирую эту плату с помощью программатора USBAsp на разъеме ISP с программным обеспечением ArduinoIDE. Это срабатывает каждый раз.
В настоящее время я пытаюсь получить platformIO для этой специальной платы. Однако у меня возникают проблемы с загрузкой прошивки с помощью программатора USBAsp. Это ошибка, которую я получаю.
Письмо | ########################################################################## | 100% 74.27 с avrdude: записано 131012 байт флеш-памяти avrdude: проверка флэш-памяти на соответствие .pio / build / usbasp / firmware.hex: avrdude: загрузить данные флэш-данных из входного файла .pio / build / usbasp / firmware.hex: avrdude: входной файл .pio / build / usbasp / firmware.hex содержит 131012 байт avrdude: чтение данных флеш-памяти на кристалле: Чтение | ########################################################################## | 100% 50.02 сек. avrdude: проверяем ... avrdude: ошибка проверки, первое несоответствие в байте 0x0000 0x04! = 0x0c avrdude: ошибка проверки; несоответствие содержания avrdude сделано.Спасибо. *** [загрузка] Ошибка 1
На данный момент ошибка такая.
avrdude: ошибка проверки, первое несоответствие в байте 0x0002
0x40! = 0x41
avrdude прав. Программа не работает. Даже если программа blink_led не выполняет ни слова.
Программа работает, если я использую ArduinoIDE для загрузки программы.
Это настройки platformio.ini, которые я использую.
[env: usbasp] платформа = atmelavr доска = ATmega2560 framework = arduino upload_protocol = usbasp ; каждый флаг в новой строке upload_flags = -Pusb
Еще кое-что тестировал.Следующие вещи работают:
- Загрузка прошивки с платформы IO через USB прямо в UNO
- Загрузка прошивки с платформы IO через программатор USBAsp в UNO
- Загрузка прошивки с ArduinoIDE через программатор USBAsp на кастомную плату atmega2560
Это предохранители кастомной платы atmega2560.
avrdude: safemode: Предохранители исправны (E: FD, H: D9, L: FF)
Любая помощь будет оценена
AVR Программирование TPI с usbasp Для чайников
Странный голод информации по этой конкретной теме доступен в текстовой форме.Если вы погуглите «usbasp tpi» и тому подобное, вы найдете сообщения на форумах avr, заполненные неверной информацией и схемами. Этот пост — попытка исправить это.
Я намерен показать ровно следующее, не больше и не меньше:
- Что такое TPI?
- Как перепрограммировать ваш usbasp для поддержки TPI.
- Как подключить микроконтроллер только для TPI (например, ATTiny20) к интерфейсу интернет-провайдера usbasp.
- Почему вы можете выбрать одно из этих более новых устройств, а не использовать проверенные на практике AVR интернет-провайдера.
TPI — это крошечный интерфейс программирования, который можно найти на «несколько новых» микроконтроллерах AVR (то есть сделанных в последнее десятилетие или около того). Есть еще одна более новая, которая появилась на AVR после приобретения микросхемы (UPDI), которая не очень широко документирована, но есть такие утилиты, как pyupdi, которые стремятся поддерживать этот интерфейс без программиста.
TPI немного меньше старого интерфейса ISP. Вместо того, чтобы выглядеть как порт SPI, он состоит всего из трех строк:
- #RESET: Как и раньше, вывод сброса используется для управления активностью интерфейса.
- TPIDATA: это двунаправленная линия данных. В отличие от интернет-провайдера, все данные отправляются в одной строке.
- TPICLK: Линия часов.
Синхронизация этих трех строк описана в технических характеристиках деталей и не является сложной. Это довольно медленно, но поскольку на устройствах с TPI обычно не так много программной флэш-памяти, это не имеет особого значения. Логические детали того, как работает интерфейс, также задокументированы в технических описаниях деталей, но эта логика уже вошла в avrdude.
Если вы похожи на меня, вы купили свой USBASP десять лет назад на ebay. Вероятно, у него очень старая прошивка, которая пока не поддерживает программирование TPI. Даже «новые» usbasps, которые можно найти на ebay, имеют очень старую прошивку. Итак, вам необходимо обновить прошивку до последней версии (с 2011 года !!!!), которая поддерживает TPI. Есть несколько руководств по этому процессу, но одно текстовое можно найти здесь: https://blog.podkalicki.com/how-to-update-avr-usbasp-firmware-to-latest-version/
Я резюмирую здесь то, что вам нужно сделать:
- Купите второй usbasp.Один будет программистом, а другой — целью, которая станет совместимой с TPI.
- Загрузите последнюю версию прошивки с веб-сайта Томаса Фишла: https://www.fischl.de/usbasp/
- Установите перемычку программирования на цель, закоротив соответствующий заголовок (иногда обозначается JP1, иногда обозначается JP2). Это двухконтактная перемычка, которая НЕ является перемычкой целевого напряжения или перемычкой «медленных часов».
- Подключите программатор USB к ПК. Не подключайте цель к ПК.
- Соедините два USBASP вместе с помощью 10-контактного ленточного кабеля ISP.
- Используйте avrdude для программирования загруженной прошивки (убедитесь, что выбрали правильный шестнадцатеричный файл для atmega, используемого на целевом программаторе).
Я хочу сосредоточить это руководство в основном на фактическом подключении TPI на схематическом уровне, поэтому здесь у меня нет изображений или чего-либо еще.
Это должно быть легко найти информацию, но по какой-то причине это не так. Вот основы:
- Подключите #RESET к #RESET на разъеме ISP.
- Подключите TPIDATA к разъему MOSI ISP
- Подключите TPICLK к разъему ISP CLK
- Убедитесь, что АРН работает от 5 В. Это важно. См. Ниже несколько советов и приемов, которые у меня есть, чтобы обойти это ограничение, если остальная часть вашей цепи составляет только 3,3 В.
Вот и все. Однако некоторые подробности, вероятно, были бы полезны. Распиновка стандартных заголовков usbasp ISP показана справа (примечание: VTG = VCC в Target, поэтому это напряжение, подаваемое программатором).
Я использовал ATTiny20 в своем дизайне, поэтому я подключил свой вот так (обратите внимание, что я обычно оставляю контакты 4 и 6 отключенными, так как у некоторых программистов они отключены):
Помимо соединений, следующее, о чем нужно беспокоиться, — это соединение 5V.Сейчас уже не 2011 год, и напряжения становятся все ниже и ниже. Тем не менее, для правильного программирования вспышки по-прежнему требуется более 12 В. Таким образом, для меня имеет смысл, что разработчики ATTiny20 пошли на этот компромисс и потребовали программирования напряжения 5 В (минимум 4,5 В, но вы действительно должны использовать 5 В), вместо того, чтобы пытаться установить гигантский зарядный насос на и без того высоко -оптимизированная матрица.
Итак, вам нужно программировать на 5 В, но ваша схема использует другие напряжения. Вот несколько советов, которые у меня есть для разрешения этой ситуации:
- Может ли ваша схема работать при 5В? Все микросхемы, которые я выбрал для своей конкретной конструкции, работали как при напряжении 3,3 В, так и при 5 В. Итак, у меня есть два источника питания платы: основной разъем, который идет к остальной части системы (3,3 В), и кабель программирования ISP (5 В). Я знаю, что у меня никогда не будет обоих подключенных одновременно, так что у меня это работает.
- Подумайте о том, чтобы микроконтроллер был подключен к отдельной шине питания, и используйте переключатель (физический или твердотельный) для переключения между питанием основной платы и питанием ISP.
- Рассмотрим твердотельный переключатель. Это довольно дешево и мало. Вот полный список digikey: https://www.digikey.com/en/products/filter/pmic-power-distribution-switches-load-drivers/726
- Обязательно учтите, что выводы идут к другим устройствам на вашей плате. Когда микроконтроллер не находится в состоянии сброса, он может подавать 5 В на другие компоненты.Либо встроите некоторую логику при запуске программы, чтобы, если вы знаете, что собираетесь запрограммировать микроконтроллер, вы не управляете контактами (например, проводкой управляющих контактов для переключателей также в микроконтроллер), либо подумайте об использовании уровня переводчик что ли.
- Я считаю переводчиков уровня крайней мерой. Они занимают место, электроэнергию и добавляют (часто ненужные) затраты. Обычно гораздо проще использовать продуманную последовательность источников питания или найти логические микросхемы, устойчивые к напряжению 5 В.
- Учтите, что многие буферные ИС (особенно от TI) имеют входы, устойчивые к 5 В, и будут выводить их на своем VCC, который может быть ниже, чем их вход. Они не являются специализированными переводчиками уровней, но могут работать достаточно хорошо.
- Также рассмотрите возможность использования логики с тремя состояниями. Многие трехсторонние драйверы могут обрабатывать напряжение на своем выходном контакте выше, чем их VCC. Это тоже мини-переводчик уровней.
- Не используйте только токоограничивающие резисторы на выходах микроконтроллера. Конечно, это может сработать сегодня, но вы сбрасываете ток через диоды защиты от электростатического разряда микросхемы, которую вы управляете, и это обычно не рекомендуется.Особенно, если это дешевый чип от дешевого поставщика (ST, Shenzen Market и т. Д.), Они, возможно, не проводили тщательного тестирования чипа на защелкивание в этих условиях.
Если у вас все подключено правильно и уровни напряжения правильные, вы можете запустить avrdude и получить следующее красивое приветственное сообщение:
А если еще повезет, то перепрошивка тоже подойдет!
Когда я исследовал использование TPI с моим usbasp, я наткнулся на сообщение, в котором кто-то сказал что-то вроде «зачем тратить деньги на 6-контактный микроконтроллер? Просто используйте <вставьте сюда старый AVR> ».Несмотря на очевидный недостаток необходимости использовать новый интерфейс программирования, я думаю, что есть одна ниша, в которой это невозможно превзойти:
AVR только для TPI — НАИМЕНОВАТЕЛЬНО самые дешевые микроконтроллеры «известных марок», которые вы можете купить. Между ними и семейством PIC10 нет ничего дешевле, пока вы не начнете искать некоторых китайских поставщиков (есть микроконтроллер стоимостью 0,03 доллара в разовой упаковке, который стал довольно популярным). Я выбрал ATTiny20 для своего проекта, потому что был даже дешевле, чем пара дискретных ИС с одним затвором .Мне нужно было выполнить некоторую логику ИЛИ, которую я обычно выполнял бы с дискретными частями. Каждый из них в разовом количестве стоит примерно 0,25 доллара, и мне понадобилось бы как минимум 4 или 5. ATTiny20, который я выбрал, стоил 0,53 долларов. Было дешевле использовать микроконтроллер, чем дискретные логические элементы! В каком мире мы живем.
Старые AVR ISP (особенно ATMega8 и его друзья) теряют актуальность на рынке, когда сталкиваются с давлением со стороны микроконтроллеров на базе ARM Cortex-M.