www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Watchdog / run time error


Autor: Paule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hei Leute,

ich will meinem Mikrocontroller beibringen artig auf eine asynchrone
serielle Nachricht zu warten, und zwar unbegrenzt lang. Leider hab ich
es bis jetzt nie geschaft, dass das Programm stabil laeuft. es
erscheinen immer Fehler wie

Timeout wail waiting for response from target;
unexpected interrupt;
watchdog / run time error;

obwohl ich den Software-WatchDogTimer regelmaessig hitte und der
Hardware-WDT ausgeschaltet hab. Hat jemand von euch eine Idee was ich
verbessern koennte?

1. Was muss ich suchen/einstellen, damit mein Compiler nicht immer
meckert timeout wail waiting for response from target???

2. Warum spricht der WDT trotzdem an, oder hat jemand eine ANDERE
Loesung jeglicher Art fuer dieses Problem, wie man also einen uC auf
eien Nachricht warten lassen kann.

Waere sehr dankbar fuer Hilfe, den ich hock schon ne ganze Weile dran
und nix geht vorwaerts. verzweifle so langsam...

Gruss Paule

//************************************************
int SerEReceive(char *s) {

      static char ch;
      static int j;
      j=0;

      while((ch=serEgetc()) !='\0') //wartet auf Nullstring
                                    //zum Beenden des Empfangs
      {
      VdHitWd(wd);         //WDT wird gehittet(noetig sind alle 15s)

      if(ch!= -1)          //Emfangsfunktion
             {
             s1[j++]=ch;
             }
      }
      s1[j++]='\0';

      return 1;
                        }

//************************************************

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da ist ja wieder die Kristallkugel gefragt:

Ich vermute mal, serEgetc() endet erst, nachdem ein Zeichen im Puffer
gelandet ist.

D.h. Dein Watchdog wird nie getriggert, wenn nichts ankommt.

Schalte ihn doch einfach ab, da Du ihn eh nicht gebrauchst.


Alternativ sollte es auch ne Funktion geben, die immer zurückkehrt und
im Returnwert signalisiert, ob ein Zeichen im Puffer ist oder nicht.


Peter

Autor: Paule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK vielen Dank Peter, hattest Recht mit der Funktion SerEgetc(). hab das
problem geloest, indem ich die Bibliothek von SerEgetc veraendert hab.

Ich haette aber noch ne andre Frage, die bei mir aufgekommen ist.
Man kann ja die Buffer-Groesse des Eingangs angeben(ich habe zum Bsp.
255 Byte) angegeben. Die Bufferrung muss nach meinem Verstaendnis ja
rein hardwaretechnisch geschehen, da ich ja zum Bsp. bei angehaltenem
Programm kurz mal Daten in den Eingang schicken kann und dann viel
spaeter diese Abrufen kann.
Weiss jemand ob das wirklich rein hardwaretechisch geschieht(dann
muessten ja 255 HardwareSpeicher in meinem uC eingebaut sein. ist das
Realistisch??? Hoert sich viel an oder???
Oder weiss jemand wie das (wirklich) funktioniert, habe in den
Unterlagen nichts dergleichen gefunden.
Waere net wenn einer das posten koennte.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.