ADC gibt keine 0 her!

OP #1332346
Hallo! Als Referenzspannung habe ich VCC genommen. Bei anlegen der VCC 
sehe ich per Uart die 1023 manchmal auch nur 1022, das ist ok...

Man sieht hier, das es sich um einen 10Bit-ADC handelt. Aber wenn ich 
nun 0V anlege, dann misst der verschiedene Werte, ca von 180 bis 220
bei mit sind das dann ca 651mV Das oszilloskop sagt aber dass maximal 
80mv anliegen. komische sache..


Was ich ausprobiert habe: GND an den ADC-PIN keine Veränderung! so war 
ja sichergestellt, dass die Potentiale der Spannungsmessung definitiv 
gleich sind.

Kann die SW schuld sein?

MSP430F2274
Gast
Wahrscheinlich ist der ADC Takt zu hoch oder die Sample & Hold Wartezeit 
zu kurz (falls sich bei den Controller sowas einstellen lässt).

Ähnliches Problem hatte ich mal mit nem PIC18, da waren die zeiten auch 
zu knapp.
Gast
Das Problem liegt meist in der falschen ADC Taktfrequenz, das Problem 
hatte ich auch mal.

schau mal hier:
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#ADC_.28Analog_Digital_Converter.29

ich hab dir das wichtigste rauskopiert!

ADPS2...ADPS0 (ADC Prescaler Select Bits)

Diese Bits bestimmen den Teilungsfaktor zwischen der Taktfrequenz und 
dem Eingangstakt des ADC.
Der ADC benötigt einen eigenen Takt, welchen er sich selber aus der 
CPU-Taktfreqenz erzeugt. Der ADC-Takt sollte zwischen 50 und 200kHz 
sein.
Der Vorteiler muss also so eingestellt werden, dass die CPU-Taktfrequenz 
dividiert durch den Teilungsfaktor einen Wert zwischen 50-200kHz ergibt.
Bei einer CPU-Taktfrequenz von 4MHz beispielsweise rechnen wir

\begin{matrix} 
TF_{min}=\frac{CLK}{200\,\mathrm{kHz}}=\frac{4000000}200000}=\mathbf{20} 
\\
\\ 
TF_{max}=\frac{CLK}{50\,\mathrm{kHz}}=\frac{4000000}{50000}=\mathbf{80} 
\end{matrix}

Gruß Stefan
OP
also ich habe meinen ADC wie folgt initialisiert:

ADC10CTL0 = ADC10SHT_2 + ADC10ON + ADC10IE;  // VCC als ADC-Ref

und:

- ADCOSC als Input
- Single-channel-single-conversion
- nur channel A0
- ADC10 clock divider = 8

immernoch keine deutliche besserung. Ich erhalte anstatt 0 für 0V ca 180 
bei 10Bit...
Gast
Da keine Taktfrequenz angegeben ist nehme ich mal 20 MHz an.
bei einem Teiler von 8 wären das dann 2,5MHz Takt an den ADC.
-> Datenblatt beschreibt wie schnell man sein darf.
OP
Controller ist immernoch der : MSP430F2274

Außerdem lasse ich nicht meine 4MHz vom Quarz auf den ADC wirken, 
sondern ADCOSC als Input. DIESER wird dann via prescaler geteilt.

Langsamer geht also nicht. Ich habe vieles ausprobiert.
U.a. verschiedene Clocks gewählt.


Bitte um weitere Beteiligung

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 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.