Sparkfun Pro Micro (5v) как ошибка ISP

arduino-pro-micro arduinoisp

Я пытаюсь использовать Sparkfun Pro Micro (5 В, 16 МГц) в качестве ISP для программирования чипов Attiny (ОС: Windows10Pro). Я следовал инструкциям. Установлен правильный драйвер и добавлены платы Sparkfun в ArduinoIDE:

С помощью Arduino IDE загрузите на него скетч ArduinoISP. Как видите, программисту доступны два варианта:

  1. Arduino как ISP
  2. Arduino Leonardo/Pro Micro в качестве ISP

К сожалению, оба они выдают одну и ту же ошибку:

Sketch uses 28 bytes (2%) of program storage space. Maximum is 1024 bytes.
Global variables use 0 bytes (0%) of dynamic memory, leaving 64 bytes for local variables. Maximum is 64 bytes.
C:\Users\K1\AppData\Local\Arduino15\packages\MicroCore\tools\avrdude\7.1-arduino.1/bin/avrdude -CC:\Users\K1\AppData\Local\Arduino15\packages\MicroCore\hardware\avr\2.3.0/avrdude.conf -v -pattiny13a -cstk500v1 -PCOM16 -b19200 -Uhfuse:w:0xff:m -Ulfuse:w:0b00111010:m -Uflash:w:C:\Users\K1\AppData\Local\Temp\arduino_build_207900/sketch_aug28a.ino.hex:i 

avrdude: Version 7.2
Copyright the AVRDUDE authors;
see https://github.com/avrdudes/avrdude/blob/main/AUTHORS.

System wide configuration file is C:\Users\K1\AppData\Local\Arduino15\packages\MicroCore\hardware\avr\2.3.0\avrdude.conf

Using Port                    : COM16
Using Programmer              : stk500v1
Overriding Baud Rate          : 19200
avrdude stk500_recv() error: programmer is not responding
avrdude stk500_getsync() warning: attempt 1 of 10: not in sync: resp=0x00
avrdude stk500_recv() error: programmer is not responding
avrdude stk500_getsync() warning: attempt 2 of 10: not in sync: resp=0x00
...
     
avrdude done.  Thank you.
the selected serial port 
 does not exist or your board is not connected

Я попробовал avrdude в командной строке с этими параметрами и получил тот же результат:

avrdude -p attiny13a -P COM16 -c avrisp -b 19200 -U flash:w:r.hex -v

Я также обнаружил, что проблема, скорее всего, не имеет ничего общего с:

  • Целевой чип, который я использую: потому что его изменение не имеет никакого эффекта.
  • Проводка: потому что даже если к контактам SPI ProMicro не подключен чип, я получаю ту же ошибку
  • USB-кабель хороший: я могу успешно загрузить скетчи в Pro Micro, но не могу использовать его в качестве ISP, и заменил кабель, чтобы исключить такую возможность.

В этом видео парень легко делает то, что я хочу, и у него нет никаких проблем: https://www.youtube.com/watch?v=7Rz9A9VbDx4

Любые идеи приветствуются.

, 👍0


1 ответ


Лучший ответ:

1

Попался... После двух дней поисков и размышлений наконец нашел решение:

Краткий ответ: В команде avrdude вместо -c avrisp используйте -c arduino:

avrdude -p attiny13a -P COM16 -c arduino -b 19200 -U flash:w:r.hex -v

Развернутый ответ: Моим целевым чипом был ATtiny13a, поэтому мне пришлось использовать MicroCore v2.3.0, единственное ядро, поддерживающее ATtiny13 для Arduino. В отличие от других ядер, в списке programrs.txt этого ядра каждая запись должна иметь строку upload.protocol:

arduinoasispatmega32u4.upload.protocol=

иначе выдаст такую ошибку:

avrdude programmer_not_found() error: cannot find programmer id {upload.protocol}

Я добавил эту строку раньше, чтобы устранить эту ошибку, но, очевидно, с неправильным параметром stk500v1, который я имитировал из записей структуры! Преобразование этого параметра в arduino решило проблему. Вот как должна выглядеть эта запись для ATtiny13 MicroCore v2.3.0 (\packages\MicroCore\hardware\avr\2.3.0\programmers.txt):

arduinoasispatmega32u4.name=Arduino Leo/Micro as ISP
arduinoasispatmega32u4.communication=serial
arduinoasispatmega32u4.protocol=arduino
arduinoasispatmega32u4.upload.protocol=arduino
arduinoasispatmega32u4.speed=19200
arduinoasispatmega32u4.program.protocol=arduino
arduinoasispatmega32u4.program.speed=19200
arduinoasispatmega32u4.program.tool=avrdude
arduinoasispatmega32u4.program.extra_params=-P{serial.port} -b{program.speed}

Для других ядер, таких как ATTinyCore v1.5.2 (\packages\ATTinyCore\hardware\avr\1.5.2\programmers.txt), такая строка не требуется, поэтому эта запись работает нормально:

arduinoasispatmega32u4.name=Arduino Leo/Micro as ISP
arduinoasispatmega32u4.communication=serial
arduinoasispatmega32u4.protocol=arduino
arduinoasispatmega32u4.speed=19200
arduinoasispatmega32u4.program.protocol=arduino
arduinoasispatmega32u4.program.speed=19200
arduinoasispatmega32u4.program.tool=avrdude
arduinoasispatmega32u4.program.extra_params=-P{serial.port} -b{program.speed}

Также вам следует вручную обновить avrdude в ядре Arduino: Загрузите последнюю версию из ЗДЕСЬ и замените ее файлами, связанными с IDE. Если вы не можете их найти, посмотрите ЗДЕСЬ. Если avrdude не обновлен, вы можете получить такую ошибку:

Error during upload using programmer
The uploader process failed

The uploader process failed
The uploader returned an error
avrdude: Version 6.3-20201216
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch
         System wide configuration file is "C:\Users\K1\AppData\Local\arduino15\packages\MicroCore\hardware\avr\2.3.0/avrdude.conf"
avrdude: error at C:\Users\K1\AppData\Local\arduino15\packages\MicroCore\hardware\avr\2.3.0/avrdude.conf:421: syntax error
avrdude: error reading system wide configuration file "C:\Users\K1\AppData\Local\arduino15\packages\MicroCore\hardware\avr\2.3.0/avrdude.conf"

Третье решение: Используйте это приложение с этой конфигурацией:

,