[Fehler gefunden]ProMini(Clone): Sketch lässt sich nicht mehr flashen

Hallo zusammen,

ich bin gerade leicht am verzweifeln... Ich habe Anfang des Monats meinen PC aufgerüstet und Windows neu installiert, außerdem hab ich seit mehreren Wochen mit dem Programmieren pausiert. Heute hab ich es wieder in Angriff genommen und nur Probleme gehabt.

Den Sketch, den ich bearbeitet habe, konnte ich vorher mit dem alten System einwandfrei flashen, heute ging es einmal und danach wird in den Flash geschrieben, aber beim Auslesen bricht der Flashvorgang ab.

Ich programmiere und flashe normalerweise mit Platformio über Visual Studio Code, aber kann die Fehler genauso mit der Arduino IDE 1.8.10 und 1.8.9 reproduzieren:

Arduino: 1.8.9 (Windows 10), Board: "Arduino Pro or Pro Mini, ATmega328P (5V, 16 MHz)"

"C:\\Users\\wapjoe\\AppData\\Local\\Arduino15\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino5/bin/avr-size" -A "C:\\Users\\wapjoe\\AppData\\Local\\Temp\\arduino_build_844176/ProMini.ino.elf"
Der Sketch verwendet 14238 Bytes (46%) des Programmspeicherplatzes. Das Maximum sind 30720 Bytes.
Globale Variablen verwenden 1069 Bytes (52%) des dynamischen Speichers, 979 Bytes für lokale Variablen verbleiben. Das Maximum sind 2048 Bytes.
C:\Users\wapjoe\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude -CC:\Users\wapjoe\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf -v -patmega328p -carduino -PCOM3 -b57600 -D -Uflash:w:C:\Users\wapjoe\AppData\Local\Temp\arduino_build_844176/ProMini.ino.hex:i 

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

         System wide configuration file is "C:\Users\wapjoe\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"

         Using Port                    : COM3
         Using Programmer              : arduino
         Overriding Baud Rate          : 57600
         AVR Part                      : ATmega328P
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         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  3600  3600 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 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 : Arduino
         Description     : Arduino
         Hardware Version: 2
         Firmware Version: 1.16
         Vtarget         : 0.0 V
         Varef           : 0.0 V
         Oscillator      : Off
         SCK period      : 0.1 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: reading input file "C:\Users\wapjoe\AppData\Local\Temp\arduino_build_844176/ProMini.ino.hex"
avrdude: writing flash (14238 bytes):

Writing | ################################################## | 100% 7.16s

avrdude: 14238 bytes of flash written
avrdude: verifying flash memory against C:\Users\wapjoe\AppData\Local\Temp\arduino_build_844176/ProMini.ino.hex:
avrdude: load data flash data from input file C:\Users\wapjoe\AppData\Local\Temp\arduino_build_844176/ProMini.ino.hex:
avrdude: input file C:\Users\wapjoe\AppData\Local\Temp\arduino_build_844176/ProMini.ino.hex contains 14238 bytes
avrdude: reading on-chip flash data:

Reading | ################
avrdude: stk500_paged_load(): (a) protocol error, expect=0x14, resp=0x91
avrdude: stk500_cmd(): programmer is out of sync
avr_read(): error reading address 0x0000
    read operation not supported for memory "flash"
avrdude: failed to read all of flash memory, rc=-2
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x01

avrdude done.  Thank you.

Der ausgewählte serielle Port 
 ist nicht vorhanden oder das Board ist nicht angeschlossen

Verwendete Hardware (minimalisiert):
FTDI FT232RL USB zu TTL Serial Adapter
ProMini Clone 16 MHz 5V (ohne CP2102-Adapter)

Der Fehler trat in der bereits verwendeten Schaltung auf, daher habe ich den ProMini außerhalb der Schaltung mit einem neuen FT232RL geflasht = gleicher Fehler, baugleicher neuer ProMini mit dem neuen FT232RL = weiterhin der Fehler.

