Stránka 1 z 1

2 nezávislé programy v jednom HW

Napsal: 11 čer 2022, 13:52
od rickmann
Ahoj, chtěl bych se prosím zeptat, jestli lze mít nahrané a spuštěné 2 programy v jedné desce? Jde mi o to, aby funkce delay neovlivňovala využití jiného výstupu. Neboli jako v compu- jeden program stahuje a na druhém hraju. DÍK

Re: 2 nezávislé programy v jednom HW

Napsal: 11 čer 2022, 17:16
od Diego
Arduino multitasking jako takovi neumi. Resi se to pomoci millis a predavani prace mezi programy podle casu.

Re: 2 nezávislé programy v jednom HW

Napsal: 12 čer 2022, 02:00
od gilhad
Delay rozhodně nepoužívat (ona ani vlastně není potřeba)

Jinak existují i hodně minimalistické schedulery, které na Arduinu umožňují cosi jako multitasking, například tuším http://www.chibios.org/dokuwiki/doku.php?id=start

A taky se to dá udělat prostě ručně, jako několik stavových automatů, kde výpočet každým z nich projede velmi rychle a něco dělá jen když nastal čas něco dělat. Takže většinu času se jen proběhne loop() a zjistí se, že zrovna teď nic, takže skončí a spustí se znova s nadějí, že ale třeba teď už něco.

Takhle mám dělaného KlikiMouse, kde běží dvě nezávislé smyčky - vlastně programy - jedna řeší vstupy přez tlačítka a zákmity, druhá řeší výstup přez USB myš+klávesnici (emulovanou), který klidně provede několik kliků dřív, než dozní debounce tlačítka, co to spustil.

http://robodoupe.cz/2018/drobnicky-006- ... e-klikacu/
http://micro-corner.gilhad.cz/blog/Ardu ... ouse2.html
http://micro-corner.gilhad.cz/blog/Ardu ... ouse3.html

Na takovémto principu můžeš postavit těch nezávislých programů poměrně dost - a nechat je běžet "naráz" (teda ony se střídají, ale pokud jsou správně napsané, tak se každý z nich dostane na řadu třeba 1.000x za sekundu což je pro většinu praktických účelů podstatně véc než dost - beztak většinou reagují na takové pomalé věci, jako je člověk, pohyb čehosi mechanického, nebo jiná podobná věc, která z pohledu assembleru má setrvačnost geologických jevů).