Modernejsie nahrady za watchdogy

Pavel Hudeček edizon na seznam.cz
Čtvrtek Červen 15 14:50:08 CEST 2023


Tak čas nějakého výpočtu může být třeba řádově delší než reakční doba 
něčeho, co ovládá jiný výpočet. V tom bych problém neviděl. Mě se běžně 
v MCU děje víc věcí najednou, pravidelně i nepravidelně.

Jedno z řešení je, že např. obecná čekací funkce po skoro každém 
milisekundovém přerušení koukne na nějakou sadu proměnných, když jsou 
všechny true, nastaví je na false a resetne watchdog. A různé části 
programu zas postumně nahodí true.

Další level je, že se pro nějaký extra dlouhý proces, který se kupodivu 
musí pouštět v hlavní smyčce, udělá čítací proměnná, třeba 
slowProcess1WD, ta se každou sekundu inkrementuje, nahodí se patřičné 
true, že jako OK, ale až slowProcess1WD dosáhne WDLIMIT_slowProcess1WD, 
s nastavováním true se přestane. No a na konci toho dlouhého procesu se 
slowProcess1WD vynuluje.

A samozřejmě existuje nekonečně mnoho lepších či horších možností a 
zejména možností vhodnějších/nevhodnějších pro jiné okolnosti.

PH

Dne 15.06.2023 v 12:04 Miroslav Mraz napsal(a):
> A není to tak trochu oxymóron ? Čas výpočtu přece nemůže být z 
> principu delší než je očekávaná rychlost reakce a tedy ani než timeout 
> WDT. Vlastně mě ani nenapadá nic, co by se muselo počítat (i na běžném 
> 8-bitu) déle než je reakční doba člověka.
> Tedy pokud nechcete třeba kalkulačku s přesností stovky desetinných 
> míst na AVR, tam si asi můžete na logaritmus počkat dost dlouho, ale 
> zase tam je WDT dost zbytečný.
> Chtělo by to nějaký příklad z praxe. Předpokládám, že např. inverzi 
> matice 100x100 v MCU dělá málokdo. Už kvůli tomu, že se mu tam nevejde.
>
> Mrazík
>
> On 15. 06. 23 11:08, Jan Waclawek wrote:
>> ...
>> Druhy problem, pouzitia WDT ci uz internych v mcu alebo externych, je
>> pri pisani programu v C. Niektore matematicke rutiny su velke co sa
>> tyka kodu a trvaju dlhy cas, takze casto sa stane, ze interval na
>> refresh WDT sa prekroci a mcu sa zresetuje. ...


Další informace o konferenci Hw-list