Hallo,
ich bin bei meinem SAM4L am verzweifeln, weder das Internet noch
Datenblatt lieferten mir eine Lösung.
Problem ist beim SAM4L8 X-Plained Pro sowie auf meinem User-Board
gleich.
Tabellen (Datenblatt):
REFSEL: S. 109
INTERNAL, MUXNEG, MUXPOS: S. 1014 - 1016
Meine Analog Vref beträgt 3,3V bzw. 2,5V.
Mit der Kanal-Konfig wähle ich externe Ref. aus und setze MUXNEG auf
"Pad Ground" und MUXPOS auf den AD-Eingang.
1 | struct adc_seq_config adc_seq_cfg =
|
2 | {
|
3 | .zoomrange = ADC_ZOOMRANGE_0,
|
4 | .muxneg = ADC_MUXNEG_1, // Pad Ground
|
5 | .muxpos = ADC_MUXPOS_4, // AD 4
|
6 | .internal = ADC_INTERNAL_2, // Pos. primary & Neg. internal
|
7 | .gcomp = ADC_GCOMP_DIS,
|
8 | .hwla = ADC_HWLA_DIS,
|
9 | .res = ADC_RES_12_BIT,
|
10 | .bipolar = ADC_BIPOLAR_SINGLEENDED
|
11 | };
|
Das Problem ist, nach oben hin erreiche ich fast die 4096 Digits bei
12bit Auflösung - nach unten hin (AD Eingang gegen GND) habe ich einen
Offset von ca. 800 Digits...
Als wäre GND nicht gleich GND.
Dieses Problem besteht auch, wenn ich einen zweiten AD als Neg. Eingang
schalte und diesen gegen GND lege und mit dem anderen Messen möchte.
1 | struct adc_seq_config adc_seq_cfg =
|
2 | {
|
3 | .zoomrange = ADC_ZOOMRANGE_0,
|
4 | .muxneg = ADC_MUXNEG_0, // AD0 mit GND verbunden (extern)
|
5 | .muxpos = ADC_MUXPOS_4, // AD 4
|
6 | .internal = ADC_INTERNAL_0, // Pos. primary & Pos. primary
|
7 | .gcomp = ADC_GCOMP_DIS,
|
8 | .hwla = ADC_HWLA_DIS,
|
9 | .res = ADC_RES_12_BIT,
|
10 | .bipolar = ADC_BIPOLAR_SINGLEENDED
|
11 | };
|
Dies ist jedoch nicht der Fall wenn ich die möglichen internen Vref
nutze:
REFSEL:
- 000 Internal 1.0V (10/11*bandgap)
- 001 0.625*VCC
- 1XX VCC/2
Da funktioniert die Messung im jeweiligen Spannungsbereich.
Gibt es da bei der externen Vref irgendwie ein Problem das mir grad noch
nicht so ganz einleuchtet?
...so langsam glaub ich irgendwie an ein µC-Bug in der Rev.
Bsp. von Atmel sind halt nur leider mit den internen Spannung zu finden
& die funktionieren ja auch.
Gruß
Adam