Ciao a tutti,
è la prima volta che scrivo sul forum e chiedo scusa in anticipo ho sbagliato sezione.
Il problema è legato agli interrupt e non riesco riesco a trovare una soluzione al problema legato all'Arduino YUN e spero che riuscite ad aiutarmi nel problema..
Dunque... sto cercando di intercettare segnali 433Mhz provenienti da Sensori esterni, ma sembra che la l'interrupt in questione (ma li ho provati tutti) non venga sollevato. Premetto che tale codice è correttamente funzionante su Arduino UNO.
Di seguito il codice:
volatile word pulse;
OregonDecoderV2 orscV2;
OregonDecoderV3 orscV3;
void ext_int_1(void) {
static word last;
pulse = micros() - last;
last += pulse;
}
void setup () {
Serial.begin(115200);
while (!Serial);
attachInterrupt(1, ext_int_1, CHANGE);
Serial.println("Ready");
}
void loop () {
static int i = 0;
cli();
word p = pulse;
pulse = 0;
sei();
if (p != 0) {
if (orscV2.nextPulse(p))
reportSerial("OSV2", orscV2); //Print data
if (orscV3.nextPulse(p))
reportSerial("OSV3", orscV3); //Print data
}
}
Aggiungo che l'interrupt 1 è collegato al PIN 2 dell'Arduino YUN. Mentre sull'Arduino UNO corrisponde al PIN 3.
Ho provato anche ad aggiungere dei delay nel loop sperando di risolvere .. ma senza nessun esito.
Gli interrupt sull'Arduino YUN funzionano in quanto ho testato con un pulsante la cosa. Alla pressione del pulsante accendevo un LED per 1 sec.
Non riesco a trovare ed a capire come mai il codice presentato non funzioni.
A parte che mi pare manchi l'inclusione di qualche libreria, perché non so OregonDecoder cosa sia, ma non è che le lib che stai usando sono incompatibili con l'Atmega32U4 della Yun? Ricorda che è un micro diverso dall'Atmega328 della Uno.