Differenzspannung mit EFM32 messen

OP #4716510
Lesenswert?

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.
Gast #4717532
Lesenswert?

[c]
  #define ADC_PORT  ???  // port deiner Wahl
  #define CH6_PIN   ???  // Pins deiner Wahl
  #define CH7_PIN   ???

  // Enable GPIO in CMU
  CMU_ClockEnable(cmuClock_GPIO, true);
  // Configure port and pin
  GPIO_PinModeSet(ADC_PORT, CH6_PIN, gpioModeInput, 0);
  GPIO_PinModeSet(ADC_PORT, CH7_PIN, gpioModeInput, 0);
{/c]

Das könnte auch noch hilfreich sein, wenn es nicht schon in EFM32Init() 
erschlagen wurde.

Blackbird

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