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

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