ich habe ein kleines Problem mit einem Arduino Pro-Mini (eigentlich sogar an 3. Habe 3 Stück und alle zeigen das selbe Verhalten).
Ich habe einen Sketch aufgespielt und dieser läuft auch einwandfrei. Jedoch kann ich jetzt keinen neuen Sketch aufspielen. Es erscheint eine Fehlermeldung "avrdude stk500 getsync .. not in sync"
Nach etwas Recherche habe ich über einen Uno den bootloader neu gebrannt. Danach konnte ich dann auch wieder einen Sketch aufspielen. Jedoch nur genau einmal!
Dann kommt wieder die selbe Fehlermeldung.
Im Grunde muss ich jetzt vor jedem Upload den bootloader flashen,...
Das ist super nervig und ich würde das gerne beheben.
Hat vielleicht jemand eine Idee, woran das liegen könnte?
Mhm, also der DTR pin sieht erstmal korrekt gelötet aus. Wäre auch ziemlich komisch, da es ja bei drei(!) Arduinos das gleiche Problem ist. Da würde ich eine kalte Lötstelle jetzt mal ausschließen.
Benutzen tue ich ein USB CP2102 Break out Adapter, an einem Windows 10 Rechner.
Habe auch schon einen zweiten Adapter und ein anderes USB-Kabel probiert. Sogar einen anderen Rechner...
Nach etwas Recherche habe ich über einen Uno den bootloader neu
gebrannt.
Sind dabei auch die Fuses gesetzt worden? Es könnte sein, dass du zunächst das Problem eines "alten" Bootloaders (und in der IDE nicht "Pro Mini 328P (old bootloader)" gewählt) hattest. Und vielleicht passen nun die Fuses nicht zu dem Bootloader, den du neu geflasht hast?
Kann sich der Bootloader von Arduino selbst überschreiben, wenn im Hex-File der entsprechende Bereich enthalten ist? Das Ergebnis von sowas würde jedenfalls der Fehlerbeschreibung entsprechen …
Er meint, ob du den DTR-Ausgang deines USB-Seriell-Konverters auch an deine Pro Minis angeschlossen hast. Ohne diesen Anschluß kann der PC die Pro Minis nicht resetten um den Bootloader zu starten; man muss dann, während avrdude das Gerät sucht, von Hand den Reset-Knopf drücken ...
Kann man das irgendwo wählen? Ich hab gerade nochmal alles durchgeschaut
und nichts dergleichen gefunden in den Dropdowns der IDE.
Oh, sorry. Die Option gibt es nur beim Arduino Nano.
Wenn der ProMini einen ATMega328 hat, könnte man ihn auch als Nano behandeln. Ich habe schon selbst den Optiboot auf einen ProMini gebracht, ohne mir neue Probleme einzufangen.
Er meint, ob du den DTR-Ausgang deines USB-Seriell-Konverters auch an
deine Pro Minis angeschlossen hast. Ohne diesen Anschluß kann der PC die
Pro Minis nicht resetten um den Bootloader zu starten;
Da er ein mal per USB flashen kann, dürfte DTR vorhanden sein.
man muss dann,
während avrdude das Gerät sucht, von Hand den Reset-Knopf drücken ...
Das kann man ganz simpel ausprobieren.
Die Beschreibung, er könne einmal flashen, lässt mir den Verdacht aufkommen, dass der Bootloader auf dem µC nicht zur IDE passt und etwas überschrieben oder der Zeiger verbogen wird.
Da er ein mal per USB flashen kann, dürfte DTR vorhanden sein.
Er kann nur einmal nach Aufspielen eines neuen Bootloaders eine Anwendung flashen. Solange nur der Bootloader im Flash ist braucht es den DTR-Reset noch nicht, weil der Bootloader sich immer nur wieder selbst neu startet. Insofern ist die Antwort auf die Frage nach der Verkabelung von DTR schon interessant.
Im Grunde muss ich jetzt vor jedem Upload den bootloader flashen,...
Als ich vor 6 Monaten oder so meinen ersten Arduino Pro Mini in Betrieb genommen habe, was das auch so.
Ursache war der fehlerhafte Bootlader der damals neuesten Arduino IDE. Der vertrug sich nicht mit der Watchdog-Funktion des µP, die ich in meiner Anwendung hatte: Sowie die Anwendung einmal unter diesem Bootlader gestartet worden war, war Schluss mit lustig und ich musste den Bootlader neu flashen.
Der optiboot_atmega328-2022-07-18.hex hat das Problem gelöst.
Im Grunde muss ich jetzt vor jedem Upload den bootloader flashen,...
Als ich vor 6 Monaten oder so meinen ersten Arduino Pro Mini in Betrieb
genommen habe, was das auch so.
Ursache war der fehlerhafte Bootlader der damals neuesten Arduino IDE.
Der vertrug sich nicht mit der Watchdog-Funktion des µP, die ich in
meiner Anwendung hatte: Sowie die Anwendung einmal unter diesem
Bootlader gestartet worden war, war Schluss mit lustig und ich musste
den Bootlader neu flashen.
Der optiboot_atmega328-2022-07-18.hex hat das Problem gelöst.
Interessant!
Mhm…
Wie bekomme ich diesen optiboot auf meine arduinos?
Kann ich den fehlerhaften bootloader damit ersetzen?
Hab das noch nie gemacht…
ie bekomme ich diesen optiboot auf meine arduinos?
Kann ich den fehlerhaften bootloader damit ersetzen?
Hab das noch nie gemacht…
Ja, du kannst ihn ersetzen, es gibt in der Community diverse Bootloader.
Du hast aber doch geschrieben, dass du schon mehrmals den Bootloader geflasht hast? Du musst nur irgendwo den Dateinamen eingeben oder die von der IDE vorgesehene Datei mit dem Optiboot überschreiben - dazu habe ich mir keine Details gemerkt, muss wohl ganz einfach gewesen sein.
Ich flashe nicht mit einem zweiten Arduino, sondern mit einem ISP-Programmer von Diamex. Seinerzeit habe ich mir dazu folgenden Text in die Knowhow-Datei geschrieben:
"In der Arduino IDE 2.1.0 als Programmer den Typ "Atmel STK500 development board" wählen.
Mit dieser Konfiguration funktioniert der Diamex Prog-S2 beim Sparkfun-Board (Arduino Pro Mini), wenn er gemäß seiner Anleitung an den ISP-Pins (MOSI usw.) angeschlossen ist. Beim Hochladen von Programmen in der Arduino IDE die Option "Upload using programmer" wählen, nicht "Upload". Auch das Hochladen des von der IDE vorgesehenen Bootloaders funktioniert und ein danach hochgeladenes Programm läuft.
Clone-Boards haben u. U. eine CPU, die eine falsche Prozessor-ID liefert (Billig-Prozessor eingebaut?). Dann muss man in programmers.txt bei dem Programmer die Option -F ergänzen, um die falsche ID zu ignorieren:
C:\Users*dein Name*\AppData\Local\Arduino15\packages\arduino\hardware\avr*1.8.6*\programmers.txt
stk500.program.extra_params=-P{serial.port} -F
Die IDE meldet dann beim Hochladen in roter Schrift, welche ID eigentlich korrekt wäre, das Hochladen funktioniert aber dennoch."
Clone-Boards haben u. U. eine CPU, die eine falsche Prozessor-ID liefert
(Billig-Prozessor eingebaut?). Dann muss man in programmers.txt bei dem
Programmer die Option -F ergänzen, um die falsche ID zu ignorieren:
Häää....
Es mag den ein oder anderen AVR geben, wo die Signatur Bytes kaputt sind, und man -F verwenden muss.
Das ist aber so selten, das ich es noch nie erleben durfte.
Clone-Boards haben u. U. eine CPU, die eine falsche Prozessor-ID
Das habe ich auch noch nie erlebt.
Und auch noch nie davon gehört.
Kannst du einen Nachweis dafür liefern?
Nur ein einziges halbwegs authentisches Beispiel.
Es mag den ein oder anderen AVR geben, wo die Signatur Bytes kaputt
sind, und man -F verwenden muss.
Das ist aber so selten, das ich es noch nie erleben durfte.
Von "kaputt" habe ich nichts gesagt, ich habe "falsch" gesagt. Kaputt wäre z. B. 0x000000 oder 0xFFFFFF oder ein ähnliches Muster, das gar keine echte ID ist.
Clone-Boards haben u. U. eine CPU, die eine falsche Prozessor-ID
Das habe ich auch noch nie erlebt.
Und auch noch nie davon gehört.
Kannst du einen Nachweis dafür liefern?
Nur ein einziges halbwegs authentisches Beispiel.
Ich habe beim Chinamann einen Pro Mini mit 328P bestellt und auf dem Chip stand auch 328P. Die Signatur war aber die des 328.
Ok, angenommen, es war ein 328 drin (kann ich nicht mehr nachprüfen), dann war die Signatur richtig, aber die Beschriftung falsch - aber wo ist der Unterschied?