Nacheinander habe ich alle optionalen Libs und die dazugehörigen Zeilen auskommentiert, ohne Änderung. Schaltung, FT232RL und ProMini schließe ich mittlerweile aus, ich habe eher den Treiber oder irgendeine Windows Einstellung im Verdacht.

Einen leeren Sketch (nur mit leeren setup() und loop()) kompiliert ohne Fehler, Blink kann ich nur flashen wenn ich den Programmer auf AVR ISP oder Aduino ISP stelle, aber nur einmal. Der voreingestellte "AVRISP mkll" auf den Fehler...

Hat irgendeiner eine Idee was das sein kann? Selbst die Fehlerquelle "60 cm vor dem Bildschirm" mag ich nicht ausschließen, bin ich für alle möglichen Lösungsvorschläge offen! :wink: :smiley:

Gruß
Jörg

PS: Sketch-Ordner und benutzerdefinierte Libs jeweils als .zip im Anhang

Einen leeren Sketch (nur mit leeren setup() und loop()) kompiliert ohne Fehler, Blink kann ich nur flashen wenn ich den Programmer auf AVR ISP oder Aduino ISP stelle, aber nur einmal. Der voreingestellte "AVRISP mkll" auf den Fehler...

Eine irrige Annahme!
Die Programmer Einstellung ist egal, wenn du einen USB Uart Adapter verwendest.

Ich vermute:
Dein USB Kabel, oder Port, oder Hub, oder PC ist defekt.

combie:
Eine irrige Annahme!
Die Programmer Einstellung ist egal, wenn du einen USB Uart Adapter verwendest.

Ich vermute:
Dein USB Kabel, oder Port, oder Hub, oder PC ist defekt.

Mit dem Programmer und den Einzelheiten kenne ich mich noch nicht so gut aus, wie du merkst.

USB-Kabel, -Port und verwendete Verlängerung habe ich bereits ausgetauscht.
Hab den Adapter und ProMini direkt am PC angeschlossen, also ohne Verlängerung, Problem bleibt.

Reading | ###
avrdude: stk500_paged_load(): (a) protocol error, expect=0x14, resp=0x5f
#avrdude: stk500_cmd(): programmer is out of sync
avr_read(): error reading address 0x0000
    read operation not supported for memory "flash"
avrdude: failed to read all of flash memory, rc=-2
avrdude: stk500_disable(): protocol error, expect=0x14, resp=0x93

Was mich halt verwirrt ist die Zeile "#avrdude: stk500_cmd(): programmer is out of sync"

Ich hoffe ja nicht dass der PC defekt ist... :o Das teste ich aber gleich mit meinem Laptop.

Am Laptop mit frisch installierter IDE wird der Sketch einwandfrei kompiliert, hier habe ich allerdings Windows 10 noch nicht auf Build 1903 upgedatet, ich teste es nach dem Update erneut. Ich schaue mir morgen noch mal die Treiber und mögliche USB-Einstellungen (u.A. im Bios) an.

wapjoe:
Mit dem Programmer und den Einzelheiten kenne ich mich noch nicht so gut aus, wie du merkst.

Bei der Fehlersuche solltest Du drei Bereiche unterscheiden:

  • Compilierung: Damit meine ich alles, was passiert, wenn Du in der IDE links oben auf das Häkchen klickst.
  • Flashen: Das ist das Kopieren des Programms in den µC-Speicher und das anschließende Zurücklesen und Vergleichen (avrdude).
  • Programmausführung: Damit ist alles gemeint, was zur Laufzeit des Programms passiert. Hier noch nicht relevant.

Wenn Du die Meldung "Der Sketch verwendet ..." siehst, hat die Compilierung funktioniert.

Bei Dir liefert das Vergleichen einen Fehler, möglicherweise funktioniert das Schreiben schon nicht.

Nur mal so zum Sortieren der Gedanken :slight_smile:

