AD-Wandler bei ATMega8

Gast #165519
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/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 #165522
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.
Gast #165523
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
Gast #165525
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?
Gast #165526
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.
Gast #165527
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren