Interrupt nicht mehr Deaktivierbar - Endloses While :(

OP #1692757
Lesenswert?
• ▲
▼
Hallo

Ich empfange per RS232 Eine Zeichenkette.

Ich überprüfe nach jedem empfangenen /r ob ein bestimmter Text enthalten 
ist

Dies löse ich so:
1
ISR(USART_RX_vect)
2
{
3
    unsigned char buffer;
4
  
5
    // Daten aus dem Puffer lesen
6
    buffer = UDR0;
7

8
    
9
    if (buffer!='\r' && buffer!='\n' && uart_str_count<uart_maxstrlen-1){
10
      uart_string[uart_str_count]=buffer;
11
      uart_str_count++;
12
    } 
13
    else {       //String komplett
14
      uart_string[uart_str_count]='\0';
15
      uart_str_count=0;
16
      
17
      if( strcmp( uart_string, "OK" ) == 0 ) 
18
      {
19
        cli();        //Interrupt Deaktivieren
20
        status(3);    //Lässt LED's Blinken
21
        Acknowledge = 1;
22
      }
23
      
24
    }
25

26
}


Wie man Sieht, warte ich auf das String Ende welches mir durch
/r angezeigt wird.

Enthält der String nun OK so weiss ich das mein GSM Modem alles 
verstanden hat. Deshalb setze ich die Global Definierte Variable 
Acknowledge auf 1


Mein Aufruf sieht so aus:
1
Acknowledge = 0;
2
              while(Acknowledge != 1)  //Befehl soll solange gesendet werden bis OK empfangen wird!!!
3
              {
4
                uart_puts("AT+CMGD=1");
5
                uart_putc('\r');
6
                uart_putc('\n');
7
              }
8
              sei();
9
              status(2);
10
              Acknowledge = 0;

Das merkwürdige ist, die LED's Blinken beim Empfang von OK
jedoch springt mein Programm NIE!!! aus der While Schleife.

Selbst CLI() Innerhalb des Interrupts brachte keine Hilfe..

Ich bin echt ratlos
hoffe ihr könnt mir helfen

Danke schonmal

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.