AVR/Examples/AD — Analog-Digital Example
uint16_t ReadADC() { uint16_t result = 0; /* Temporary variable */ PRR ^= (1<<PRADC); /* Set the Power Reduction ADC-bit to 0 */ ADMUX = (0<<MUX3)|(1<<MUX2)|(0<<MUX1)|(0<<MUX0); /* ADC4 and AREF voltage reference */ DIDR0 = (1<<ADC4D); /* Disable the digital buffer at this pin */ ADCSRA = (1<<ADEN)|(1<<ADSC); /* Start conversion */ while(ADCSRA & (1<<ADSC)) /* Wait until the conversion is finished */ ; result = (unit16_t)ADCL; /* Get the lover 8 bits of the result*/ result += (((unit16_t)ADCH)<<8); /*+ upper 2 bits.*/ ADCSRA = 0x00; /* Turn off the ADC module */ PRR |= (1<<PRADC); return result; }