mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AD-Wandler bei ATMega8


Autor: Martin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich versuche heraus zu finden wie man den AD-Wandler im ATMega8
benutzt.
Anhand der Informationen im Datenblatt:
http://www.atmel.com/dyn/resources/prod_documents/... (seite
193 bis 205)
und der, die ich hier im Forum gefunden habe:
http://www.mikrocontroller.net/forum/read-1-180921...

habe ich ein kleines Programm geschrieben (sehe Anhang)und im Emulator
laufen lassen.

Das Problem ist nun, dass laut dem Datenblatt wenn die Konversion
beendet ist, wird das ADIF-Flag auf 1 gesetzt. Deshalb wartet das
Program bis ADIF-Flag gesetzt ist. Dies passiert aber nicht egal wie
lange das Programm läuft.

Ich kann leider nicht erkennen wo das Problem liegt.
Wäre dankbar für jede Hilfe.

Autor: Christian Zietz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unabhängig von Deinem Code: Der Simulator des AVR-Studios simuliert den
AD-Wandler nicht. D.h. das ADIF-Bit wird nie gesetzt.

Christian

Autor: Christian Zietz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hoppla! Ich sehe gerade: Im Simulator des AVR-Studio 4.11 Build 406 SP2
wird ADIF laut Doku doch gesetzt. In Version 4.10 war das noch anders?
Welche Version benutzt Du?

Christian

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort.

Ich dachte, der AvrStudio-Simulator würde so zimlich alles was im
Microkontroller vorgeht realitätsgemäss simulieren. Ich habe dafür
extra  windows wieder installiert.Und im IO-View gibt es auch dieses
ADIF-Flag.

Ich benutze noch die Version 3.56.
Ok ich versuche AvrStudio upzudaten, weil ich den ADWandler ohne den
Simulator nicht zum laufen bringe. Da gibt es zu viele Sachen die ich
nicht verstehe und einen funktionierenden AD-Wandler Asm-Code habe ich
leider nicht gefunden.

Autor: Christian Zietz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst ohnehin manuell eingreifen, um die gewünschten Werte in ADCH
und ADCL zu laden (der Simulator weiß schließlich nicht welche Spannung
Du gerne am Eingang hättest). Dabei kannst Du auch gleich das ADIF-Bit
setzen.

CU Christian

Autor: Hauke Radtki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
um wirklich zu sehen, was im controller vorgeht, brauchst du nen JTAG
debugger oder so... aber soweit ich weiss, geht das erst ab dem mega16
....(oder 32 ... bin mir nicht sicher)

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Code Funktioniert leider weder im Simulator noch in einem  echten
Mikrocontroller. So komme ich leider nicht weiter.

Weiss jemand wo ein Beispiel-AsmCode für AD-Wandler in einem ATMega8
gibt?

Autor: Hauke Sattler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi ich glaube ich habe den Fehler gefunden

Du mußt das ADIF flag beim starten der Umwandlung löschen.
Nun kommt das besondere. Das ADIF Flag wird gelöscht indem man eine
EINS drüberschreibt.

du hast (an zwei Stellen) geschrieben:
ldi  r16, (1<<ADEN)|(1<<ADSC)|(0<<ADFR)|(0<<ADIF);Konversion starten
ADEN=1 ADSC=1

wenn du das mit:
ldi  r16, (1<<ADEN)|(1<<ADSC)|(0<<ADFR)|(1<<ADIF);Konversion starten
ADEN=1 ADSC=1
austauscht sollte es funktionieren.

Zum Simulieren würde ich VMLAB nehmen. Das setzt die Simulation sehr
gut um.

cu
Hauke

P.S.
das "ldi r16,0x00" kann man weglassen.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die hilfe.

>Du mußt das ADIF flag.....
Da kommen wir der Sache schon näher.Auf der Seit 204 im Datenblatt
steht das auch so.
Die LEDs am PortB reagieren jetzt auf die Spannung die an den ADC0-Pin
angeliegt wird.

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.