Forum: Mikrocontroller und Digitale Elektronik free running mode nict aktivierbar, warum ?


von Matthias H. (maethes26)


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.

von spess53 (Gast)


Lesenswert?

Hi

>// warum macht er an dieser stelle nicht weiter und wartet sich zu Tode?

Weil ADIF nie zurückgesetzt wird.

MfG Spess

von Matthias H. (maethes26)


Lesenswert?

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
Noch kein Account? Hier anmelden.