私はArduino Mega 2560プロジェクトに取り組んでいます。 Windows 7 PCでは、Arduino1.0 IDEを使用しています。私は115200のボーレートでシリアルブルートゥース通信を確立する必要があります。私は、RXでデータが利用できるときに割り込みを受け取る必要があります。私が見たすべてのコードはArduinoのループの中でSerial.availableの条件を設定している "ポーリング"を使用しています。どのようにして、割り込みとそのサービスルーチンのArduinoのループでこのアプローチを置き換えることができますか? attachInterrupt()はこの目的のために用意されていないようです。私はスリープモードからArduinoを目を覚ますために割り込みに依存します。Arduinoシリアル割り込み
私はこの問題は、サブルーチンが提供されないことであるピンに接続されたLED 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
}
をオンにすることになっているこの単純なコードを開発しました。
あなたの質問はブルートゥースと何が関係していますか?普通のUARTと割り込みの使い方を聞いているようですね。 – TJD