AD-Wandler bei ATMega8

Gast #165519
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/doc2486.pdf (seite
193 bis 205)
und der, die ich hier im Forum gefunden habe:
http://www.mikrocontroller.net/forum/read-1-180921.html#181079

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.
Angehängte Dateien:
Gast #165521
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
Gast #165522
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.
Gast #165523
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
Gast #165524
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)
Gast #165525
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?
Gast #165526
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.
Gast #165527
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

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.