Перепрошить usbasp с помощью arduino nano

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Как обновить прошивку внутрисхемного программатора USBASP

Программатор USBASP является важным инструментом для разработчиков встраиваемых систем на основе микроконтроллеров. Это USB ICSP (внутрисхемный программатор с последовательным интерфейсом), который позволяет разработчикам легко загружать микропрограммы/загрузчики в микроконтроллеры AVR. В отличие от того последовательных программаторов, таких как преобразователи USB-TTL, он не использует выделенный чип, поскольку работает на Atmega88 (или Atmega8), и использует драйвер USB только для прошивки без специального USB-контроллера.

Хотя такой подход к использованию USB-драйвера только для микропрограммного обеспечения повышает его совместимость, но он также представляет собой серьезную проблему, поскольку требует регулярных обновлений для совместимости с новыми технологиями в области программирования микроконтроллеров. Одной из таких новых технологий является интерфейс Tiny Programming Interface (TPI), который позволяет внешним программаторам получать доступ к энергонезависимой памяти (NVM) некоторых низкоуровневых микроконтроллеров Atmel, таких как серия ATtiny.

Хотя такие функции, как TPI, существуют уже некоторое время, использование программатора USBASP в этом плане все еще является проблемой, поскольку как старые, так и новые USBASP-устройства требуют обновления прошивки перед использованием. Чтобы помочь пользователям, которым нужна эта функция, в сегодняшнем материале будет рассказано о процессе обновления прошивки вашего программатора USBASP до последней версии.

Для данного процесса нам понадобится плата Arduino. Также следует заметить, что программаторы USBASP, независимо от марки, обычно имеют одинаковую конфигурацию, поэтому это руководство должно работать, независимо от типа или марки программаторов, которые у вас имеются.

Для загрузки прошивки в USBASP требуется другой программатор. Для сегодняшнего примера мы будем использовать Arduino Uno в качестве этого программатора. Чтобы сделать Arduino программатором, нам нужно загрузить скетч, доступный среди примеров в Arduino IDE, на плату Arduino. Сначала перейдите в Файл – Примеры – ArduinoISP (File – Examples – ArduinoISP), затем подключите плату Arduino к вашему ПК. Выберите порт и тип платы и нажмите «Загрузить» (Upload). После этого плата Arduino готова стать программатором.

Далее нам нужно подключить USBASP к плате Arduino. Используя перемычки и макетную плату (при необходимости) соедините плату Arduino и устройство USBASP, как показано на следующей схеме.

Соответствие выводов следующее:

5v — VCC
GND — GND
D13 — SCK
D12 — MISO
D11 — MOSI
D10 — RESET

После подключения есть еще одна вещь, которую нам нужно сделать, это замкнуть перемычку JP2 (показана далее) на плате USBASP. Без этого мы не сможем загрузить прошивку на устройство. Замкните перемычку с помощью припоя или внешних перемычек. После этого мы будем готовы загрузить прошивку.

