ADC mit 8535

Gast #41957
Lesenswert?

hallo!

void main(void)
{
  unsigned int x;

  outp ((1<<ADEN) & 3, ADCSR);

  outp ((1<<PINA1), ADMUX);        // Kanal an Pin 1 auswählen
  sbi (ADCSR, ADSC);

  while (bit_is_set (ADCSR, ADSC)); /* Nur warten */;
  x = (__inw(ADCL));               // Wert auslesen

}

Hab einen Fehler beim kompilen und zwar bei der Zeile "x = 
(__inw(ADCL));". kann mir jemand weiterhelfen? hab einen 8535er

gruß,
Max
Gast #41959
Lesenswert?

also ich hab es jetzt umgeschrieben und zwar:

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

  outp ((1<<ADEN) & 1, ADCSR);

  outp ((1<<PINA1), ADMUX);
  sbi (ADCSR, ADSC);

  while (bit_is_set (ADCSR, ADSC)); /* Nur warten */;

  x=inp(ADCL);       // einlesen des Wertes, Low..
  x=x|(inp(ADCH)<<8);     // ..High

  lcd_init(LCD_DISP_ON);
      lcd_clrscr();
      itoa(x,buffer,10);
      lcd_puts(buffer);

  for(;;);
}

jedoch tut sich immer noch nichts und es zeigt nur 0 auf dem LCD an. An 
welchem Port knn ich jetzt die zu messende Spannung anschließen? (PA0 
odeR?). Und stimmen das Programm von den Werten in den Registern 
überhaupt?

Bitte um Hilfe.

MfG,
Max

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