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

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.