Начнем с загрузки прошивки. Репозиторий, содержащий версию прошивки с поддержкой TPI, имеется на веб-сайте Thomas Fischl (https://www.fischl.de/usbasp/).

Ключевым компонентом процесса обновления прошивки является AVRDUDE. Если вы знакомы с Arduino IDE, вы наверняка видели упоминание его во время загрузки кода. AVRDUDE – это утилита для загрузки и управления содержимым ПЗУ и ЭСППЗУ микроконтроллеров AVR с использованием метода внутрисистемного программирования (ISP). Самый простой способ получить AVRDUDE – загрузить его исполняемый файл, расположенный в папке Arduino /Java/hardware/tools/avr/bin/. Как только вы это сделаете, следующим шагом будет поиск файла конфигурации; Файл avrdude.conf, который будет находиться в каталоге Arduino /Java/hardware/tools/avr/etc/.

Поместите эти два файла (исполняемый файл AVRdude и файл конфигурации) в папку вместе с файлом .hex только что загруженной прошивки USBasp. Это поможет сократить длину финальной команды. После этого подключите Arduino с подключенным к нему программатором USBasp к компьютеру и запомните порт, который был назначен для Arduino вашим компьютером. Наконец, откройте окно терминала, перейдите в папку, которую мы создали ранее, и выполните следующую команду.

Убедитесь, что вы ввели правильный порт после опции -P. Если все пройдет без какого-либо сообщения об ошибке, значит, на вашем USBASP установлена последняя версия прошивки, и он имеет новый функционал.

Источник

How to Update the Firmware on a Cheap USBasp-Clone

Introduction: How to Update the Firmware on a Cheap USBasp-Clone

This is a small guide to flashing new firmware onto a USBasp-clone like mine. This guide is specifically written for the USBasp-clone seen in the pictures, however it should still work with others. The wiring is shown on step 5, there is a TL;DR on step 9.

Step 1: ​The Problem

Avrdude tells me that the programmer I am using has outdated firmware. The normal jumper for self-programming does not exist on my board. Here is how to fix that. Schematics for the USBasp can be found at fischl.de.

Step 2: Materials Needed

  • A soldering iron
  • An Arduino (preferably Nano)
  • Some jumper wires
  • A PC with the Arduino IDE and avrdude installed

Step 3: The Solution

In order for us to flash new firmware onto the ATmega8, we need to gain control of its RESET pin. Normally, a jumper on the USBasp can be closed to enable self-programming, however the manufacturer of my board did not include one.

On the ATmega8, the RESET pin is pin 29, the fourth pin on the top from the left. It is connected to a 10k pull-up resistor to 5V. We have to connect it to pin 5 of the ICSP header.

We could try to solder a wire directly onto the resistor or the pin itself, however it is tedious and can damage your board. (I tried it and ripped off the pull-up resistor, I don’t recommend it) Also, there is a much easier way!

Although manufacturer did not include a real jumper to enable self-programming, he did put a header underneath the microcontroller. We can simply solder a wire across and.

Step 4: Voilà!

We have connected the two reset pins! The two holes on the bottom connect pin 29 and pin 14 of the microcontroller.

Step 5: Setting Up the Arduino

To flash the new firmware onto the programmer, we need another programmer, in this case an Arduino with the ArduinoISP sketch on it. Just to make sure that your setup is the same, please uncomment line 81

Now connect the Arduino with the ICSP header on your programmer.

The USBasp remains unplugged from the PC.

Open a terminal and type

If everything goes right, avrdude should print out some information about the ATmega8 (fuses, signature, etc.)

Step 6: Flashing the ATmega8

To flash the chip, we still need the firmware. Head over to fisch.de and download the newest version. Extract the archive and navigate to it using the shell.

Compiling the code did not work for me, but fortunately the archive contains all the compiled programs under

Here you should see three .hex files. Pick the one with the same name as your chip. My programmer uses an ATmega8, so I picked

With a working connection to the ATmega8, flashing it should require only typing

If everything was done correctly, avrdude should write and verify the selected firmware.

Step 7: Making Sure the Programmer Works

To use the USBasp as a programmer again, we have to remove the connection between pin 29 and pin 14. Cutting the jumper on the bottom should suffice, however removing it cannot hurt either.

You can try it out by plugging it back into the PC and typing

Even if avrdude cannot reach the target, it should at least acknowledge the new firmware of our programmer.

Step 8: Troubleshooting

Should avrdude show an error like this, it probably has something to do with the auto-reset feature of the Arduino. To circumvent this, please add a capacitor between RESET and GND of the Arduino. It is generally recommended to use a 10µF capacitor, however in my case, a 100µF capacitor worked just fine.

Should you get an error like

or an invalid signature is returned, please check your wiring. I had a problem with my power cables rusting and not conducting electricity anymore. I recommend checking all jumper wires beforehand.

Also make sure to switch pin 11 and pin 12 on the Arduino, if the problem persists.

Please also make sure to set the correct baud rate for the Arduino as ISP, 19200. It can be set with the option

If you have any questions or have spotted a mistake, please let me know :)

