spouštím a čtu přímo, takto:
unsigned int mujAnalogRead(byte port, byte reference)
{
ADMUX = (reference << 6) | (port & 0x07);
delay(5);
ADCSRA |= _BV(ADSC); // Start conversion
while (bit_is_set(ADCSRA,ADSC)); // measuring
// return ADCW; // zahodit
ADCSRA |= _BV(ADSC); // Start conversion
while (bit_is_set(ADCSRA,ADSC)); // measuring
return ADCW;
}
A to ještě i ten výsledek této funkce kolikrát zahazuju a volám ji znovu, až tak tomu nevěřím, že to bude dodávat reálné výsledky.
Přerušení po každém měření mi přijde jako overkill, vždyť je to normálně převedeno raz-dva. Signály sampluju stejnosměrné stabilní, ale stejně se mi ta naměřená hodnota podezřele mění - něco mi tam vnáší šum nebo ruch nebo nevím co.