Strategie zum Füttern eines Watchdogs in einer Multitask-Umgebung
Nachdem ich einen Teil des eingebetteten Codes nach FreeRTOS verschoben habe, habe ich ein interessantes Dilemma bezüglich des Watchdogs. Der Watchdog-Timer ist ein Muss für unsere Anwendung. Die Nutzung von FreeRTOS war auch für uns ein großer Segen. Wenn die Anwendung einfacher war, hat sie den Watchdog zu bestimmten Zeitpunkten in ihrem Logikfluss gespeist, damit sichergestellt werden kann, dass die Aufgabe logisch und zeitnah voranschreitet.
Bei mehreren Aufgaben ist das jedoch nicht einfach. Eine Aufgabe könnte aus irgendeinem Grund damit verbunden sein, keine Fortschritte zu machen, aber eine andere ist gut und bringt genug Fortschritte, um den Wachhund glücklich zu ernähren.
Ein Gedanke war, eine separate Aufgabe zu starten, die nur den Watchdog füttert, und dann einige Zähler zu verwenden, die die anderen Aufgaben regelmäßig erhöhen. Wenn die Watchdog-Aufgabe ankreuzt, wird sichergestellt, dass alle Zähler so aussehen, als würden bei allen anderen Fortschritte erzielt Aufgaben, und wenn ja, fahren Sie fort und füttern Sie den Watchdog.
Ich bin neugierig, was andere in solchen Situationen getan haben?