Forum: Mikrocontroller und Digitale Elektronik Arduino Bootoader zerschlossen am USB Port - wie das?


von Christian J. (Gast)


Lesenswert?

Hallo,

folgende Beobachtung konnte ich an 3 Mega2560 Board (Originale) 
wiederholt testen und habe Stunden gebraucht was da passiert ist:

Konfiguration:

ich programmiere Ardus nur über einen Ubasp ISP, geht schneller und die 
USB ist frei für ein anderes terminal als diesen eingebauten Kram.

USB Stecker 1: UBasp
USB Stecker 2: USB Interface

Sobald ich beide Stecker im USB Hub drin stecken habe (in genau der 
Sekunde) war es das! Der Arduino ist nicht mehr ansprechbar und nicht 
mehr programmierbar, weder über USB noch über ISP. Erst dachte ich sie 
wären kaptt und habe neue Megas eingelötet. Alle 3 Boards reagierten 
nicht mehr.

Erst wenn ich ihm einen neuen Bootloader über den UsBasp verpasse tut er 
es wieder. Bis ich drauf kam vergingen einige Stunden Sucherei. Die 
Fuses hatten sich komplett zurück gesetzt. Ich weiss nicht genau, ob 
wirklich ein Bootloader übertragen wird in der IDE oder ob nur die Fuses 
gesetzt werden?

Die beiden USB Stecker stecken im gleichen Hub, Spannungsunterschiede 
sind also nicht zu erwarten.

Was passiert da?

Gruss,
Christian

von Thomas E. (thomase)


Lesenswert?

Christian J. schrieb:
> Der Arduino ist nicht mehr ansprechbar und nicht
> mehr programmierbar, weder über USB noch über ISP.

Christian J. schrieb:
> Erst wenn ich ihm einen neuen Bootloader über den UsBasp verpasse tut er
> es wieder.

Das widerspricht sich aber gewaltig.

Wenn der Controller über ISP programmiert wird, wird der gesamte 
Speicher, also auch der Bootloader gelöscht. Dass es nach dem 
Programmieren über ISP mit dem Bootloader nicht mehr geht, ist also 
völlig normal.

Christian J. schrieb:
> Die
> Fuses hatten sich komplett zurück gesetzt. Ich weiss nicht genau, ob
> wirklich ein Bootloader übertragen wird in der IDE oder ob nur die Fuses
> gesetzt werden?

Die Fuses setzen sich nicht selbständig zurück. Genauso werden sie beim 
Programmieren mit einem Hexfile nicht gesetzt.

mfg.

: Bearbeitet durch User
von Christian J. (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Das widerspricht sich aber gewaltig.

Du, es ist genauso wie ich sagte. Und es ist nicht erklärbar. Ich hatte 
das bei einem PIC auch schon mal, dass sich beim Ziehen des USB Steckers 
alles löschte. Der war wie frisch gewaschen. Ursache waren 
Spannungspitzen beim Ziehen des steckers. Erst neu programmieren von 
Fuses und Code behoben das Problem.


>>Die Fuses setzen sich nicht selbständig zurück.

Doch..... das haben sie getan! Indianer Ehrenwort. Da haben 2 Kollegen 
drüber gegrübelt, ich habe den Effekt mehrmals vorgeführt, da er 
reproduzierbar war und nicht sporadisch.

Es stellt sich die Frage: Was passiert, wenn man "Bootloader 
programmieren" drückt in der Arduino IDE? Beim Attiny geht es sehr 
schnell (1s), bei Atmega2560 dauert es fast 10s.

Ich muss es bei jedem frischen AVR machen, da ich die als chip nutze, 
also ohne das blaue Board.

von Thomas E. (thomase)


Lesenswert?

Christian J. schrieb:
> Du, es ist genauso wie ich sagte.

Deine Beobachtungen kann ich nicht überprüfen.

Aber du schreibst in einem Satz, dass sich der Controller über ISP nicht 
mehr anspechen lässt. Im übernächsten Satz verpasst du ihm einen neuen 
Bootloader. Über ISP.

mfg.

: Bearbeitet durch User
von Christian J. (Gast)


Lesenswert?

Thomas Eckmann schrieb:
> Aber du schreibst in einem Satz, dass sich der Controller über ISP nicht
> mehr anspechen lässt. Im übernächsten Satz verpasst du ihm einen neuen
> Bootloader. Über ISP.

Es lässt sich kein programm über ISP mehr einspielen, weil avrdude 
meldet, dass das Target nicht reagiert. Drücke ich aber auf "Bootloader" 
dann macht er es. Das ist ja auch ok, denn bei frischen Chips muss ich 
ja auch erst umstellen auf zb ext Quarz usw. Da meldet er auch dass er 
sie nicht programmieren kann frisch ab Werk.

Testweise habe ich beide USB Geräte auch über einen USB Galvanik-Trenner 
angsteckt. Die Ursache habe ich in der beidseitigen Zuführung von 5V 
vermutet die sowohl über den Serial kommen als auch über den UsBasp.

von Thomas (kosmos)


Lesenswert?

Vielleicht ist die Resetbeschaltung Suboptimal und es kommt während 
dieses Resetvorgangs und etwas geklammert auf Mosi, Miso... zum 
Programmiervorgang. Hört sich fast wie Ponyprog an ;-)

Resetbeschaltung wäre interessant.

: Bearbeitet durch User
von Thomas E. (thomase)


Lesenswert?

Christian J. schrieb:
> Es lässt sich kein programm über ISP mehr einspielen, weil avrdude
> meldet, dass das Target nicht reagiert. Drücke ich aber auf "Bootloader"
> dann macht er es.
Wo drückst du auf Bootloader? In der Arduino IDE? Und dann wird der 
Controller programmiert? Dann ist der Bootloader also drauf.

