Problem bei ADC mit AREF bei xMega

OP #4405776
Lesenswert?
• ▲
▼
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
Lesenswert?
• ▲
▼
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

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