funktion in C überwachen/beenden

Gast #2151602
Lesenswert?
• ▲
▼
hallo!

Angenommen, ich habe eine Funktion, die sich öfter "aufhängt" Wo sie 
sich aufhängt, weiß ich nicht genau. diese Funktion ruft nämlich einige 
andere Funktionen auf. Alle haben auch schleifen. Es gibt so viele 
Abzweige, dass ich nicht jede Codezeile einzeln debuggen kann.(ginge bei 
mir nur per Uart)


Ein Timerinterrupt kommt regelmäßig wie erwünscht. Ich habe mir gedacht, 
dass ich die Zeit überwache, die der Controller außerhalb der main-Loop 
verbringt.

Gibt es eine möglichkeit, die Funktion aus einer anderen heraus zu 
beenden?


AVRGCC Atmega 32

ps: es geht um die RX funktion der "bidirektionalen Funkbrücke RFM12"
Gast #2151613
Lesenswert?
• ▲
▼
Hier die aufger. Funktion:

1
unsigned char rf12_rxdata(unsigned char *data, unsigned char *status, unsigned char *id)
2
{  unsigned char i, number;
3
  unsigned short crc, crcref;
4
  LED_RX=1;
5
  *status=rf12_rxbyte();        // Status
6
  crc=_crc_ccitt_update (0, *status);
7
  number=rf12_rxbyte();        // Anzahl der zu empfangenden Bytes
8
  crc=_crc_ccitt_update (crc, number);
9
  if (number>MAX_BUF)
10
    number=MAX_BUF;
11
  if (number)
12
  {  
13
    uart_puts(s);
14
    *id=rf12_rxbyte();        // Paketnummer
15
    crc=_crc_ccitt_update (crc, *id);
16
    for (i=0; i<number; i++)
17
    {  *data=rf12_rxbyte();
18
      crc=_crc_ccitt_update (crc, *data);
19
      data++;
20
    }
21
  }
22
  crcref=rf12_rxbyte();        // CRC empfangen
23
  uart_puts("crc emp\r\n");
24
  crcref|=rf12_rxbyte()*256;      // CRC empfangen
25
  uart_puts("crc emp_2\r\n");
26
  rf12_trans(0xCA81);          // restart syncword detection:
27
  rf12_trans(0xCA83);          // enable FIFO
28
  LED_RX=0;
29
  if (crcref!=crc)
30
    return 255;            // checksum error
31
  else
32
    return number;          // data ok
33
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.