Hallo Ich brauche Hilfe. Ich programmiere meinen ATMega64 über JTAG und möchte trotzdem alle 8 AD-Wandler nutzen. Ich setze in meiner Software den JTD Pin richtig und kann auch nachvollziehen, dass mein JTAG Interface dann nicht mehr geht. Solls ja auch nicht mehr. Mein AD Wandler ließt aber immer 5V. Was muss ich mit dem OCDEN Fuse machen? Kann es mit den internen Pull Up Widerständen was zu tun haben? Vielen Dank Thorsten
OCDEN sollte darauf keinen Einfluss haben, da dessen Zustand nur von Belang ist, solange JTAG aktiviert ist. Man sollte OCDEN halt nur abschalten, wenn man's nicht braucht, weil es (durch irgendeinen Oszillator, der dann ständig läuft) zusätzlichen Stromverbrauch verursacht. Die Debugger (AVR Studio, AVaRICE) schalten diese Fuse sowieso während ihrer Arbeit ein. Nö, das Problem muss irgendwo in deiner Verdrahtung liegen. Das JTAG ICE hast du aber abgezogen, während du messen willst, ja? Ich weiß nicht, ob sich das Teil selbst hochohmig schaltet, wärend man es nicht benutzt. Beim mkI bin ich mir sogar fast sicher, dass die Ausgangstreiber stets aktiviert waren.
Vielen Dank für Deine Antwort. JTAG ICE war und ist abgezogen. Ich habe noch mal etwas weiter geforscht. Um den AD-Wandler vom JTAG Interface während des Programmierens zu trennen habe ich einen Jumper eingebaut, damit ich meine AD Eingangsschaltung (Spannungsteiler) vom Pin trennen kann. Wenn ich den Jumper offen lasse, dann messe ich 5V an ADC4. wenn ich ADC0-3 offen lasse, messe ich 0V. Damit kann das nicht an der Vertrahtung liegen Wenn ich den Jumper schließe und keine Spannung an den Spannungsteiler anlege, dann messe ich 1,7V. Kann es sein, dass da noch ein Pull Up Widerstand aktiv ist? Ich verwende folgende Initialisierung für den Port: MCUCSR |= (1<<JTD); MCUCSR |= (1<<JTD); DDRF = 0x00; PORTF = 0x00; und habe es auch schon ohne die PORTF Initialisierung probiert: MCUCSR |= (1<<JTD); MCUCSR |= (1<<JTD); Es führt beides zum oben beschriebenen Ergebnis. In der Dokumentation des ATMega64 steht unter Alternat Functions of PortF, dass folgende Flags geseetzt werden: PUOE = JTAGEN (Das muss bei mit auf 1 bleiben, JTAG stelle ich angeblich über JTD aus) PUOV = 1 bei ADC4 Kann es sein, dass diese Flags beim setzen von JTD nicht richtig gelöscht werden?
Nö, genau dafür ist JTD doch letztlich da. Es sollte übrigens MCUCSR = (1 << JTD); genügen. Ich kann's erst heute abend irgendwann nochmal testen und dann auch nur mit einem ATmega128, aber der sollte sehr ähnlich wie der ATmega64 sein.
Vielen Dank für Deine Hilfe. Ich konnte das Problem nicht grundlegend lösen. Habe immer noch das Gefühl, dass ein Pull Up existiert. Da ich nur eine Schwelle mit dem AD-Wandler dedektieren muss, habe ich diese jetzt angepaßt. Nicht schön, aber reicht. Besten Dank Thorsten
Ich hab's nun mal probieren können. Testprogramm im Anhang, Testobjekt ein ATmega128 in einem STK501. Port F beschaltet mit einer Widerstandskaskade von 9 x 4,7 kOhm, PF0 liegt oberhalb des ersten 4,7 k Widerstands, PF7 unterhalb des letzten. Selbst mit angestöpseltem JTAG ICE sind die Messungen OK. Hier ein Zyklus: chan 0: 0.689150 V chan 1: 1.378299 V chan 2: 2.072336 V chan 3: 2.771261 V chan 4: 3.484848 V chan 5: 3.973607 V chan 6: 4.315738 V chan 7: 4.677419 V
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.