ADC_Wert lässt sich nicht weiterverarbeiten!?

Gast #2858551
Lesenswert?

GUTEN MORGEN ZUSAMMEN!

Ich möchte mit ADC9 einenen Spannungswert auslesen und diesen dann 
weiterverarbeiten.

Um den ADC zu testen, lese ich den ADC Wert ein und übertrage in direkt 
auf den DAC-Ausgang, dies funktioniert einwandfrei.

Desweiteren möchte ich ab einem gewissen Spannungswert die PWM 
einschalten und bei erreichen eines Maximalwertes die PWM wieder 
ausschalten.

Übertrage ich das Programm in den Controller, ist die PWM aus. Wenn ich 
dann mein Netzgerät (welches ich zur Simulation der ADC Eingangsspannung 
benutze) bis fast auf 0 zurückdrehe, spring die PWM an. Wenn ich es dann 
wieder hochstelle bleibt die PWM trotzdem an und wird nicht mehr 
ausgeschaltet.

Ich rufe get_adc_data() ständig mit einer while-Schleife auf.


void get_adc_data(void)
{


  unsigned int max_current = 2;
  unsigned int v_in_ADC;
  unsigned int value_current;

  int i;
  unsigned long int sum;
  unsigned int average_ADC;
  sum=0;
  average_ADC=0;

  for(i=0; i<32; i++)
  {
    ADCSRA |=(1<<ADSC);//ADC_starting_conversation
    while( ADCSRA & (1<<ADSC)); //waiting_for_conversation_end
    sum = sum+ADCW;
  }

    average_ADC = sum/32;

    DAC = average_ADC;
    DACON |= (1<<DALA)|(1<<DAOE)|(1<<DAEN); //DAC_starting_conversation

    v_in_ADC = (average_ADC * 5)/1023;
    //value_current = ((((v_in_ADC*5)/Vc_LEM)-2.5)/0.00222);



  if(v_in_ADC <= max_current)
  {
      PCTL2 |= (1<<PCCYC2)|(1<<PRUN2); // PWM_Output_enable

  }
  else
  {
      PCTL2 |= (0<<PCCYC2)|(0<<PRUN2); // PWM_Output_disable

  }


}

Hat jemand eine Ahnung, wo der HUND begraben ist?

Vielen DANK!

Gruss

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