Problem beim flashen über ISP

Gast #2966783
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?
#2966905
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
Gast #2967291
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.
Angehängte Dateien:
Gast #2967374
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.
Gast #2967405
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.
Gast #2967441
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"
Gast #2967734
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
Gast #2967747
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.
Gast #2967750
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.
Gast #2967781
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.
Gast #2972772
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.
Gast #2972776
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.
Gast #2972809
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.
#2972821
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
#2972830
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ß
Gast #2972906
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.
Gast #2973193
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.
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren