Forum: Mikrocontroller und Digitale Elektronik ATmega16 ignoriert JTAG Befehle


von Frentzen (Gast)


Lesenswert?

Hallo!

Ich versuche schon seit längerem einen ATmega16 mit eine selbst 
entwickelte Software für Keil ULink und über JTAG zu programmieren. Ich 
konnte die Software bereits so weit testen, dass ich sicher bin, dass 
beim auführen einse Befehl das richtige gemacht wird. Das heißt die 
JTAG-State-Machine wird richtig durchlaufen und z.B. wenn ich Daten aus 
dem DR schiebe diese am PC richtig ankommen, weiters werden auch immer 
die richtigen Daten in das DR geschoben.
Jetzt zu meinem Problem:
Wenn ich z.B. die Signature Bytes auslesen möchte führe ich alle 
Schritte wie im Datenblatt beschrieben aus (S.290 
http://www.atmel.com/dyn/resources/prod_documents/doc2466.pdf).
Die Signature Bytes die ich bekomme sind jedoch alle auf NULL, das kann 
laut Datenblatt nicht sein.
Nach einigen Test bin ich jetzt darauf gekommen das ich die Befehle, die 
ich in das DR (in diesem Fall 15 bit PCR Register) schiebe, beim 
nächsten Durchlauf (nach einer Runde in der State-Machine) wieder aus 
dem Register schiebe, jedoch das 2.Byte, in welchem die Signature bytes 
eingetragen sein sollten immer auf NULL gesetzt wird.
Somit kann man sagen das der µC meine Befehle ignoriert bzw. die 
Rückgabedaten immer auf Null setzt.

Hat vielleicht irgendjemand eine Idee woran das liegen kann?

Grüße
Manuel

von Christian U. (z0m3ie)


Lesenswert?

Du hast wohl eher ignoriert das es mehrere JTAG Instructions gibt. Und 
du die Daten mit einer anderen Instruction ausliest als du den Befehl 
reinschiebst. Die Controller funktionieren mit JTAG einwandfrei bisauf 
das Atmega16 und 32 nicht im Daisy Chain Betrieb funktionieren.

von Frentzen (Gast)


Lesenswert?

Datenblatt S. 282:

The Programming Command Register is a 15-bit register. This register is 
used to serially shift in programming commands, and to serially shift 
out the result of the previous command, if any.

Über die Instruction PROG_COMMANDS habe ich dieses Register ausgewählt, 
was laut meinen Test auch funktioniert haben sollte, da ich immer 15-Bit 
auslese bzw. schreibe und keine Bitverschiebungen erhalte und es das 
einzige 15-Bit Register ist.
Laut der Erklärung auf S.284 die Signature bytes auszulesen sollte alles 
also über diese Register laufen, oder verstehe ich da etwas falsch?

von Christian U. (z0m3ie)


Lesenswert?

ne sollte dann schon passen, normalerweise liest oder schreibt man daten 
nur über ein anderes register, aber wenn atmel das tatsächlich so 
unglücklich umgestezt hat ... habs jetzt nicht mehr im kopf

von Frentzen (Gast)


Lesenswert?

ich verwende dabei ein OLIMEX AVR-P40-USB evaluation board. Ich bin 
nicht sicher ob der ATmega der darauf sitzt schon einmal verwendet wurde 
und ob die fuses vielleicht falsch gesetzt sind.
Könnte das ein Grund sein?

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.