agmue:
Bei der Fehlersuche solltest Du drei Bereiche unterscheiden:

  • Compilierung: Damit meine ich alles, was passiert, wenn Du in der IDE links oben auf das Häkchen klickst.
  • Flashen: Das ist das Kopieren des Programms in den µC-Speicher und das anschließende Zurücklesen und Vergleichen (avrdude).
  • Programmausführung: Damit ist alles gemeint, was zur Laufzeit des Programms passiert. Hier noch nicht relevant.

Wenn Du die Meldung "Der Sketch verwendet ..." siehst, hat die Compilierung funktioniert.

Bei Dir liefert das Vergleichen einen Fehler, möglicherweise funktioniert das Schreiben schon nicht.

Nur mal so zum Sortieren der Gedanken :slight_smile:

Ok, soweit hatte ich das schon verstanden, aber danke für die Aufklärung :wink:

Das es beim Schreiben schon Probleme geben könnte, ist gut möglich, kann ich aber nicht gegenprüfen. Ich tippe mittlerweile, bzw. auch schon vorher, auf Windows und/oder USB-Probleme. Ich probiere heute abend mal andere USB-Treiber.

Hab jetzt nochmal alle Ports ausprobiert, ich habe am MB 4 USB 2.0 und 5 USB 3.1 Ports, die 3.1 hatte ich nicht mehr ausprobiert, weil sich der FT232RL anfangs da nicht erkannt wurde, habe wohl nicht lange genug gewartet... :confused:

Also mit der FT232RL scheint mit meinem Mainboard nur teilweise kompatibel zu sein, die 4 als USB 2.0/1.1 deklarierten Ports verursachen den Fehler, aber an alle anderen (USB 3.1) Ports wird der Sketch einwandfrei übertragen und verifiziert, auch mehrmals getestet.

Ich verstehe es ehrlich gesagt nicht, die 2.0 Ports funktionieren ansonsten einwandfrei, aber da es jetzt funktioniert und ich auf die 3.1 ausweichen kann, langt mir das jetzt erstmal. :slight_smile:

Interessantes Phänomen.

In der Hoffnung, meinen Läppi zu schützen, verwende ich einen USB-HUB mit eigenem Netzteil. Nur so als Idee.

Könnte es sein, der Strom am USB 2.0 reicht nicht?

uxomm:
Interessantes Phänomen.

Ja, finde ich auch sehr interessant. :wink:

agmue:
In der Hoffnung, meinen Läppi zu schützen, verwende ich einen USB-HUB mit eigenem Netzteil. Nur so als Idee.

Könnte es sein, der Strom am USB 2.0 reicht nicht?

Ich kann jetzt nicht sagen wie viel Strom der FT232RL zieht und wie viel die USB 2.0 genau liefern, aber mehr und weniger als 500 mA sollten es nicht wirklich sein. Aber wie zuvor schon geschrieben, konnte ich am Laptop am USB 2.0 erfolgreich flashen, nur am Standrechner (vor 3 Wochen aufgerüstet) nicht.

Edit: Am alten Rechner lief es übrigens an USB 2.0 auch noch normal.

Ich probiere das Verhalten aber die Tage auch noch mal mit einem Nano Clone und Mega (Original).

Ein aktiver Hub kann schon Wunder bewirken.
Aber sich genau so gut kontraproduktiv auswirken.

Bisher hat sich USB, in Industrie und Raumfahrt, noch nicht so wirklich durchgesetzt.
Das hat schon Gründe....

combie:
Ein aktiver Hub kann schon Wunder bewirken.
Aber sich genau so gut kontraproduktiv auswirken.

Bisher hat sich USB, in Industrie und Raumfahrt, noch nicht so wirklich durchgesetzt.
Das hat schon Gründe....

Und ein Computer ist auch nur ein Mensch, oder so :smiley:

Mit Industrie und Raumfahrt werden meine bisherigen Basteleien hoffentlich nie was zu tun haben und bisher hatte ich kaum oder nur selten Probleme mit USB.

Mein Rechner sollte eigentlich leistungsstark genug sein, um eine USB 2.0 Buchse zu versorgen, aber wer weiß was der Hersteller da vielleicht verbockt hat... :wink: