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.