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.
InformationsquelleAutor beb_lm | 2012-04-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Endlich habe ich mein problem gefunden. Ich änderte die Unterbrechung Vektor "USART0_RXC_vect" von
USART0_RX_vect
. Auch ich Hinzugefügtinterrupts();
um die Globale interrupt-und es funktioniert sehr gut.Der code ist:
Danke für die Antworten!!!!
InformationsquelleAutor beb_lm
Haben Sie versucht, dass code und es hat nicht funktioniert? Ich denke, das problem ist, dass Sie noch nicht aktiviert interrupts. Sie könnten versuchen, den Aufruf
sei();
oderinterrupts();
in Ihremsetup
Funktion.InformationsquelleAutor Guan Yang
Nur nach
UBRR0L = 8
statt:ändern:
InformationsquelleAutor Abdelhalim Zehana