Moin Leute, ich möchte eine Differenzspannung zwischen zwei ADC-Eingängen messen. Als Testszenario habe ich den ADC6 Eingang auf +1,5V gelegt und den ADC7 auf Masse. Leider messe ich nur Bullshit und nicht meine 1,5V. Könntet ihr mir bitte weiterhelfen? Mein wesentlicher Code für die Auswertung lautet:
1 | static void ADCConfig(void) |
2 | {
|
3 | ADC_Init_TypeDef init = ADC_INIT_DEFAULT; |
4 | ADC_InitSingle_TypeDef singleInit = ADC_INITSINGLE_DEFAULT; |
5 | |
6 | |
7 | init.timebase = ADC_TimebaseCalc(0); |
8 | |
9 | init.prescale = ADC_PrescaleCalc(7000000, 0); |
10 | |
11 | ADC_Init(ADC0, &init); |
12 | |
13 | singleInit.reference = adcRef2V5; |
14 | singleInit.input = adcSingleInputCh6Ch7 ; |
15 | singleInit.resolution = adcRes12Bit; |
16 | |
17 | ADC_InitSingle(ADC0, &singleInit); |
18 | }
|
sowie:
1 | int main(void) |
2 | {
|
3 | |
4 | |
5 | EFM32_Init(); |
6 | ADCConfig(); |
7 | |
8 | if (SysTick_Config(CMU_ClockFreqGet(cmuClock_CORE) / 1000)) |
9 | {
|
10 | SegmentLCD_Write("Fehler"); |
11 | }
|
12 | |
13 | while(1) |
14 | {
|
15 | if(readADC == 1) |
16 | {
|
17 | ADC_Start(ADC0, adcStartSingle); |
18 | |
19 | while (ADC0->STATUS & ADC_STATUS_SINGLEACT) ; |
20 | |
21 | |
22 | sample = ADC_DataSingleGet(ADC0); |
23 | |
24 | |
25 | voltage = (sample * 2500) / 4096; |
26 | |
27 | |
28 | SegmentLCD_Number(voltage); |
29 | }
|
30 | }
|
31 | }
|
Vielen Dank.