Arduino En Série Interruptions
Je suis en train de travailler sur un Arduino Mega 2560 projet. Sur un PC Windows 7, je suis en utilisant le Arduino1.0 IDE. J'ai besoin d'établir une série de communication Bluetooth avec un débit en bauds de 115200. J'ai besoin de recevoir une interruption lorsque les données sont disponibles à RX. Chaque morceau de code que j'ai vu utiliser “polling”, qui consiste à placer une condition de la Série.disponible à l'intérieur Arduino boucle. Comment puis-je remplacer cette approche à l'Arduino est une boucle d'Interrompre et de sa Routine de Service? Il semble que attachInterrupt() ne fournit à cet effet. Je peux compter sur une Interruption pour réveiller l'Arduino en mode veille.
J'ai développé ce simple code qui est censé pour allumer une LED connectée à la broche 13.
#include <avr/interrupt.h>
#include <avr/io.h>
void setup()
{
pinMode(13, OUTPUT); //Set pin 13 as output
UBRR0H = 0;//(BAUD_PRESCALE >> 8); //Load upper 8-bits of the baud rate value into the high byte of the UBRR register
UBRR0L = 8; //Load lower 8-bits of the baud rate value into the low byte of the UBRR register
UCSR0C |= (1 << UCSZ00) | (1 << UCSZ10); //Use 8-bit character sizes
UCSR0B |= (1 << RXEN0) | (1 << TXEN0) | (1 << RXCIE0); //Turn on the transmission, reception, and Receive interrupt
}
void loop()
{
//Do nothing
}
ISR(USART0_RXC_vect)
{
digitalWrite(13, HIGH); //Turn the LED on
}
Le problème est que la sous-routine n'est jamais servi.
OriginalL'auteur beb_lm | 2012-04-18
Vous devez vous connecter pour publier un commentaire.
J'ai enfin trouvé mon problème. J'ai changé le vecteur d'interruption "USART0_RXC_vect" par
USART0_RX_vect
. Aussi j'ai ajoutéinterrupts();
pour permettre à l'global d'interruption et il fonctionne très bien.Le code est:
Merci pour les réponses!!!!
OriginalL'auteur beb_lm
Avez-vous essayé ce code et ça ne fonctionne pas? Je pense que le problème, c'est que vous n'avez pas activé les interruptions. Vous pourriez essayer d'appeler
sei();
ouinterrupts();
dans votresetup
fonction.OriginalL'auteur Guan Yang
Juste après
UBRR0L = 8
au lieu de cela:changement:
OriginalL'auteur Abdelhalim Zehana