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.