Hallo Leute!
Ich habe ein Problem mit meinem Atmega2560
(http://www.mikroe.com/eng/products/view/83/bigavr-mcu-cards/). Es
liegen an meinen JTAG Pins 5V an, wenn ich mein selbst ersteltes Board
mit Spannung versorge. Jedoch sind keine Pins in irgendeiner Weise
verbunden, sei es VCC oder GND oder untereinander.
Wenn ich jedoch den Prozessor an meinem "Developer Board" teste, dann
habe ich an den PINS ~1V.
Wie soll denn ein PIN 5V bekommen, wenn er nicht mit VCC verbunden ist.
Meine eigene Platine habe ich natürlich auf Brücken untersucht.
Ich weiß echt nicht weiter. Hoffentlich kann mir jemand weiterhelfen.
Gruß Dennis
Wenn Fragen im Forum nicht beantwortet werden, dann kann es auch daran
liegen, dass niemand sie verstanden hat. Ich hab das jedenfalls nicht,
also was nun wo zu welchem Zeitpunkt angeschlossen war und um welches
Board es geht etc.
Der Link bringt wenig Erkenntnis, denn ich sehe da bloss einen
MegaIrgenwas mit anderem Gehäuse.
Ok sorry für das Durcheinander.
Erklärung:
Ich habe zwei Mikrocontrollerboards
1. DeveloperBoard mit allem Schnick-Schnack
Wenn ich da meinen Prozessor verwende, dann funktioniert das JTAG
Interface.
2. Eigenes Layout mit Sensoren, SD-Karte,...
Wenn ich da meinen Prozessor verwende, dann funktioniert das JTAG
Interface nicht, da ich die Meldung vom AVR Studio erhalte IDR Event
0xff. Ich habe die JTAG Pins durchgemessen und festgestellt, dass an
TCK,TDO,TMS und TDI 5V anliegen, also VCC. Wenn ich das JTAG Flag
deaktiviere und flashe, dann habe ich keine Spannung am JTAG anliegen.
Die vier PINS habe ich auf Brücken und Verbindungen zu VCC überprüft,
aber nichts gefunden.
Ich kann mir nicht erklären warum ich da 5V anliegen habe. Der Prozesser
ist in Ordnung, da in einem anderen Board auch funktioniert.
Ich hoffe diesmal habe ich mein Problem verständlicher ausdrücken
können. Sorry.
Gruß Dennis
Wenn das JTAG vom Controller aktiviert ist, dann sind die 4 JTAG-Pins
nicht floatend, sondern der Ausgang treibt aktiv und die Eingänge haben
einen internen Pullup. Ein Controller mit aktivierter JTAG-Fuse wird
also bei nicht angeschlossener JTAG-Probe auf mindestens 3 der 4 Txx
Leitungen "high" liefern.
Das Verhalten ist also völlig normal und somit nicht die Ursache deines
Problems. Such erst einmal woanders weiter. Beim Takt beispielsweise.
Kannst ja mal Schaltung und Layout deines Boards hier reinstellen.
A. K. schrieb:> Das Verhalten ist also völlig normal und somit nicht die Ursache deines> Problems. Such erst einmal woanders weiter. Beim Takt beispielsweise.
Ja, ich würde auch auf Timing-Probleme tippen. Man könnte mal
probieren, den JTAG-Takt runterzusetzen. Wenn die Leitungen etwas
länglich werden, könnte auch eine Serienterminierung (jeweils an
der Quelle, also je nach Datenrichtung entweder am JTAG-Stecker
oder am Controller) hilfreich sein, weil sie das Überschwingen
unterdrückt, das durch die nichtangepasste Leitung sonst entsteht.
Ketzerische Frage: Funktioniert dein Board überhaupt irgendwie, d.h.
kannst du mit ISP was laden und das läuft, und wenns nur eine blinkende
LED ist? Oder willst du JTAG verwenden, um das erste Programm
draufzuladen, und es läuft bisher garnichts?
Danke erst einmal für die Antworten.
A. K. schrieb:> Wenn das JTAG vom Controller aktiviert ist, dann sind die 4 JTAG-Pins> nicht floatend, sondern der Ausgang treibt aktiv und die Eingänge haben> einen internen Pullup. Ein Controller mit aktivierter JTAG-Fuse wird> also bei nicht angeschlossener JTAG-Probe auf mindestens 3 der 4 Txx> Leitungen "high" liefern.
Das habe ich verstanden. Jedoch bin ich ein bisschen verwundert wieso
ich bei dem gekauften "Developer Board" nur 1V an jeder JTAG Leitung
habe und bei meinem eigenen 5V.
A. K. schrieb:> Ketzerische Frage: Funktioniert dein Board überhaupt irgendwie, d.h.> kannst du mit ISP was laden und das läuft, und wenns nur eine blinkende> LED ist? Oder willst du JTAG verwenden, um das erste Programm> draufzuladen, und es läuft bisher garnichts?
Das Board "sollte" funktionieren, da ich es lediglich überarbeitet habe
und die Platine diesmal extern Fertigen lassen habe. Die Logik und
Verbindungen habe ich fast zu 100% übernommen. Ich hatte auch noch das
Programm auf meinem Prozessor und er hat auch jede 60s das Ventil kurz
geöffnet.
A. K. schrieb:> Kannst ja mal Schaltung und Layout deines Boards hier reinstellen.
Das könnte ich versuchen. Muss kurz suchen, ob ich die aktuellste
Version auch hier zu Hause habe.
Er benutzt AVR Studio, da weiß er doch gar nicht, was das Teil
eigentlich für ihn gerade tut. ;-)
Soweit ich AVR Studio kenne, konnte es bereits erfolgreich ein
Problemm laden, denn es ist bereits beim Debuggen angekommen. Nur
damit ist dieses "IDR Event 0xff" erklärbar. Da nicht davon
auszugehen ist, dass seine Firmware vorsätzlich das IDR beschreibt,
klingt mir das alles verdammt nach einem übertakteten JTAG. Das
kann einerseits (wie schon genannt) die Leitungsführung sein, aber
es kann andererseits auch ganz profan sein, dass der JTAG-Takt
nicht der Forderung genügt, dass er kleiner als 1/4 der CPU-Frequenz
sein muss. Mit der Standard-CPU-Frequenz von gerade mal 1 MHz
liegt man da ganz schnell mal drüber. Programmieren funktioniert
deshalb trotzdem noch, auch über JTAG, weil da der Takt direkt vom
JTAG-Interface genommen wird statt vom Hauptoszillator. Fürs
Debuggen jedoch muss die Forderung f_JTAG < f_CPU/4 dann eingehalten
werden.
Dennis B. schrieb:> Jedoch bin ich ein bisschen verwundert wieso> ich bei dem gekauften "Developer Board" nur 1V an jeder JTAG Leitung> habe und bei meinem eigenen 5V.
Ist da ein anderer Controllertyp drauf, oder vielleicht einfach nur
eine andere Silizium-Version? Dein Voltmeter ist hochohmig, das
misst ja nur irgendeine Hausnummer.
Das mit dem Takt habe ich beachtet und auch kontrolliert. Mein Prozessor
ist auf 16MHz eingestellt und läuft mit einem 10MHz Quarz. Das AVR
Studio hat 1MHz als Standard JTAG Frequenz vorgegeben und ich habe da
auch nichts dran geändert. Das "Developer Board" funktioniert ja :).
Jörg Wunsch schrieb:> Ist da ein anderer Controllertyp drauf, oder vielleicht einfach nur> eine andere Silizium-Version? Dein Voltmeter ist hochohmig, das> misst ja nur irgendeine Hausnummer.
Ich nehme für beide Boards den gleichen Controller. Dieser ist fest auf
dem Sockel verbunden (siehe Bild). Ich tausche lediglich hin und her.
A. K. schrieb:> Kannst ja mal Schaltung und Layout deines Boards hier reinstellen.
Ich habe den Schaltplan und das Board als Projekt angehangen. Jedoch
glaube ich nicht, dass ihr daraus schlau werdet. Die Sockelverbindung
zum Controller ist nicht mit den Pinbezeichnungen gekennzeichnet. Wie
schon erwähnt, wurden nur kleine Änderungen hinzugefügt und ich habe an
den JTAG Verbindungen nichts geändert.
Ich bin hier wirklich nicht der Layout-Spezialist, aber trotzdem die
Frage, ob insbesondere den VCC und GND Leitungen gewisse Regeln
angedacht wurden, oder ob die frei Schnauze übers Board spazieren,
Hauptsache Durchgang.
A. K. schrieb:> Der Takt-Jumper auf dem Sockel stimmt? Könnte ja sein, dass beim anderen> Board Takt von aussen anliegt und es daher nicht auffällt.
Ja dieser ist auf XTAL gestellt und somit wird der Quarz auf dem Sockel
verwendet. Das DeveloperBoard hat zwar noch einen externen Quarz, aber
den habe ich schon entfernt, um zu schauen, ob es daran liegt.
Negativ...
Wie gesagt ich habe mich lange an das Board gesetzt und versucht
irgendwelche Fehler zu finden.
* Jeden Sockelpin durchgemessen
* Brücken gesucht
* Eagle File kontrolliert
Wenn ich über JTAG zugreifen will, dann muckt AVR Studio nicht rum
(cannot connect,...). Regulär würde ich dann die z.B. die main.c auf dem
Bildschirm sehen, aber bevor das geschiet zeigt er mir in der Messagebox
IDR 0xff, JTAG sleep, IDR 0xff, IDR 0xffm... an.
Guten Morgen,
ich habe jetzt wieder ein wenig Zeit in das Board gesteckt, um den
Fehler zu finden.
Eine Frage habe ich: Ist es notwendig Pull-Down Widerstände (10k) für
die 4 Leitungen vorzusehen?
Die sind mir nämlich bei dem DeveloperBoard aufgefallen. Wenn ich diese
deaktivere, dann erhalte ich auch den IDR Event 0xff.
Bevor ihr mir hier Sachen um die Ohren werft. Bei meinem ersten Board
habe ich auch keine Pull-Down Widerstände eingeplant und die JTAG
Schnittstelle hat funktioniert!
Ich bin echt am Ende mit den Nerven...
Dennis B. schrieb:> Ist es notwendig Pull-Down Widerstände (10k) für> die 4 Leitungen vorzusehen?
Nein. Die bekämpfen höchstens Symptome. Mit den langen und ver-
worrenen Leitungen da würde ich es aber zumindest mal mit einer
Serienterminierung probieren. 33 Ω an jede Signalquelle. Mit
bisschen Geschick bekommst du das auch nachträglich reingefummelt,
mit einem kleinen Fräser (Cutter-Messer geht auch, aber sehr
vorsichtig arbeiten, damit du keinen Kollateralschaden anrichtest)
die Leitung durchtrennen und freikratzen, sodass du einen Widerstand
auflöten kannst.
> Die sind mir nämlich bei dem DeveloperBoard aufgefallen.
Das erklärt dann auch, warum du dort bei ungefähr 1 V misst statt 5 V.
Die meisten JTAG-Leitungen (bis auf TDO) sind ja Eingänge, die nur
interne Pullups haben. Diese erzeugen dir ohne externe Widerstände
dann glatte 5 V, mit den Pulldowns jedoch bricht die Spannung ein.
(Was schon zeigt, dass die Pulldowns eigentlich keine gute Idee sind,
denn der Pegel schwirrt dann "irgendwo" herum.)
Du könntest trotzdem auch noch probieren, den JTAG-Takt noch weiter
zurück zu nehmen. U. U. bekommst du damit das Debuggen überhaupt in
Gang, es wird natürlich dann schnarchlangsam.
Wie A. K. schon schrieb, ein vernünftiges Konzept zum Führen der
Masseleitungen und der Abblockkondensatoren hätte auch nicht
geschadet. Sowas wie da hätte ja mein Autorouter noch geschafft. ;-)
Dennis B. schrieb:> Eine Frage habe ich: Ist es notwendig Pull-Down Widerstände (10k) für> die 4 Leitungen vorzusehen?
Theoretisch eigentlich nicht. Das kann nämlich in Verbindung mit den
internen Pullups vom Controller ganz lustige Effekte ergeben.
Allerdings sieht man das öfter. Aber man sollte dann wenigstens drauf
achten, dass man extern und intern nicht in verschiedene Richtungen
zieht. Und man wenn man auch das schon nicht lassen kann, dann zumindest
derart unterschiedliche Werte für die Pullups/downs verwendet, dass die
Leitung nicht ausgerechnet dadurch in dem Pegelbereich landet, wo man
sie mit dem Pulldown grad raus haben wollte.
> Die sind mir nämlich bei dem DeveloperBoard aufgefallen. Wenn ich diese> deaktivere, dann erhalte ich auch den IDR Event 0xff.
Jetzt kanns natürlich sein, dass die JTAG-Probe bzw. deren Software ein
bestimmtes Verhalten dabei voraussetzen. Dann bleibt einem nichts
anderes übrig, als laut zu fluchen und den Fehler, den früher mal jemand
anderes gemacht hat, brav zu reproduzieren.
Ich danke euch für die Hilfe und den Vorschlägen. Zum Glück läuft es
jetzt mit den Pull-Down Widerständen.
Bei meinen nächsten Boards werde ich mehr in die Theorie einsteigen
müssen und ein wenig Grundlagen beherzigen.
Zum Glück ist mein Wochenende jetzt gerettet :).
Euch auch ein schönes Wochenende!