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
Probier's mal so: x=inp(ADCL); // einlesen des Wertes, Low.. x=x|(inp(ADCH)<<8); // ..High (Hoffe dass es stimmt (bin nicht mehr ganz nüchtern)) Grüße, Peter
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
Vielleicht irre ich mich, aber: wenn Du ADMUX auf PINA1 setzt, ist der PA1-Eingang aktiv, oder? (Es gibt ja auch PINA0) MfG., Peter
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.