Последовательные прерывания Arduino

Я работаю над проектом Arduino Mega 2560. На ПК с Windows 7 я использую IDE Arduino1.0. Мне нужно установить последовательную связь Bluetooth со скоростью 115200 бод. Мне нужно получить прерывание, когда данные доступны на RX. Каждый фрагмент кода, который я видел, использует «опрос», который помещает условие Serial.available в цикл Arduino. Как я могу заменить этот подход в цикле Arduino для прерывания и его процедуры обслуживания? Кажется, что attachInterrupt ()для этого не предназначен. Я зависел от прерывания, чтобы вывести Arduino из спящего режима.

Я разработал этот простой код, который должен включать светодиод, подключенный к контакту 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          
    }

Проблема в том, что подпрограмма никогда не обслуживается.

5
задан dsolimano 27 February 2013 в 21:01
поделиться