AVR ADC - Merkwürdiges verhalten

Gast #2692279
Hallo,

ich habe zur Zeit ein Problem mit einem Mega128-A und dessen ADC.

Kurz zum Aufbau:

Vcc, Vcc, AVcc -> 5V
Gnd's -> Gnd
Aref -> 100nF -> Gnd

Dann habe einen 10k Poti an ADC0 angeschlossen.


Laut Multimeter kann ich linear 0V bis 4.5V einstellen.
Wenn ich das ganze jetzt auf den Mega128 loslasse bekomme ich sehr 
merkwürdige ergebnisse.

Ich kann ziemlich weit drehen, bis ich auf einen (10-bit) ADC wert von 
40 komme. Dabei liegen bereits 4.27V an ADC0 an. Wenn ich nur einen 
hauch weiter drehe, stehe ich bei einem ADC Wert von 900 bei 4.4V.


Da kann ja irgendwas nicht richtig laufen.

Hier ein Auszug aus meinem Quellcode:

1
function ADCRead(channel: byte): word;
2
begin
3
  // AVCC benutzen 7:6
4
  // Right Adjust  5
5
  // Channel       4:0
6
  ADMUX := %01000000 or (%00011111 and channel);
7
  
8
  // Aktivieren       7
9
  // Start Conversion 6
10
  // Free running     5
11
  // Interupt         4:3
12
  // Prescaler (128)  2:0
13
  ADCSRA := %11000111;
14

15
  // Initialberechnung
16
  while ADSC_bit = 1 do
17
    nop;
18

19
  // Wert berechnen lassen
20
  ADSC_bit := 1;
21
  while ADSC_bit = 1 do
22
    nop;
23

24
  // Wert lesen. ADCL zuerst!
25
  lo(Result) := ADCL;
26
  hi(Result) := ADCH;
27
  
28
  // ADC deaktivieren
29
  ADCSRA := 0;
30
end;

Hat jemand von euch vllt eine Idee, was da schief läuft?
Gast #2692296
Ne, das zusammensetzen klappt in anderen Programmteilen (schieberegister 
etc.) wunderbar.

Ausserdem bekomme ich bei kleinem Widerstand ja auch ein korrektes 
ergebnis.
Gast #2692307
Jo - Fail


Ich hatte PortF0 als Ausgang definiert und nicht als Eingang.
Deswegen hat der Pullup-Widerstand wohl als Spannungsteiler fungiert.

Jetzt funktioniert es -.-'
#2692309
> Dann habe einen 10k Poti an ADC0 angeschlossen.

Wie hast du das angeschlossen?

> Laut Multimeter kann ich linear 0V bis 4.5V einstellen.

Macht mich stutzig.
Wenn deine Vcc 5V ist und du dein Poti so wie es sein soll als 
Spannungsteiler verschaltet hast, dann muss sich die Spannung von einer 
Potiendstellung zur anderen von 0V bis 5V verändern lassen.

Also: Wie hast du dein Poti verschaltet?

Antwort schreiben

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