Estoy usando un ATTINY44 en mi proyecto actual.
Como necesito hacer un cambio sensible al tiempo, me gustaría evitar cualquier retraso innecesario.
Para controlar otro dispositivo (no sensible al tiempo) tengo que leer un valor analógico.
Leí varios ejemplos (incluido el código que verifiqué a continuación de los núcleos de Arduino (para analogRead()
) y la mayoría está configurando el bit ADSC y luego esperando con un bucle while para que finalice la conversión.
También leí sobre el modo de ejecución libre en la hoja de datos y el modo de reducción de ruido (conversión durante el tiempo de inactividad).
Así que ahora mis preguntas:
-
¿El bucle es solo una codificación incorrecta o lo están haciendo para reducir el ruido (porque en el modo de ejecución libre, también se ejecutaría otro código durante la conversión)?
-
Si pongo la verificación de ADSC en mi ciclo principal, ¿cuáles serían las ventajas / desventajas?
-
Si este método es para reducir el ruido, ¿cuánta inexactitud agregada (tal vez una cifra aproximada) puedo esperar? ¿Puedo vivir con + -2 o 3LSB?
Código de wiring_analog.c:
// start the conversion
sbi(ADCSRA, ADSC);
// ADSC is cleared when the conversion finishes
while (bit_is_set(ADCSRA, ADSC));