Forum: Compiler & IDEs AD Wandlung Frage


von stoegi (Gast)


Lesenswert?

Hallo,
habe folgendes Prog geschrieben, das bis jetzt einwandfrei funktioniert.

void main()
{

  lcd_ini();

    lcd_gotoline(1);
      lcd_writetext("ADC0:");
    lcd_gotopos(1,11);
    lcd_writetext("V");
  lcd_gotoline(2);
    lcd_writetext("ADC1:");
    lcd_gotopos(2,11);
    lcd_writetext("V");

  // Activate ADC with Prescaler 16 --> 1Mhz/16 = 62.5kHz
  ADCSRA = _BV(ADEN) | _BV(ADPS2);

  while (1)// Endlosschleife
    {
    // Select pin ADC0 using MUX
    ADMUX = 0;

    //Start conversion
    ADCSRA |= _BV(ADSC);

    // wait until converstion completed
    while (ADCSRA & _BV(ADSC) ) {}

    // get converted value
  double x = ADCW/1023.0*5.0;

  char buffer[5];
  sprintf(buffer,"%.3f",x); //Makefile_eigen in den Optionen einstellen

  lcd_gotopos(1,6);
  lcd_writetext(buffer);

    }
}

Der AD Wert an ADC0 wird am LCD Display angezeigt und mit 3 
nachkommastellen ausgegeben.
Meine Frage:
Wie lese ich gleichzeitig an ADC0 und ADC1....2 .3... Werte ein
Werden die Werte nicht immer in ADCW geschrieben?!.. wie löse ich das.?
m.f.G.
Stögi

von Karl H. (kbuchegg)


Lesenswert?

stoegi wrote:

> Wie lese ich gleichzeitig an ADC0 und ADC1....2 .3...

Einfache antwort: gar nicht.

> Werte ein
> Werden die Werte nicht immer in ADCW geschrieben?!..

Ja natürlich

> wie löse ich das.?

Die beiden Kanäle abwechselnd hintereinander einlesen.

Es gibt am Chip nur einen ADC. Aber man kann verschiedene
Eingangspins abwechselnd an diesen ADC schalten.

von stoegi (Gast)


Lesenswert?

jetzt leuchtet mir das ein ;)
danke

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.