Servus,
ich versuche einen ATMega128 mit einem AVR Dragon über ISP zu flashen.
Der Mikrocontroller befindet sich auf einem MR-C3024 Board von einem
Robonova (http://www.robonova.de/store/product.php?productid=16147).
Dazu habe ich dann ein Anschlusskabel vom Dragon zum Board gebastelt.
Das ganze lief lange Zeit auch einwandfrei und ließ sich problemlos
flashen.
Seit dem letzten Anschließen kommt beim flashen allerdings immer
folgende Fehlermeldung:
Failed to enter programming mode. ispEnterProgMode: Error status
received: Got 0xc0, expected 0x00, ModuleName: TCF (TCF command:
Device:startSession failed.)
Beim lesen der Device Signature im Device Programming kommt folgender
Fehler:
Unable to enter programming mode.
Please verify device selection, interface settings, target power and
connections to the target device.
Der ISP Takt ist unverändert bei 250kHz (der Mikrocontroller läuft mit
7,nochwas MHz) und das Kabel habe ich auch überprüft. Der Roboter
arbeitet einzeln einwandfrei das letzte Programm ab und der AVR Dragon
wird vom PC auch problemlos erkannt. So auf den ersten Blick scheinen
beide also noch zu funktionieren.
Hat jemand eine Idee, warum das Ganze jetzt plötzlich nicht mehr
funktioniert?
Ich hatte es mal, dass beim programmieren mit einem Adapterkabel
irgendwelcher Muell beim flashen mit reingekommen ist.
Avrdude hat mir das mit einem verify error mitgeteilt.
Danach ging nichts mehr mit ISP.
Mit HV Programming die fuses wieder gerade gebogen und die Welt war in
Ordnung.
ju
@Gubbel
Habe mich dem letzt auch ISP und Jtag ausversehen abgeschaltet, da
bleibt nur HV-Programmierung um die Fuses wieder zu setzen.
Must halt einen 40poligen Sockel und Stiftleisten einlöten auf dem
Dragon.
Wie im Figur 11 verbinden und HVPP Programmieren wählen im Programmer.
http://www.atmel.no/webdoc/avrdragon/avrdragon.SCKT3100A3.html
Bissel gefummel aber hat geholfen.
Erstmal vielen Dank für eure Antworten. Ich habe mal ein Bild von dem
ganzen Aufbau angehängt.
Wie funktioniert die HV Programmierung denn mit externen Boards?
"To avoid damaging the Target Board, the AVR Dragon or both, it is
recommended to only use HVSP mode on devices placed in the 28/40 pin DIP
socket on the AVR Prototype area on the AVR Dragon."
"Extreme care should be taken if using HVSP mode to program an AVR
device on an external target. The HVSP lines do not have level
converters, so it is important that the target board is powered by the
AVR Dragon VCC header, and not using another power supply. In addition
the AVR Dragon will apply 12V to the reset pin, so it is important that
the target board is designed to handle 12V on this line."
(http://www.atmel.no/webdoc/avrdragon/avrdragon.hvsp_description.html)
Der Roboter und der Dragon gehören der Fachhochschule, von daher klingt
das erstmal sehr abschreckend.
Michael_ schrieb:> Ist es wirklich auch die gleiche Platine, wo es schon mal gelaufen ist?
Ja, gleiche Platine, gleiches Kabel, da wurde nichts verändert.
Funktioniert JTAG denn möglicherweise noch oder wird das immer mit ISP
zusammen abgeschaltet.
>HV Programmierung denn mit externen Boards?
Lass das mal lieber sein, weil du dir das Board oder sogar den Dragon
zerschiessen kannst.
Also wenn du dir sicher bist das Fusebit SPIEN nicht angerührt zu haben
prüf noch mal dein Anschlusskabel.
HVPP würde ich nur machen wenn der Chip nicht aufgelötet ist und in
deinem fall ein Spezialadapter bräuchtest um den dann auf dem Dragon zu
stöpseln.
>Hat jemand eine Idee, warum das Ganze jetzt plötzlich nicht mehr>funktioniert?
Kabelbruch? Kommt recht haufig vor wenn das ISP Kabel
relativ viel bewegt oder gesteckt wird. Das bricht dann
irgendwann am Pfostenverbinder.
Man kann sich übrigends nicht per ISP das ISP wegfusen.
Klaus schrieb:> Fusebit SPIEN nicht angerührt
Da habe ich auf jeden Fall nicht rumgespielt.
Klaus schrieb:> prüf noch mal dein Anschlusskabelholger schrieb:> Kabelbruch?
Ich habe das Kabel gerade nochmal ein zweites mal durchgemessen.
Zwischen Dragon und Board gibt es einwandfreien Kontakt. Daran scheint
es nicht zu liegen.
Ich stehe hier völlig aufm Schlauch. Ideen?
Hast du mit dem Debugger von Atmel Studio auf der Zielhardware debuggt
und nicht sauber beendet? D.h. ist evtl. noch die DWEN-Fuse gesetzt?
In diesem Fall musst du noch einmal den Debugger anwerfen ( nur
anwerfen, nicht losrennen lassen) und sauber beenden. Der entsprechende
Befehl im Menü des Atmel Studios heißt sinngemäß "Debuggen beenden und
DebugWire zurücksetzen"
Debuggen über ISP geht nicht beim Dragon. Wenn ich auf Start Debugging
and Break klicke, kommt die Fehlermeldung, dass es nicht unterstützt
wird. Debuggen beenden bleibt dann auch ausgegraut.
Prinzipiell ja. Man kann jedoch das JTAG-Interface auch stilllegen (über
die JTAGEN-Fuse). Atmel empfiehlt, das zu tun, wenn kein JTAG
verwedendet werden soll. In dem Fall wird JTAG auch nicht funktionieren.
Kommt auf nen Versuch an.
Gerade nochmal Manual geguckt: ATmega128 hat kein DWEN-Fuse. D.h.
damit könnte dann nur noch SPIEN rückgesetzt sein, das wiederum geht
aber nicht über das SPI, damit man sich nicht selbst aussperrt.
Wie hast du dir denn den SPI-Adapter gebaut? 6 Stecker auf die
entsprechenden Pins des C3024 Board? Dann kannst du auf dieselbe Machart
die JTAG-Pins anstöpseln. Wie hast du Reset angeschlossen? Das wird lt.
Schematic vom Board nicht auf einen Pfostenstecker geführt?
Andere Fehlerursachen könnten noch sein
- zu geringe Spannung auf dem Zielsystem ( weniger als 2.7 V )
- Andere Komponenten, die die MOSI- MISO- oder SCK-Leitung treiben
katastrophenheinz schrieb:> Andere Fehlerursachen könnten noch sein> - zu geringe Spannung auf dem Zielsystem ( weniger als 2.7 V )> - Andere Komponenten, die die MOSI- MISO- oder SCK-Leitung treiben
Du bist da im Irrtum. Deshalb hatte ich weiter oben gefragt, ob es auf
diesem Board schon funktioniert hatte.
Der 128 wird nicht über MOSI/MISO programmiert. Rest steht im
Datenblatt.
katastrophenheinz schrieb:> Gerade nochmal Manual geguckt: ATmega128 hat kein DWEN-Fuse. D.h.> damit könnte dann nur noch SPIEN rückgesetzt sein, das wiederum geht> aber nicht über das SPI, damit man sich nicht selbst aussperrt.
D.h. verfused kann er eigentlich nicht sein?
katastrophenheinz schrieb:> 6 Stecker auf die> entsprechenden Pins des C3024 Board? Dann kannst du auf dieselbe Machart> die JTAG-Pins anstöpseln.
Ja genau, das werde ich versuchen.
katastrophenheinz schrieb:> Wie hast du Reset angeschlossen?
Neben dem µC ist ein Kontakt vorgesehen, da habe ich einen
Pfostenstecker angelötet.
katastrophenheinz schrieb:> zu geringe Spannung auf dem Zielsystem ( weniger als 2.7 V )
Das Board wird von einem seperaten Netzteil versorgt. Die Targetspannung
wird ja auch problemlos erkannt (4,9V).
Michael_ schrieb:> katastrophenheinz schrieb:>> Andere Fehlerursachen könnten noch sein>> - zu geringe Spannung auf dem Zielsystem ( weniger als 2.7 V )>> - Andere Komponenten, die die MOSI- MISO- oder SCK-Leitung treiben>> Du bist da im Irrtum. Deshalb hatte ich weiter oben gefragt, ob es auf> diesem Board schon funktioniert hatte.> Der 128 wird nicht über MOSI/MISO programmiert. Rest steht im> Datenblatt.
Ja, statt MOSI/MISO benutzt der µC Rx/Tx. Ich wüsste aber nicht was da
plötzlich in die Quere kommen sollte. Mein Programm spielt da nicht rum.
Beim flashen zuckt der Roboter auch immer mit allen Servos, auf den
Ausgängen scheint also ein zufälliger Puls generiert zu werden. Nach so
etwa 1 Sekunde resettet er sich dann wieder von selbst und das Programm
läuft wieder. Vielleicht hilft das ja noch für die Fehlersuche.
> D.h. verfused kann er eigentlich nicht sein?
lt. Atmel Datenblatt nicht.
Gibt es noch andere Lasten oder Treiber an/auf den Leitungen von PE1,
PE0 und PB1 die ggf die Signale vom ISP verfälschen?
Wie ist die Kapazität des Elkos C4 ( lt. Datenblatt am Reset-Pin) ?
Vielleicht zum Programmieren mal abklemmen oder durch einen kleineren
ersetzen
Wenn du damit nicht weiterkommst, dann würde ich es über den
JTAG-Adapter versuchen. Oder von einem Kumpel einen anderen
Programmierer ausleihen.
katastrophenheinz schrieb:> Gibt es noch andere Lasten oder Treiber an/auf den Leitungen von PE1,> PE0 und PB1 die ggf die Signale vom ISP verfälschen?
Nein, ich denke nicht.
katastrophenheinz schrieb:> Wie ist die Kapazität des Elkos C4 ( lt. Datenblatt am Reset-Pin) ?> Vielleicht zum Programmieren mal abklemmen oder durch einen kleineren> ersetzen
Laut Schaltplan
(http://davidbuckley.net/DB/RoboNova/RoboNova_files/C3024.jpg) sinds
10mF. Da das nicht mein Board ist, möchte ich da aber erstmal nicht dran
rumlöten.
Jobst M. schrieb:> Der Quarz schwingt?
Ja sicher, der Roboter läuft ja mit dem alten Programm einwandfrei.
Jobst M. schrieb:> Trotzdem schon mal mit kleineren Geschwindigkeiten als 250KHz probiert?
Ja, hilft auch nichts.
So, ich habe jetzt JTAG mal ausprobiert. Funktioniert leider genauso
wenig:
[ERROR] JTAGID not valid. Debugger command enterProgMode failed.,
ModuleName: TCF (TCF command: Device:startSession failed.)
bzw.
Unable to enter programming mode.
Please verify device selection, interface settings, target power and
connections to the target device.
--------------------
Wild zappeln tut der Roboter allerdings nur wenn die Reset-Leitung
angeschlossen ist (ist bei JTAG wohl optional). Das Problem scheint also
irgendwie mit diesem Reset zu tun zu haben. Das debugWire läuft ja wohl
auch darüber. Aber gibt es debugWire bei dem µC überhaupt? Im Datenblatt
ist dazu nichts zu finden.
>> Wie ist die Kapazität des Elkos C4 ( lt. Datenblatt am Reset-Pin) ?>> Vielleicht zum Programmieren mal abklemmen oder durch einen kleineren>> ersetzen>Laut Schaltplan>(http://davidbuckley.net/DB/RoboNova/RoboNova_files/C3024.jpg) sinds>10mF.
Der Kondensator ist viel zu groß. Löt den mal aus.
>Aber gibt es debugWire bei dem µC überhaupt?
Beim ATMega128 gibt es das nicht.
Jobst M. schrieb:> Gubbel schrieb:>> MISO -> TX (PE1)>> VTG -> VCC>> SCK -> SCK (PB1)>> MOSI -> RX (PE0)>> RESET -> RESET>> GND -> GND>>>> Halt einfach die entsprechenden 6 Pins verbunden.>> Aber falsch. TX und RX sind nicht die richtigen Anschlüsse. Benutze MISO> und MOSI!>>> Gruß>> Jobst
Nein, beim Atmega128 sind es TX/RX. Wurde weiter oben ja auch schon
geschrieben.
holger schrieb:> Der Kondensator ist viel zu groß. Löt den mal aus.
Ist er das denn wirklich? Ich meine, das ist ja keine daheim gebastelte
Schaltung. Da wird sich doch sicherlich jemand was bei gedacht haben
oder nicht? An dem Kondensator hat sich ja eigentlich auch nichts getan
und es lief vorher immer einwandfrei.
Ich würde nur gerne den Grund verstehen bevor ich da dran rumfummel.
Gubbel schrieb:> Nein, beim Atmega128 sind es TX/RX. Wurde weiter oben ja auch schon> geschrieben.
Eieiei... stimmt ja :-/
Du hast RX und TX nicht vertauscht? RX wird ja auf dem Board als ETX und
TX als ERX benannt ...
Gubbel schrieb:>> Der Kondensator ist viel zu groß. Löt den mal aus.> Ist er das denn wirklich? Ich meine, das ist ja keine daheim gebastelte> Schaltung. Da wird sich doch sicherlich jemand was bei gedacht haben> oder nicht? An dem Kondensator hat sich ja eigentlich auch nichts getan> und es lief vorher immer einwandfrei.> Ich würde nur gerne den Grund verstehen bevor ich da dran rumfummel.
Sind das denn wirklich 10mF (das wäre ein riesen Klopper an Elko)
Edit: Wieso ist das eigentlich der einzige Kondensator, bei dem ein Wert
dabei steht?
Gruß
Jobst
Hast du Reset Taster am Board? du kannst versuchen den µC in reset
halten und gleichzeitig flashen und gucken ob es geht,
shaue mal hier:
Beitrag "Re: AVRISPmkII blink orange!!"
katastrophenheinz:
> Wie ist die Kapazität des Elkos C4 ( lt. Datenblatt am Reset-Pin) ?> Vielleicht zum Programmieren mal abklemmen oder durch einen kleineren> ersetzen
holger schrieb:
> Der Kondensator ist viel zu groß. Löt den mal aus.
Das kann die Lösung sein.
Ab hier lesen:
Beitrag "Re: AVRISPmkII blink orange!!"
Gruß
Hast du noch einen weiteren, fabrikfrischen atmel controller bei dir
rumliegen?
Um auszuschließen, daß das dragon-board ( bzw die pc-software dahinter )
die fehlerquelle ist: Den fabrikfrischen Controller auf einem Breadboard
(oder fliegend verdrahtet) mit Vcc und GND versorgen, die 4 ISP-Pins
anschließen, ISP-Frequenz kleiner < 250kHz und Signatur auslesen.
Wichtig ist, daß der Controller ( die Fuses ) im Auslieferungszustand
ist, d.h. interner Oszillator und CKDIV8 gesetzt, SPIEN gesezt und DWEN
nicht. Wenn Signatur auslesen dann auch deine obige Fehlermeldung
produziert, dann liegt der Fehler wahrscheinlich im Dragon ( bzw. in der
PC-Software dahinter ).
(Wenn kein fabrikfrischer Controller in der Bastelkiste: ein ganz
normaler Arduino oder irgendwas anderes mit ISP-Adapter tuts auch)
Hast du weiterhin schon mal probiert, beim Programmieren über ISP die
ISP-Frequenz auf <sehr niedrig> einzustellen. Ich bin mir nicht sicher,
wie sich das aufs Timing der Reset-Leitung auswirkt, aber vielleicht
bringt das auch beim Runterziehen der Reset-Leitung mehr Zeit, um C4 zu
entladen.
Falls das alles keine weiteren Erkenntnisse bringt, dann würde ich
tätsächlich als nächstes den C4 auslöten.
katastrophenheinz schrieb:> dann würde ich> tätsächlich als nächstes den C4 auslöten.
Ich würde erst mal gucken, was für einen Wert der tatsächlich hat.
10mF (=10.000µF) kann ich mir nicht vorstellen!
Gruß
Jobst
Martin e. C. schrieb:> Hast du Reset Taster am Board? du kannst versuchen den µC in reset> halten und gleichzeitig flashen und gucken ob es geht,
Einen Taster nicht, nur ein Lötauge (siehe Bild unten rechts). Ich hab
einfach ein Kabel nach GND angesteckt. Beim Flashen kommt allerdings der
selbe Fehler wie vorher, sowohl über ISP als auch JTAG. Nur Zappeln tut
er nicht.
Zum Kondensator, auf dem Bild ist er drauf. Mit einer 10 ist er auch
beschriftet, aber ob das jetzt mF oder wohl eher µF sind weiß ich nicht.
Er ist so etwa 4x4mm² in der Grundfläche.
Aber wenn ich Reset dauerhaft auf GND halte, sollte der Kondensator doch
eigentlich keine Rolle mehr spielen?
katastrophenheinz schrieb:> Hast du noch einen weiteren, fabrikfrischen atmel controller bei dir> rumliegen?
Ich hab noch einen AVR32 auf einem EVK1100 Testboard, da ist
zumindestens JTAG als Schnittstelle herausgeführt. Das werde ich als
nächstes mal ausprobieren.