Mit PIC Tasten einlesen in Interrupt, Wiederholung schlägt fehl

OP #1659672
Lesenswert?

Hallo Forenkollegen!

Ich laboriere nun bereits seit geraumer Zeit an folgendem Problem:

Dieser Code wird beim Auftreten eines seriellen Interrupts abgearbeitet:
1
void EingehenderAnruf(){
2
  strcpy(Vergleichstring,"HFP");              //Format, das bei Anfrage gesendet wird: HFP 0 CALLERID "+436642734111" "" 80   
3
if(strstr(Module_Answer,Vergleichstring)!= NULL){    //Durchsuchen der Modulantwort nach 'HFP'
4
    strcpy(Vergleichstring,"CALLERID");            //nächste signifikante Zeichenkette für einen Anruf                
5
    if(strstr(Module_Answer,Vergleichstring)!= NULL){  //Durchsuchen der Modulantwort nach 'CALLERID'
6
      strcpy(Statusausgabe,"Eingehender Anruf");
7
      display_str(Statusausgabe);
8
      setcursor(13);
9
      Tastenwarten=1;
10
      delay_ms(2000);
11
      clear();
12
      do {
13
        if(input(dtaste6)){            //B2 - Denial
14
          Tastenwarten=0;            //Eingabe bereits erfolgt
15
          printf("hangup");
16
          putchar(13);      
17
          strcpy(Statusausgabe,"Anruf       abgewiesen");
18
          clear();
19
          display_str(Statusausgabe);      //Ausgabe Denial
20
          setcursor(13);
21
          delay_ms(2000);
22
          clear();
23
        }
24
        if(input(dtaste7)){            //B3 - Accept
25
          Tastenwarten=0;            //Eingabe bereits erfolgt
26
          printf("answer");
27
          putchar(13);      
28
          strcpy(Statusausgabe,"Anruf       angenommen");
29
          clear();
30
          display_str(Statusausgabe);      //Ausgabe Accept
31
          setcursor(13);
32
          delay_ms(2000);
33
          clear();
34
        }
35
      } while(Tastenwarten==1);            //Warten auf Benutzereingabe
36
    }
37
  }            
38
}
Wenn ich nun angerufen werde funktioniert das ganze einmal. Also kann 
ich auflegen oder abheben. Bei einem erneuten Anruf (nach Beendigung des 
vorherigen) wird allerdings die ganze Funktion nicht mehr ausgeführt. 
Wenn ich die do-while Schleife entferne dann funktioniert das ganze 
allerdings prächtig vom Ablauf her, nur kann ich dann eben nicht 
auflegen oder abheben.

Das ganze funktioniert über das BT-Modul WT32, dieses sendet jedes Mal 
den gleichen String (bereits überprüft).

Ich würde mit wünschen, dass ich bei jedem Anruf abheben oder auflegen 
kann und die Schleife keine Probleme mehr macht. Hat jemand von Euch 
eine Idee?

Mit freundlichen Grüßen
Andreas

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