A/D Wandler

Gast #34404
Lesenswert?

void main(void)
{
  int x,y;
  char buffer[16];

  lcd_init(LCD_DISP_ON);

  sbi (ADCSR, ADEN);   //Enable

  //Teilung: 32
  sbi (ADCSR, ADPS2);  //Teilung 3.Bit
  cbi (ADCSR, ADPS1);  //Teilung 2.Bit
  sbi (ADCSR, ADPS0);  //Teilung 1.Bit

  cbi (ADCSR, ADFR);  //Free Run Mode
  cbi (ADCSR, ADIF);  //Interrupt Flag
  cbi (ADCSR, ADIE);  //Interrupt Enable


  cbi (ADMUX, MUX2);  //Multiplexer 3.Bit
  cbi (ADMUX, MUX1);  //Multiplexer 2.Bit
  cbi (ADMUX, MUX0);  //Multiplexer 1.Bit

  for(;;){

    sbi (ADCSR, ADSC);  //Start Conversation
    while (bit_is_set (ADCSR, ADIF)); //Warte bis ADIF wieder 0 ist

    x = inp(ADCH);
    y = inp(ADCL);

                lcd_clrscr();

        itoa(x,buffer,10);
        lcd_puts(buffer);
        lcd_puts("  ");

        itoa(y,buffer,10);
        lcd_puts(buffer);

        delay(200);
      }
}

ich hab am PA0 (ADCO) von meinem AT90S8535 eine Spannung (ca. 2,8V) 
angelegt und möchte diese nun über den A/D Wandler messen. Als Aref hb 
ich +Vcc genommen. Aber leider zeigt das LCD immer noch 0 (für das High 
und das Low Byte) an.

Wäre für Hilfe sehr dankbar!!

MfG,
Max
Gast #34407
Lesenswert?

Hallo! Habe ein Problem das ich nicht lösen kann, bitte um ihre Hilfe.
Es geht um:
Erstellung eines Programmes (GNU-C, BASCOM-AVR) zum Einlesen von
analogen Signalen über den internen AD-Wandler des AVR-Kontrollers mit
Ausgabe über das LCD-Display auf der Zusatzplatine. Es sind die
analogen Werte aller acht Kanäle darzustellen.Dazu habe ich 4Mhz
Quarz.

Wenn jemand Ahnung hat wie ich das realisieren soll, bitte um HILFE!!!

Danke schon im voraus!!!!!!

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