Hallo,
ich frage mich schon seit einer Stunde, warum ich in diesem Code bei
meinem Atmega16 siehe ganz unten nicht auch den free running mode
einschalten kann
ADCSRA |= (1<<ADATE); //free running mode einschalten
ADCSRA |= (1<<ADSC);
while (!(ADCSRA & (1<<ADIF))); // warum macht er an dieser stelle
nicht weiter und wartet sich zu Tode?
habe den free running mode auhc in einer normalen Datei am Laufen,
konnte aber nahc ewigen vergleich keinen unterschied/fehler hier
feststellen.
seht ihr einen Fehler in diesem Code warum er an dieser stelle blockt?
/* ADC initialisieren */
void ADC_Init(void)
{
uint16_t result;
ADMUX = 0x00; // Kanal waehlen (ADC0)
_delay_ms(100);
ADCSRA = (1<<ADEN) |(1<<ADPS2) | (1<<ADPS0); // Frequenzvorteiler:
setzen auf 32 (4 MHz / 32 = 125 kHz) und ADC aktivieren
ADMUX |= (1<<REFS0) ; // interne Spannung nutzen
/* nach Aktivieren des ADC wird ein "Dummy-Readout" empfohlen, man
liest
also einen Wert und verwirft diesen, um den ADC "warmlaufen zu
lassen" */
ADCSRA |= (1<<ADSC); // eine ADC-Wandlung
while (ADCSRA & (1<<ADSC) ) // auf Abschluss der
Konvertierung warten
/* ADCW muss einmal gelesen werden, sonst wird
Ergebnis der nächsten
Wandlung nicht übernommen. */
result = ADCW;
ADCSRA |= (1<<ADATE); //free running mode einschalten
ADCSRA |= (1<<ADSC);
while (!(ADCSRA & (1<<ADIF))); // warum macht er an dieser stelle
nicht weiter und wartet sich zu Tode?
}
Viele Grüße,
Matthias.
Hi
>// warum macht er an dieser stelle nicht weiter und wartet sich zu Tode?
Weil ADIF nie zurückgesetzt wird.
MfG Spess
spess53 schrieb: > Hi > >>// warum macht er an dieser stelle nicht weiter und wartet sich zu Tode? > > Weil ADIF nie zurückgesetzt wird. > > MfG Spess mensch danke. dann lief wohl mein anderer Code auhc noch nicht richtig, wo adif mit eingebaut war. Einen schönen Tag noch
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.