ADC hängt beim ADIF-Check

Gast #236662
Lesenswert?

hallo

irgendwie stehe ich gerade wie der 'Ochse vor dem Berg'...
Ich versuche mit einem ATmega8 analoge Werte einzulesen, dazu habe ich
mal den Code aus dem Tutorial genommen, aber das Programm kommt wohl
nicht aus der ADIF-Check Schleife
   while(!(ADCSRA & (1<<ADIF)));
raus.

Nur scheint die Zeile zum löschen des ADIF-Flags
   ADCSRA = (1<<ADIF);
das komplette Register zu überschreiben -> kein ADEN mehr -> keine
weitere AD-Wandlung -> ADIF wird nie mehr gesetzt -> nothing moves

hab ich da einen groben (Denk-)Fehler oder kann jemand diese Verhalten
nachvollziehen?
Ach ja, ich benutze die aktuelle WINAVR Version.

Danke schon mal und Grüße
Manfred
Gast #236663
Lesenswert?

Sowas wie

   ADCSRA = (1<<ADIF);

ist nur sinnvoll, wenn es sich beim entsprechenden Register um eins
mit ausschließlich Interrupt-Flags handelt.  Das ist hier nicht
der Fall, daher sollte man entweder

   ADCSRA |= (1 << ADIF);

schreiben oder aber gleich das gesamte Register neu beschreiben
(einschließlich des ADIF).
Gast #236664
Lesenswert?

hallo Jörg

Danke erstmal für die schnelle Antwort..mit

   ADCSRA |= (1 << ADIF);

hatte ich's auch getestet und da hat es funktioniert, war nur unsicher
bzgl. der Beschreibung im Tutorial (sollte ich vielleicht nacher mal
ergänzen...)

BTW wann kann man dich jetzt mal zu dem Beer einladen? :-)

Manfred
Gast #236665
Lesenswert?

> BTW wann kann man dich jetzt mal zu dem Beer einladen? :-)

Eigentlich immer, ist nur die Frage: wo?

In Dresden können wir sicher schnell mal einen Termin finden, woanders
nur dann, wenn ich zufällig mal in der Ecke aufschlage.

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