www.mikrocontroller.net

Forum: Compiler & IDEs ATMega64 JTAG und alle AD Wandler


Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.