Forum: Mikrocontroller und Digitale Elektronik Differenzspannung mit EFM32 messen


von Robert S. (gips1gott)


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.

von Robert S. (gips1gott)


Lesenswert?

Hat niemand eine Idee? :-(

von Blackbird (Gast)


Lesenswert?

Welcher EFM32 denn? Außerdem fehlen da noch die Header, wenn man es 
nachvollziehen soll.
Was macht EFM32Init?


Blackbird

von Blackbird (Gast)


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

von Alex (Gast)


Lesenswert?

ADC-Clock aktiviert?

von Jim M. (turboj)


Lesenswert?

Blackbird schrieb:
> GPIO_PinModeSet(ADC_PORT, CH6_PIN, gpioModeInput, 0);
>   GPIO_PinModeSet(ADC_PORT, CH7_PIN, gpioModeInput, 0);

Lies mal im Handbuch nochmal nach wie ADC Pins zu konfigurieren sind.
Hint: gpioModeDisabled

Steht im GPIO Kapitel.

von Robert S. (gips1gott)


Lesenswert?

Hat sich mittlerweile erledigt. Habe in meiner Schaltung ein 
Verdrahtungsfehler gehabt. Aber danke euch!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.