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.

Qu'est-ce que votre question ont à faire avec le bluetooth? Semble que vous êtes en train de demander comment faire pour utiliser un UART avec des interruptions?

OriginalL'auteur beb_lm | 2012-04-18