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
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.
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.
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.
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.
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.
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.
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.
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.
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!