Gast
#285463
Hallo - kann mir jemand erklaeren, wie ich den Sleep-Mode zum Auslesen
des ADCs richtig einstelle?! - ich hab den Beispiel-Code genommen und
leider haengt sich das Device hinterher auf:
uint16_t ReadChannel(uint8_t mux,uint8_t count)
{
uint8_t i;
uint32_t result = 0;
set_sleep_mode (SLEEP_MODE_ADC);
ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0); //Frequenzvorteiler
ADMUX = mux; // Kanal waehlen
ADMUX |= (0<<REFS1) | (0<<REFS0); // interne Referenzspannung nutzen
ADCSRA |= (1<<ADSC); // eine ADC-Wandlung
sleep_mode ();
while ( ADCSRA & (1<<ADSC) ); // auf Abschluss der Konvertierung
warten
for(i=0;i<count;i++)
{
ADCSRA |= (1<<ADSC);
while ( ADCSRA & (1<<ADSC) );
result += ADCW;
}
ADCSRA &= ~(1<<ADEN);
result /= count;
return result;
}
Ahh - btw: ATMega8