2 nezávislé programy v jednom HW

Odpovědět
rickmann
Příspěvky: 20
Registrován: 17 pro 2019, 09:53
Reputation: 0

2 nezávislé programy v jednom HW

Příspěvek od rickmann » 11 čer 2022, 13:52

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

Uživatelský avatar
Diego
Příspěvky: 166
Registrován: 23 črc 2017, 09:43
Reputation: 0
Kontaktovat uživatele:

Re: 2 nezávislé programy v jednom HW

Příspěvek od Diego » 11 čer 2022, 17:16

Arduino multitasking jako takovi neumi. Resi se to pomoci millis a predavani prace mezi programy podle casu.
https://arze.cz - ARduino Zapojení Elektronika

Uživatelský avatar
gilhad
Příspěvky: 778
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: 2 nezávislé programy v jednom HW

Příspěvek od gilhad » 12 čer 2022, 02:00

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ů).

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 14 hostů