Interrupt UART mit Bluetooth wir zu oft ausgelößt

OP #5273646
Lesenswert?

Hallo,

ich habe ein Problem mit meinem Bluetoothmodul und dem UART (RX) 
Interrupt.
Ich möchte von meinem BT Modul einzelne Zeichen empfangen und diese in 
einen Puffer schreiben. Leider funktioniert das nicht richtig.



Hier mein Programmcode:


ISR(USART_RXC_vect)
{

       int8_t Recive_Sign,i=0;
       Recive_Sign=UDR;
       // uart_putc(Recive_Sign);     // test für direkte Rückgabe

       //********************  speichern  der Daten in 
Puffer*********************



     while (i<4)
     {
           Telegramm[i]=Telegramm[i+1];
           i++;
     }
     Telegramm[4]=Recive_Sign;

......hier geht mein Code weiter der zu Testzwecken mit "UART_putc" alle 
Telegrammvariablen des Array ausgegeben hat.


Das Verhalten sieht so aus, dass ich einen Buchstaben an den Controller 
sende und nach meiner Erwartung sollte der in Telegramm[4] zu finden 
sein. Sende ich noch eines sollte der erste Buchstabe in Telegramm[3] 
rutschen und in Telegramm[4] der neu empfangene stehen.
Mein Verhalten ist nun so ich sende einen Buchstaben und der tauscht 
sofort auf allen Telegrammvariablen auf. Scheinbar wird der Interrupt 
mehrfach aufgerufen.

Auf Grund dessen hatte ich eine einfache Zählvariabe im interrupt 
angelegt und diese wurde scheinbar bei einem gesendeten Zeichen auch 
mehrfach gezählt.

Kann ich sicherstellen das der Inerrupt nur 1 mal abgearbeitet wird?
Angehängte Dateien:
OP #5273732
Lesenswert?

Hallo,

schon mal danke für die Antwort. Leider brachte es noch nicht den 
Erfolg.
Ich habe aber das System erkannt, nun hängt es nur noch an der Lösung 
:-).


Ich habe mal einen Screenshot von meinem Handy welches als Sender der 
daten genutzt wird.

Die blauen Zahlen sind die Signale die ich gesendet habe die grünen sind 
die Antworten vom Controller = der Inhalt meiner Telegramm Variable.

Ich habe eine 1 gesendet und diese bekomme ich auch in meinem 
Antworttelegramm zuerst (Telegramm[4]- Variable) zurück.

Als zweites habe ich eine 2 gesendet. Die 1 rutscht eine Stelle weiter 
(Telegramm[3]) und die 2 kommt in Telegramm[4]. Aber wie mann sieht 
bekomme ich nun als letzte 3 Werte immer 2 und 1 im wechsel. 
Normalerweise sollten da noch die 5 und 1 aus dem oberen Pufferinhalt 
stehen.

Dieses Verhalten ist immer gleich. Bei jedem 2 Durchlauf überschriebt er 
mir den Inhalt des Puffer an den letzten 3 Stellen (Telegramm[2..0]).
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren