Arduino IDE не может запрограммировать мой Arduino Pro Micro

У меня много Arduino Pro Micros, которые я не могу запрограммировать через Arduino IDE.

У меня Windows.

Я использую информацию о плате SparkFun Pro Micro, загруженную с веб-сайта SparkFun.

Я попытался вручную переназначить COM-порт Pro Micro в диспетчере устройств. Кажется, нет никакой разницы, нахожусь ли я на COM1 или COM255.

Если я использую Arduino ISP или USBASP для записи загрузчика на проблемный Pro Micro, обычно требуется еще одно или два программирования USB, но это все.

Когда они попадают в это проблемное состояние, они все еще выполняют свой код (например, я вижу, как на скетче Blink мигает мой светодиод), их просто нельзя перепрограммировать. Я даже могу открыть их последовательную связь.

Подробный вывод в процессе загрузки с первой попытки дает следующее:

PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
PORTS {COM1, COM2, } / {COM1, COM2, } => {}
Uploading using selected port: COM2
C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega32u4 -cavr109 -PCOM2 -b57600 -D -Uflash:w:C:\Users\Thompson\AppData\Local\Temp\arduino_build_668056/BareMinimum.ino.hex:i 

avrdude: Version 6.3-20171130
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM2
         Using Programmer              : avr109
         Overriding Baud Rate          : 57600
         AVR Part                      : ATmega32U4
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PA0
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page                       Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  9000  9000 0x00 0x00
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0     0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0     0 0x00 0x00

         Programmer Type : butterfly
         Description     : Atmel AppNote AVR109 Boot Loader

Connecting to programmer: .avrdude: butterfly_recv(): programmer is not responding
avrdude: butterfly_recv(): programmer is not responding

Последняя строка зависает на неопределенный срок. Я закрываю и снова открываю Arduino IDE и пытаюсь повторно загрузить, и вот мой результат:

processing.app.debug.RunnerException
        at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:160)
        at cc.arduino.UploaderUtils.upload(UploaderUtils.java:82)
        at processing.app.SketchController.upload(SketchController.java:736)
        at processing.app.SketchController.exportApplet(SketchController.java:703)
        at processing.app.Editor$DefaultExportHandler.run(Editor.java:2039)
        at java.lang.Thread.run(Thread.java:748)
    Caused by: processing.app.SerialException: Error touching serial port 'COM2'.
        at processing.app.Serial.touchForCDCReset(Serial.java:107)
        at cc.arduino.packages.uploaders.SerialUploader.uploadUsingPreferences(SerialUploader.java:144)
        ... 5 more
    Caused by: jssc.SerialPortException: Port name - COM2; Method name - openPort(); Exception type - Port not found.
        at jssc.SerialPort.openPort(SerialPort.java:167)
        at processing.app.Serial.touchForCDCReset(Serial.java:101)
        ... 6 more

Это точно такое же сообщение (конечно, с другим номером COM) воспроизводится на любой машине Windows, с которой я пытаюсь это сделать.

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

Все ли мои Pro Micro мертвы? Что-то не так с IDE? Есть ли альтернативная IDE, от которой я могу получить второе мнение?

EDIT: обновление; Я установил Atom с PlatformIO и смог написать несколько скетчей для Arduino Pro Mini. Я попытался выполнить те же скетчи на Arduino Pro Micro и получил ту же ошибку и зависание: программист не отвечает

, 👍0

Обсуждение

у Micro есть MCU с собственным USB-портом, управляемым скетчем (часть ядра Arduino). если скетч завис, USB не обрабатывается. затем вы должны активировать загрузчик путем сброса или двойного сброса, @Juraj

Это действительно полезная информация. Значит, вы имеете в виду, что если у меня есть десятисекундная задержка в моей основной функции, последовательный порт будет обрабатываться только один раз каждые десять секунд?, @Bo Thompson

нет. он работает с прерыванием, @Juraj


1 ответ


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

0

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

,

Можно принять свой собственный ответ как решение проблемы., @VE7JRO