Problem bei ADC mit AREF bei xMega

OP #4405776
Hallo,

ich möchte die ADC beim xMega nutzen, und zwar im unsigned-mode, mit 
einer externen Spannungsreferenz (AREF).
Den xMega betreibe ich ich mit 3.3V. Als externe Referenzspannung möchte 
ich ebenfalls 3.3V haben. Laut Datenblatt ist die Referenzspannung 
jedoch die extern (an Pin PA0) angelegte, MINUS 0.6V. Also will ich 
einen Spannungsteiler machen, der mit den Widerständen R1 (100kOhm) und 
R2 (330kOhm), siehe Anhang, 3.9V ergibt. Diesen schließe ich mit C1 
(100n) über GND an PA0 an. PA0 habe ich als Eingang deklariert.
Das Problem ist nun, dass, sobald ich PA0 an den Spannungsteiler 
anschließe, die Spannung von 3.9V auf 1.55V abfällt. Woher kommt das?

Ich möchte, dass, wenn ich an PA4 0V anlege, ADC_result 0 ergbibt (bzw. 
den Standard-Offset von ca. 200) und bei 3.3V ADC_result 4096 ergbt.

Anbei der Code:
1
#define F_CPU 32000000
2
#include <asf.h>
3

4
uint16_t ADC_result;
5

6
int main (void)
7
{  
8
  PORTA.DIR &=~(1<<0); // PA0 als Eingang
9
  ADCA.CTRLB |= ADC_RESOLUTION_12BIT_gc;  // 12 bit left adjust unsigned
10
  ADCA.REFCTRL |= ADC_REFSEL_AREFA_gc;  // AREF als externe Spannung
11
  ADCA.PRESCALER |= ADC_PRESCALER_DIV4_gc; // Vorteiler von 4
12
  ADCA.CTRLA |= ADC_ENABLE_bm;      // ADC enablen
13

14
  //Oszillator auf 32Mhz stellen
15
  OSC.CTRL |= OSC_RC32MEN_bm;
16
  // Warten bis der Oszillator bereit ist
17
  while(!(OSC.STATUS & OSC_RC32MRDY_bm));
18
  //Schützt I/O Register, Interrupts werden ignoriert
19
  CCP = CCP_IOREG_gc;
20
  //aktiviert den internen Oszillator
21
  CLK.CTRL = CLK_SCLKSEL_RC32M_gc;
22

23
  while(1)
24
  {  // ADC lesen
25
    ADCA.CH0.CTRL |= ADC_CH_INPUTMODE_SINGLEENDED_gc; //Single-Ended
26
    ADCA.CH0.MUXCTRL |= ADC_CH_MUXPOS_PIN4_gc; // PA4 als ADC-Eingang
27
    ADCA.CH0.CTRL |= ADC_CH_START_bm;
28
    while(!ADCA.CH0.INTFLAGS); // Warten bis Messung abgeschlosse
29
    ADC_result= ADCA.CH0.RES;
30
    delay_ms(100);
31
  }
32
}
Angehängte Dateien:
OP #4406031
Knut B. schrieb:
> ARef beim XMega darf höchstens 2.4V bzw. VCC minus 0.6V betragen. Bei
> 2.5V Betriebsspannung dürfen also nur 1.9V angelegt werden. Das Absacken
> Deiner Spannungsteilerspannung liegt am Innenwiderstand des ARef-Pins.

Das mit 0.6V versteh ich anders. So wie ich das Datenblatt verstehe, 
beträgt die Referenzspannung 0.6V weniger, als ich anlege. Wo steht, 
dass sie höchstens VCC minus 0.6V betragen darf?
Wie kann ich dann eine Referenzspannung von 3.3V realisieren, wenn ich 
den ADC mit 3.3V betreibe?

Antwort schreiben

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