Arduino-Serial-Interrupts

Ich arbeite an einem Arduino Mega 2560 Projekt. Bei einem Windows 7 PC ich bin mit dem Arduino1.0 IDE. Ich brauche zum Aufbau einer seriellen Bluetooth-Kommunikation mit einer Baudrate von 115200. Brauche ich zum empfangen einer interrupt wenn Daten am RX. Jedes Stück code, den ich gesehen haben, verwenden Sie "polling", das gibt er einen Zustand des Seriellen.innerhalb der Arduino die Loop-Schleife. Wie kann ich ersetzen, die dieser Ansatz bei der Arduino die loop-für einen Interrupt und dessen Service-Routine? Es scheint, dass attachInterrupt() nicht bietet für diesen Zweck. Ich bin angewiesen auf ein Interrupt zu wecken Arduino aus dem sleep-Modus.

Entwickelt ich diesen einfachen code soll auf einer LED verbunden pin 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          
    }

Das problem ist, dass das Unterprogramm wird nie serviert.

Was hat deine Frage nichts zu tun haben mit bluetooth? Scheint, dass Sie nur zu Fragen, wie mit einem regulären UART mit interrupts?

InformationsquelleAutor beb_lm | 2012-04-18

Schreibe einen Kommentar