Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Reset durch Watchdog Kategorie: Programmierung (von André H. - 17.10.2007 8:18)
Als Antwort auf Re: Reset durch Watchdog von Jörg C. - 15.10.2007 22:10
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0, OSOPT V3.1
Hallo Hansi, hallo Jörg,

> Im Modul pcf8583.c2 läuft ein thread watchdog, und hier gibt's m.E. ein Problem mit dem �berlauf
> der long Variable tm.

Das war es in der Tat.
Ich dachte ich hätte diesen kleinen Bug schon längst behoben. Aber scheinbar war
diese Ã?nderung einem meiner 2005er Festplattencrashes zum Opfer gefallen,
und wurde dann von mir schlicht vergessen.
Ich habe mittlerweile eine neue Version von pcf8583.c2 hochgeladen.

> Ich habe bei mir folgenden Code am Laufen (seit dem ohne die von Dir erwähnten Reboots):
>
>
> // - patched version - 12.12.06 JC --
> ...
>  {
>   if (system.timer()-tm)>=(timeout*500) ...


Naja, hier kann es aber auch zu einem Ã?berlauf kommen. ;-)
Denn die Multiplikation des Timeoutwerts mit 500 läuft in Integer ab.
Ab einem Wert von 66 kommt es daher zwar nicht zu ungewollten Neustarts
seitens des Watchdogs, jedoch zu einem Non-Stop-Zurücksetzen des Watchdogs,
da das Ergebnis negativ wird. ;-)
Daher ist es besser, die Differenz der Timerstände duch 500 zu teilen.
Alternativ könnte man auch ein explizites Cast anwenden:

   if (system.timer()-tm)>=cast.intLong(timeout)*500 ...


MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: Reset durch Watchdog (von Jörg C. - 17.10.2007 21:41)