Forum: Mikrocontroller und Digitale Elektronik Problem beim flashen über ISP


von Gubbel (Gast)


Lesenswert?

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?

von Juergen G. (jup)


Lesenswert?

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

von g457 (Gast)


Lesenswert?

> Dazu habe ich dann ein Anschlusskabel vom Dragon zum Board gebastelt.

Wie sieht selbiges denn aus?

von Michael_ (Gast)


Lesenswert?

Ist es wirklich auch die gleiche Platine, wo es schon mal gelaufen ist?

von Klaus (Gast)


Lesenswert?

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

von Klaus (Gast)


Lesenswert?

Ups vergessen!

die 5V VCC auf Pin 4 am Jtag verbinden.

von Gubbel (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Klaus (Gast)


Lesenswert?

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

von holger (Gast)


Lesenswert?

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

von Gubbel (Gast)


Lesenswert?

Klaus schrieb:
> Fusebit SPIEN nicht angerührt

Da habe ich auf jeden Fall nicht rumgespielt.

Klaus schrieb:
> prüf noch mal dein Anschlusskabel

holger 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?

von katastrophenheinz (Gast)


Lesenswert?

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"

von Gubbel (Gast)


Lesenswert?

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.

von katastrophenheinz (Gast)


Lesenswert?

hmm, deine Fehlerbeschreibung hört sich dennoch an wie DWEN oder SPIEN 
verfused. Es gib hier einige Artikel zu diesem Thema. Hast du da schon 
geguckt?

Beitrag "SPIen gelöscht durch AVR Dragon mittels debugWIRE ?"

http://www.mikrocontroller.net/articles/DebugWIRE

von Gubbel (Gast)


Lesenswert?

Gibt es die Möglichkeit diese Fuses über JTAG wieder hinzubiegen?

von katastrophenheinz (Gast)


Lesenswert?

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

von Michael_ (Gast)


Lesenswert?

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.

von Gubbel (Gast)


Lesenswert?

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.

von katastrophenheinz (Gast)


Lesenswert?

dann wiederhole ich die frage von g457: Wie sieht denn dein 
selbstgebauter ISP-Adapter aus?

von Gubbel (Gast)


Lesenswert?

Weiter oben hatte ich schonmal ein Bild gepostet 
(http://www.mikrocontroller.net/attachment/163805/IMG_20121222_151522.jpg).

Pinbelegung ist folgende:
ISP -> CR3024
MISO -> TX (PE1)
VTG -> VCC
SCK -> SCK (PB1)
MOSI -> RX (PE0)
RESET -> RESET
GND -> GND

Halt einfach die entsprechenden 6 Pins verbunden.

von katastrophenheinz (Gast)


Lesenswert?

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

von Jobst M. (jobstens-de)


Lesenswert?

Der Quarz schwingt?
Trotzdem schon mal mit kleineren Geschwindigkeiten als 250KHz probiert?


Gruß

Jobst

von Gubbel (Gast)


Lesenswert?

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.

von holger (Gast)


Lesenswert?

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

von Jobst M. (jobstens-de)


Lesenswert?

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

von Gubbel (Gast)


Lesenswert?

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.

von Jobst M. (jobstens-de)


Lesenswert?

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

von Martin e. C. (eduardo)


Lesenswert?

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ß

von katastrophenheinz (Gast)


Lesenswert?

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.

von Jobst M. (jobstens-de)


Lesenswert?

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

von Gubbel (Gast)


Angehängte Dateien:

Lesenswert?

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.

von Bonz, Prass & Prozz (Gast)


Lesenswert?

Als zusaetzliche Fehlerquelle.. eine Gleichtaktspannung zwischen 
Programmierer, resp PC und dem Board, speziell wenn da noch anderes Zeug 
dran haengt.

von Gubbel (Gast)


Lesenswert?

Problem gefunden!

Am IC waren waren 2 Beinchen verbunden, PEN und RX. Habs gerichtet und 
es funktioniert wieder einwandfrei.

Danke für eure Hilfe.

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.