Bonjour à tous,
La situation est simple: j'utilise le comparateur de l'Arduino UNO, avec comme référence une tension externe, et en negative input les pins analogiques reliés au multiplexeur ADMUX.
Je souhaiterais qu'une interruption du comparateur ne se produise qu'une fois sur une entrée. Pour ce faire, j'attribue au multiplexeur l'entrée A0, et dans l'interruption je la change pour A1. Cela ne change rien, à chaque passage en dessous ou au dessus de la valeur de référence, l'entrée A0 me déclenche une interruption.
Idéalement, l'interruption ne serait déclenchée qu'une fois, l'entrée A0 étant après virtuellement désactivée et remplacée par A1.
Voici du code:
bool Triggered;
void setup(){
//comparator setup
ACSR = 0x10; // ACI -> 1 clear interrupt flag
ADCSRA = (0<<ADEN); // ADC disabled
ADCSRB = (1<<ACME); // enable MUX for negative input
//set MUX input to A0
ADMUX = (0 << MUX0);
ADMUX = (0 << MUX1);
ADMUX = (0 << MUX2);
ADMUX = (0 << MUX3);
//comparator interrupt on toggle
ACSR = (0 << ACIS0);
ACSR = (0 << ACIS1);
ACSR = (1 << ACIE);
Serial.begin(9600);
Serial.println("Start");
Triggered = false;
}
ISR (ANALOG_COMP_vect){
Triggered = true;
//set MUX input to A1
ADMUX = (1 << MUX0);
ADMUX = (0 << MUX1);
ADMUX = (0 << MUX2);
ADMUX = (0 << MUX3);
}
void loop(){
if(Triggered){
Serial.println("Triggered");
Triggered = false;
}
}
Une idée de la procédure à suivre pour régler ce problème?