Hallo! Habe mir hier einen kleinen c-Code zum Ausgeben eines Analogwertes gebastelt. Das Problem ist nun folgendes: Die Umwandlung (Konvertierung) wird nur einmal durchgeführt, und zwar beim Starten. Um eine neue AD-Wandlung durchzuführen bzw. den ADCL-Wert zu aktualisieren muss ich somit jedesmal den uc,ATMega16 resetieren. Ich bitte um Aufklärung mfg Domic int main (void) { DDRB = 0xFF; ADCSRA = 1<<ADEN | 1<<ADPS0 | 1<<ADPS1 | 1<<ADPS2; ADMUX = 0x00; SFIOR = 0x00; ADCSRA |= 1<<ADSC; for (;;) { if(!(ADCSRA & 1<<ADSC)) { PORTB = ~ADCL; ADCSRA = 1<<ADSC; /*Konvertierung wieder starten, was anscheinend nicht funktioniert, bzw. der ADCL Wert wird nicht aktualisiert*/ } } return 0; }
warum free-running, ist doch nicht notwendig wenn ich das ADSC-Bit jedesmal wieder auf 1 setze, oder?
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.