free running mode nict aktivierbar, warum ?

OP #2311840
Lesenswert?

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.

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