Buenas tardes,
Necesito hacer una interrupción que se active cuando el pin A3 del arduino UNO iguale o supere los 5V del pin digital 6 (este pin estara siempre con 5V de entrada), estuve investigando y di con este codigo de un sitio web:
void setup () {
DDRD |= (1<<PD4);
DIDR1 |= (1<<AIN0D); // Disable Digital Inputs at AIN0 and AIN1
ADCSRA &= ~(1<<ADEN);
ADCSRB |= (1<<ACME); //Set ACME bit in ADCSRB to use external analog input at AIN1 -ve input
ADMUX = 0x03; //select A3 as input
ACSR =
(0 << ACD) | // Analog Comparator: Enabled
(0 << ACBG) | // Clear ACBG to use external input to AIN0 +ve input
(0 << ACO) | // Analog Comparator Output: OFF
(1 << ACI) | // Analog Comparator Interrupt Flag: Clear Pending Interrupt by setting the bit
(0 << ACIE) | // Analog Comparator Interrupt: Disabled
(0 << ACIC) | // Analog Comparator Input Capture: Disabled
(0 << ACIS1) | (0 << ACIS0); // Analog Comparator Interrupt Mode: Comparator Interrupt on Output Toggle
}
void loop() {
if (ACSR & (1<<ACO))
PORTD |= (1<<PD4);
else
PORTD &= ~(1<<PD4);
}
Using Analog Input as Analog Comparator Input of Arduino | ee-diary
Ahora bien, el codigo funciona, cuando el pin analogo 3 llega a 5V o más ejecuta la interrupción, el problema que tengo ahora es que me desactiva el conversor analogo digital de todos los pines, no puedo leer los datos de los demas pines analogos, me marca cero siempre, por enden no puedo hacer uso de los sensores, me podrian dar una idea de como solucionar eso? Gracias, quedo atento.
¿QUE QUIERO HACER?
Necesito hacer una interrupcion (que no se encuentre en el loop principal) donde este revisando constantemente el voltaje de un pin analogo, y cuando sea mayor o igual a 5V ejecute la funcion de la interrupcion (prender un led o cualquier otra cosa).