> Das ist ja auch ok, denn bei frischen Chips muss ich
> ja auch erst umstellen auf zb ext Quarz usw. Da meldet er auch dass er
> sie nicht programmieren kann frisch ab Werk.
Was ist OK? Dass man mit Avrdude nicht drauf zugreifen kann? Das ist 
nicht OK. Zum Einstellen der Fuses muss man drauf zugreifen können. Wenn 
man die Fuses verstellen kann, kann man auch Programmieren. Entweder 
machst du etwas komplett falsch oder dein Programmer ist für die Tonne.

Christian J. schrieb:
> Die Ursache habe ich in der beidseitigen Zuführung von 5V
> vermutet die sowohl über den Serial kommen als auch über den UsBasp.
Ist der Usbasp einer von diesen tollen Programmern, die die 
Zielschaltung mit Spannung versorgen? Da kommt sich natürlich etwas in 
die Quere, wenn die Schaltung über den USB noch zusätzlich versorgt 
wird.
Die Spannungszuführung über den Programmer muss natürlich abgeschaltet 
sein, wenn das Board schon von anderer Seite versorgt wird. Lässt diese 
sich nicht abschalten, ist der Programmer nicht geeignet. Ich stehe auf 
dem Standpunkt, dass alles andere als ein original Atmel-Programmer 
sowieso nicht geeignet ist. Aber das ist nicht Thema dieses Threads. Mit 
einem AVRISP hättest du allerdings keine Probleme.

Thomas O. schrieb:
> Resetbeschaltung wäre interessant.
Ja, die ist ein bisschen merkwürdig, weil über einen Impuls auf einer 
Steuerleitung der RS232 vom USB-Controller, der Controller resetted 
wird, damit er in den Bootloader geht. Das ist aber für ISP kein 
Problem, da der ISP-Programmer die Reset-Leitung permanent auf 0 hält. 
Zum Problem wird die Beschaltung erst z.B. beim Arduino Uno, wenn man 
über Debugwire debuggen will.

mfg.

: Bearbeitet durch User
von Thomas (kosmos)


Lesenswert?

ich vertrete die gleiche Meinung: Ein AVRISP und man hat viel weniger 
Probleme. Wenn aber die Reset Beschaltung nichts taugt weil diese evtl. 
nicht stabil gehalten wird oder während dessen Impulse auf die 
Programmierleitungen geraten kann das zu einem 
"Programmier-/Löschvorgang" führen.

Mach mal ein paar Versuche um das ganze einzugrenzen. Wirst ja noch ein 
paar ATM2560 rumliegen haben ;-) oder diese per HV wieder zurücksetzen 
können.Hast du einen Logic Analyzer damit könntest du mal wärend des 
Abziehen des USB Kabels man die Pins abhörchen Reset und VCC würde ich 
mir mit einem Oszi ansehen.

Der Fehler wird sich schon eingrenzen lassen.

Und gib mal ein paar Infos rüber. Auch ein Bild deiner Platine usw. 
könnte dazu beitragen.

von Christian J. (Gast)


Lesenswert?

Hallo,

das Problem liegt schon länger zuück und ist daher nicht mehr aktuell. 
An einem andereren rechner trat es nie auf.  Ich vermute dass die 
Ursache wie beschrieben auf mangelhafte Hardware zurück geht. An einem 
Original Programmer tritt es ebenfalls nicht auf. Mich  interessierte es 
nur, da dieses Problem eines der Sorte war, die ungelöst blieben und wo 
eine andere Hardware das Problem beseitigte.

Ich hatte dieses Phönomen jedenfalls bei einem PIC programmer aus China 
auch mal......USB weg und er war tot, wie frisch gewaschen, da war 
nichts mehr drauf, alle Bits auf 0xff. Ich rief damals den Supporter von 
Microchip an und er vermutete (!), dass Stromspitzen, die über die 
internen Clamp Dioden laufen "seltsame Effekte" haben könnten. Daher 
sicherte ich Chips im Betrieb gegen solche mehr ab als eigentlich nötig, 
packte auch noch eine RC in die Versorgung mit rein.

>Wenn man die Fuses verstellen kann, kann man auch Programmieren.

Diese Aussage trifft zumindest für die Arduino IDE nicht zu. Der 
Programmiervorgang wird mit einem Fehler abgebrochen, wenn die Fuses 
nicht dem entsprechen was erwartet wird bei einem gekauften Board. Erst 
müssen die stimmen, dann klappt es. Dann kan man mit einem Testboard 
ausprobieren, wenn man die ISP direkt dran steckt an die paar Pins. Ein 
Programm einspielen wird mit no response from target beendet.  Stellst 
du um auf Quarz und hat kein "Testbett" mit Quarz kannst du auhc nicht 
mehr zurück auf internen Takt stellen, zumindest nicht mit dem UsBasp 
Billigprogrammierer.

Da jedoch vieles verborgn wird von dieser IDE lässt sich nicht 
nachvollziehen was die wirklich macht. Boatloader sind Programme, klar. 
Fuses sind Betriebsparameter. Ich brauche keinen Boatloader um mit der 
ISP zu zu programmieren, das kann der Chip allein.

von stefanus (Gast)


Lesenswert?

Moment mal.
Heute um 12:54 beschreibst Du ein Problem und bitetst um Hilfe.
Nichtmal 5 Stunden später heisst es: das Problem liegt schon länger 
zuück und ist daher nicht mehr aktuell.

Ich bin jetzt verärgert, ich helfe Dir heute nicht mehr!

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Naja das sind eben Arduinouser, verwirrt bis zum geht nicht mehr ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.