Je souhaite utiliser la broche RX matérielle d'Arduino comme broche d'interruption. Si des données sont disponibles sur la broche RX, un signal d'interruption sera généré, appelez une fonction de rappel pour lire les données série entrantes. Je ne veux pas que la lecture de la fonction loop() soit constante sur le port série. J'utilise ce code mais mon interruption n'est pas déclenchée. J'ai également essayé en enlevant digitalPintointerrupt() mais n'obtenant aucune réponse.Utiliser la broche RX matérielle comme broche d'interruption d'arduino
`#include <SoftwareSerial.h>
const byte interruptPin = 0;//In arduino MEGA RX 19. TX 18
String msg = "";//Incomming message
#define Line_RX 3 //UART RX
#define Line_TX 2 //UART TX
SoftwareSerial mySerial (Line_TX, Line_RX); //initialize software serial
void setup() {
// put your setup code here, to run once:
Serial.begin(19200);
mySerial.begin(19200);
attachInterrupt(digitalPinToInterrupt(interruptPin), serial_read, HIGH);
}//end setup
void loop() {
// put your main code here, to run repeatedly:
}//end loop
void serial_read(){
char _bite;
sei();//Disable hardware interrupts for a moment
while(Serial.available()>0){
delay(1);//Do not delete this delay
if(Serial.available()>0){
_bite = (char)Serial.read();
msg += _bite;
if(_bite == '\n'){
mySerial.print(msg);//Do what you print your message
msg = "";//Clean message for new one
break;
}//end if
}//end if
}//end while
cli();//re-enabling hardware interrupts
}//en
d serial_read`
J'ai écrit une instruction d'impression au début mais je ne suis pas en mesure d'entrer la fonction de rappel. Si j'utilise le logiciel série (broche 2,3 comme TX, RX) et l'utiliser comme broche d'interruption, alors la fonction de rappel appelée 2 fois pour chaque octet. mais je ne suis pas en mesure d'appeler la fonction de rappel avec le matériel série –
Je ne suis pas sûr de savoir comment vous diriger à procéder. Je conçois des conceptions de métal nu plus souvent que des conceptions basées sur Arduino. Mais un rapide coup d'œil sur votre code et les instructions 'cli' et' sei' avec des commentaires qui impliquent exactement le contraire ont attiré mon attention, c'est tout. Toutes mes conceptions de série utilisent la transmission et la réception par interruption comme indiqué dans ma réponse éditée. – TomServo
Désolé pour l'erreur, je dois écrire cli() pour désactiver l'interruption. Mais je ne suis toujours pas capable d'appeler ma fonction de rappel. Si j'utilise le logiciel série, broche no (2,3) comme tx et rx, alors je suis capable d'appeler ma fonction de rappel. –