Buenas tardes,
Referente a la última respuesta:
Quote:
Si la interrupción lleva un tiempo de ejecución largo, LoRaWAN va a perder paquetes de información ya que Arduino estará gestionando la interrupción.
He seguido haciendo pruebas y no he conseguido en ningún caso que durante los 10 segundos que se ejecuta la función "LoRaWAN.receiveRadio(10000);" se ejecute el código de otra interrupción provocada en el pin 2 de la placa Arduino UNO.
No me importa que se pierdan paquetes, en este caso la prioridad es que se ejecute el código de la otra interrupción provocada por el pin 2.
Adjunto un código y su salida para mostrar el comportamiento.
Código:
Code:
void loop() {
listenP2PMessage();
Serial.begin(57600);
Serial.print(F("\nBefore delay\n"));
delay(3000);
Serial.print(F("\nAfter delay\n\n"));
Serial.end();
}
Salida:
Code:
sys get ver
mac pause
radio set pwr 15
radio set freq 869300000
radio set sf sf12
radio set cr 4/5
radio set bw 125
radio set crc on
radio set wdt 10000
radio rx 0
Before delay
After delay
sys get ver
mac pause
radio set pwr 15
radio set freq 869300000
radio set sf sf12
radio set cr 4/5
radio set bw 125
radio set crc on
radio set wdt 10000
radio rx 0
Before delay
After delay
sys get ver
mac pause
radio set pwr 15
radio set freq 869300000
radio set sf sf12
radio set cr 4/5
radio set bw 125
radio set crc on
radio set wdt 10000
radio rx 0
#A#T
Before delay
#A#T #A#A#A#T #A#a#a#A#A#a#T #O 3
After delay
#a#A#A#a#a#A#A#T #Asys get ver
mac pause
radio set pwr 15
radio set freq 869300000
radio set sf sf12
radio set cr 4/5
radio set bw 125
radio set crc on
radio set wdt 10000
radio rx 0
#A#T
Before delay
#A#a#a#T #A#A#a#a#A#A#T #A#A#A#T #O 8
#A#A#A#A#T #A#A#A
After delay
#A#T #A#A#A#T #A#Asys get ver
#A#T #O 12
mac pause
radio set pwr 15
radio set freq 869300000
#Aradio set sf sf12
#Aradio set cr 4/5
radio set bw 125
radio set crc on
radio set wdt 10000
radio rx 0
#A#T #A
Before delay
#A#A#A#T #A#A#A#A#T #A#A#a#T #O 16
#a#A#A#a#a#A#A#T #a#a#A#A#a#a#A
After delay
#A#T #a#a#A#A#A#T #A#a#a#Asys get ver
#Amac pause
#a#T #O 20
#aradio set pwr 15
#Aradio set freq 869300000
#Aradio set sf sf12
#aradio set cr 4/5
#a#Aradio set bw 125
radio set crc on
#A#T #aradio set wdt 10000
#a#Aradio rx 0
#A#a#a
Before delay
#A#A#T #a#a#A#A#A#A#T #A#A#A#A#T #O 24
#A#A#A#A#T #A#A#A
After delay
#A#T #A#A#A#T sys get ver
mac pause
radio set pwr 15
radio set freq 869300000
radio set sf sf12
radio set cr 4/5
radio set bw 125
radio set crc on
radio set wdt 10000
radio rx 0
Before delay
After delay
sys get ver
mac pause
radio set pwr 15
radio set freq 869300000
radio set sf sf12
radio set cr 4/5
radio set bw 125
radio set crc on
radio set wdt 10000
radio rx 0
Before delay
After delay
sys get ver
mac pause
radio set pwr 15
radio set freq 869300000
radio set sf sf12
radio set cr 4/5
radio set bw 125
radio set crc on
radio set wdt 10000
radio rx 0
Cuando salta la interrupción se imprimen textos como "#A" o "#a", pero esto sólo sucede una vez que ha finalizado la función "LoRaWAN.receiveRadio(10000);".
¿Hay alguna forma de que la interrupción del pin 2 haga que se salga de la función "LoRaWAN.receiveRadio()" aunque se pierdan los paquetes?
Saludos.