Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: AD-Wandlung Kategorie: Programmierung C (von Franz-Peter - 1.12.2012 10:14)
Als Antwort auf Re: AD-Wandlung von Felix - 30.11.2012 9:42
Ich nutze:
C-Control Pro Mega32, C-Control Pro Mega128, CC-Pro 128 Application Board
> Hallo Franz-Peter
> danke für deine antwort.
> für die befehle ADC_ReadInt brauch man doch nicht extra eine interruptroutine definieren oder? hab
> gelesen, dass durch diese Int-befehle sichergestellt wird, dass ein analogwert gewandelt wurde
> und bereit liegt, ich kann auch die normalen ad-befehle in der funktion abstand ausführen lassen
> und es kommt zum selben ergebnis
> ich hab im programm nur eine interruptfunktion und diese ist für die eigene rtc, damit
> die messwerte einen zeitstempel bekommen

Hallo Felix,
wenn Du eine AD-Wandlung startest, steht das Ergebnis nicht sofort zur Verfügung. Der ATMega braucht
lt Datenblatt dazu 13-270µs. Wieviel das im konkreten Fall ist, hängt von verschiedenen Faktoren ab.
Um sicherzustellen, dass man das Ergebnis erst nach der Wandlung liest, bietet der ATMega 2
Möglichkeiten. Entweder man pollt sein 'Busy'-Bit, oder man lässt ihn einen Interrupt auslösen, wenn
die Wandlung fertig ist. Welche Variante du nimmst, hängt nun davon ab, Ob Du ADC_Set, oder ADC_SetInt
für die Initialisierung nutzt. Wenn Du den Wert dann mit ADC_Read liest, wartet die Routine, bis die
Wandlung fertig ist (Polling). Liest Du mit ADC_ReadInt, geht die Routine davon aus, dass die
Wandlaung abgeschlossen ist, da ja der Interrupt ausgelöst wurde. Das stimmt aber nur, wenn Du sie
auch im Interrupt aufrufst. Wenn Du sie direkt nach dem ADC_Start aufrufst, ist es Zufall, ob die
Wandlung bereits abgeschlossen ist oder nicht.
In Deinem Fall würde ich einfach die Variante ohne Int verwenden - dann bist Du da auf der sicheren
Seite. Klar heißt dass nicht, dass damit deine Probleme gelöst sind - das kann ja auch andere
Ursachen haben. Aber Du bist dann sicher, dass es am Auslesezeitpunkt nicht liegt.
Hast Du am AREF-Pin einen Kondensator (und sonst nichts!) angeschlossen, um die interne Referenz
zu entstören?
Gruß
Franz-Peter


    Antwort schreiben


Antworten:

Re: AD-Wandlung (von Felix - 3.12.2012 10:37)
    Re: AD-Wandlung (von Franz-Peter - 3.12.2012 11:39)
        Re: AD-Wandlung (von Felix - 3.12.2012 12:22)
            Re: AD-Wandlung (von Torsten - 3.12.2012 19:46)
                Re: AD-Wandlung (von Felix - 12.12.2012 8:46)
                    Re: AD-Wandlung (von Felix - 7.01.2013 13:51)
                       Re: AD-Wandlung (von Torsten - 7.01.2013 19:08)
                          Re: AD-Wandlung (von Felix - 8.01.2013 9:10)
                             Re: AD-Wandlung (von Torsten - 9.01.2013 19:01)