Step 9: TL;DR

  1. Solder a wire across the two pins on the bottom of the board
  2. Set up an Arduino as ISP, making sure to enable the old wiring schema
  3. Connect the Arduino to the programmer through the ICSP header
  4. Flash the new firmware onto the programmer
  5. Remove the connection on the bottom
  6. Don’t rip off any SMD resistors

Be the First to Share

Did you make this project? Share it with us!

Recommendations

Plywood Contest

Back to School: Student Design Challenge

Cheese Challenge

10 Comments

Hi there!
I have the same USBasp, as you mention. I put a bit of solder between the two resets pins. Im using an Arduino Mega 2560, but ‘im get stuck in the step 5, when run avrdude there’s no response from the USBasp. I used pins as you mention, then flip pins for MISO to MOSI (as said by Andromeda45), and then tried with to 51, 50, 52, but is always the same.
What I’m doing wrong? is the USBasp crap?

Reply 1 year ago

Oops, finally got a microscope, the chip is an ATmega8L and firmware loaded fine. Only problem: Avrdudess won’t recognize it, The mfr code is wrong, but Arduino IDE will use it to upload sketches just fine.

Question 1 year ago

I have a usbasp with an atmega48p and cannot compile the firmware for 2011-05-28. I believe the problem is that gcc has changed. I know that the atmega88 is in the same family, but the hex file for it is too big for the 48? (usbasp.atmega88.2011-05-28.hex: 4,716 / 4,096 Bytes (115.14%)). Does this mean if my usbasp has an atmeg48 I won’t be able to upgrade it to use with an attiny10?

Interesting instructable!
Anyway, depending on the clone, it might not be a good idea to «upgrade» the firmware. According to this thread:
https://www.avrfreaks.net/forum/upgrade-usbasp-firmware-arduinoisp
The Chinese firmware in the clones might be better than the one in https://www.fischl.de/usbasp/, as it would adjust automatically the speed, so you can ignore the «cannot set sck period. please check for usbasp firmware update» warning

Thank you for a great guide. I have almost the same programmer, just the programming jumpers are brought out so I could just use one cable to connect these (correctly connected if blue led on the programmer turns off when avrdude queries the board). I did have some issues understanding how exactly to connect the wires, so when i finally managed to update the firmware, i took a few pictures. Trying to post them here now in a hope they might help someone

Thanks, I too have a BATEmcu EvUSBasp. Following your instructions I flashed the latest firmware (usbasp.atmega8.2011-05-28.hex) using an Arduino Nano as ISP. I’m pretty sure flashing worked, it successfully verified «verifying flash memory against usbasp.atmega8.2011-05-28.hex: . 4700 bytes of flash verified». However, I still get the message «warning: cannot set sck period. please check for usbasp firmware update.» when using it. I’m not sure the firmware is actually the issue here.

Thank you for a most awesome guide:-). I had to swap pins 11 & 12, but I did have a copy Arduino Nano based on the 328P, with a CH340 USB interface. My ASP was exactly same as your BAITE one described here, and because if this @RussellA26 the direct connection will not work!
My ASP now takes 2 seconds to upload a HEX, whereas before it took a staggering 10 seconds to upload the same HEX, got to love 1.5MHz! Yip Yah!

Dear i have one question? If i burn the atmega8.hex file to atmega8 already bootloaded not programmed new ic using a programmer. if i make my own usbasp using this atmega8 it my work or not?

Thanks! I bought one of these with the old firmware and I needed to update it. Worked great.

I too had the build errors, but from looking at them I think it’d be fairly easy to fix — there’d need to be a «const» added on the lines specified. I didn’t bother, though, so I can’t confirm that.

One tip: Once the Arduino-as-ISP is programmed (and not before!), you can plug the two ICSP headers together rather than worry about pin numbers on the Arduino side. The pins are broken out to that header, so if you have that 6-pin ICSP cable it makes it a lot easier.

Also, my board has a 3.3/5v header and a JP2 and JP3 (the latter two are not installed). For that case, JP2 seems to be the one to short for self-program.

Источник

Adblock
detector