2 nezávislé programy v jednom HW
2 nezávislé programy v jednom HW
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
Arduino multitasking jako takovi neumi. Resi se to pomoci millis a predavani prace mezi programy podle casu.
https://arze.cz - ARduino Zapojení Elektronika
Re: 2 nezávislé programy v jednom HW
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ů).
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ů).
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 7 hostů