volatile int adcReading = 0;
volatile boolean adcDone = false;
byte adcPin;
ISR (ADC_vect)
{
adcReading = ADC;
adcDone = true;
}
void begin(uint8_t prescaler, uint8_t)
void setup() {
pinMode(A0,INPUT);
Serial.begin(115200);
adcPin = 0;
ADCSRA = 0; //Reset the ADCSRA register
ADCSRA = bit (ADEN); //Enable ADC
//Select one of the below prescalers (16 and up recommended)
//ADCSRA |= bit (ADPS0); // 2 ( 1.6875 µs) 592592 Conversions/sec
//ADCSRA |= bit (ADPS1); // 4 ( 3.375 µs) 296296 Conversions/sec
//ADCSRA |= bit (ADPS0) | bit (ADPS1); // 8 ( 6.75 µs) 148148 Conversions/sec
//ADCSRA |= bit (ADPS2); // 16 (13.5 µs) 74074 Conversions/sec
//ADCSRA |= bit (ADPS0) | bit (ADPS2); // 32 (27 µs) 38462 Conversions/sec
//ADCSRA |= bit (ADPS1) | bit (ADPS2); // 64 (54 µs) 18518 Conversions/sec
ADCSRA |= bit (ADPS0) | bit (ADPS1) | bit (ADPS2); // 128 (108 µs) 9259 Conversions/sec
ADMUX = bit (REFS0) | (adcPin & 0x07); // AVcc and select input port
//ADMUX = bit (REFS0) | bit (REFS1) | (adcPin & 0x07); // 1.1V and select input port
//ADMUX = (adcPin & 0x07); // AREF pin ref and select input port
ADCSRA |= bit (ADSC) | bit (ADIE); //Start
}
void loop() {
if(adcDone){
ADCSRA |= bit (ADSC) | bit (ADIE); //Start
adcDone = false;
}
}