Vícevláknový program

Kabicek
Příspěvky: 89
Registrován: 04 kvě 2018, 07:20
Reputation: 0

Vícevláknový program

Příspěvek od Kabicek » 17 úno 2020, 17:57

Dobrý den měl bych otázku. Jde v Arduinu IDE aby fungovalo více cyklů zároveň ??

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: Vícevláknový program

Příspěvek od KamilV » 17 úno 2020, 18:09

Ne. Paralelní výpočty na jednom jádře možné nejsou.
Jde využít pouze přerušení, které jeden výpočet přeruší, "odskočí" do jiného a pak se zase vrátí do původního.

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

Re: Vícevláknový program

Příspěvek od gilhad » 17 úno 2020, 18:27

Ano, jde, jen to neni "uplne naraz", protoze ma jen jedno vlakno, ale "skoro naraz" kdy se mohou z valne casti prekryvat.

Viz napriklad 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

kde "zaroven" bezi cteni klaves a jejich debouncing a "zaroven" bezi nejaky z cyklu, ktery klika mysi a/nebo klavesnici a v principu neni duvod, proc by jich nemelo naraz bezet vyrazne vic (proste se da za sebe vic nezavislych stavovych automatu a kazdy z nich si pobezi sve cykly po svem).

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: Vícevláknový program

Příspěvek od KamilV » 17 úno 2020, 19:05

Mimořádně, Gilhade, nesouhlasím. To je pouze větvení sekvenčního výpočtu, kdy se v každé fázi sice dělá něco jiného, ale jednotlivé fáze se nepočítají v jeden okamžik, nesdílí paměť ani IO.
Program neběží ve více vláknech, což je - dle nadpisu - požadováno.
Chápu, že jsi "zároveň" dal do uvozovek, ale začít odpověď slovy "Ano, jde..." je IMHO matoucí.

Kabicek
Příspěvky: 89
Registrován: 04 kvě 2018, 07:20
Reputation: 0

Re: Vícevláknový program

Příspěvek od Kabicek » 17 úno 2020, 21:27

No prostě potřebuji, aby mi běželi 2 nebo více např. cyklů while zároveň. To jde nebo ne??

Uživatelský avatar
kiRRow
Příspěvky: 1152
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: Vícevláknový program

Příspěvek od kiRRow » 17 úno 2020, 22:01

Nejde ...
... ale ten procesor je tak rychlý, že když vykonává několik po sobě jdoucích funkcí, tak to vypadá jako by to dělal najednou.

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: Vícevláknový program

Příspěvek od KamilV » 17 úno 2020, 22:20

Úplně nejlepší asi bude, když nám řekneš, co přesně chceš udělat, čeho chceš těmi souběžnými cykly dosáhnout. Možná existuje i jiné řešení než paralelní výpočet...

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

Re: Vícevláknový program

Příspěvek od gilhad » 18 úno 2020, 03:31

@KamilV: To je prave ten rozdil mezi "provadel paralelne vic instrukci naraz" a "fungovalo nekolik cyklu naraz".

To prvni samozrejme nejde, protoze procesor je jednovlaknovy a umi delat jen jednu instrukci v dany okamzik (vcetne preruseni).

To druhe samozrejme jde, pokud se to vhodne napise - muzu mit jeden cyklus (while, for, ci libovolny jiny), co kazde 1.1 sec prepne LEDku mezi sviti/neviti. Druhy, ktery kazde 1.2 sec udela krok motorkem vlajeckou. Treti, ktery ceka libovolne dlouho na stisknuti tlacitka, pak zmeni barvu te LEDky a naledne 0.5 sec. to tlacitko debouncuje. Ctvrty, ktery porad dokola hlaje par taktu z pisnicky. Paty, ktery ... a to vse se deje naraz a nezavisle na sobe (i kdyz se ceka na dodebouncovani tlacitka, tak LEDka blika, motorek krokuje, pisnicka hraje ...). Sdilet jak pamet, tak I/O vetsinou muzou do te miry, ze se jim muze vyplatit ji vuci sobe zamykat, aby se predeslo rizikovym konkurencnim pristupum, napr. do retezcu, ci jinych struktur.

@Kabicek: Co si od tech while cyklu slibujes, ze budou delat - pokud je neumis napsat presne, tak aspon formou komentare - vetsina veci, ktere si zacatecnik od cyklu muze slibovat, lze provadet "naraz", alespon ze se to tak nezavislemu pozorovateli jevi. Naopak malokdy dokaze zacatecnik vymyslet rozumnou situaci, kde by to "prakticky neslo".

Kabicek
Příspěvky: 89
Registrován: 04 kvě 2018, 07:20
Reputation: 0

Re: Vícevláknový program

Příspěvek od Kabicek » 18 úno 2020, 11:03

Ok tak v příloze posílám program. Snažím se vytvořit asistenta, který bude odpovídat na mé hlasové příkazy. Problém je v tom, že ta deska na rozpoznávání hlasu dokáže uložit až 80 příkazů, ale do recognizeru se dá vložit jen 7. To znamená že jsem si těch více příkazů rozdělil do několika skupin po 7 a mezi nimi přepínám tak, že ty co tam jsou smažu, oni se uloží zpět do paměti a nahraju tam jiné. To dělám pomocí vytvořené funkce (function). Jak tam mám ten cyklus while, tak to hledám v tý první skupině těch příkazů. No ale já potřebuju, aby to hledalo zároveň ve všech těch příkazech. To znamená, že když vyslovím příkaz z jiné skupiny, tak to skočí do té jiné a odpoví mi.
Přílohy
automatic_cmd.ino
(5.51 KiB) Staženo 154 x

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: Vícevláknový program

Příspěvek od ondraN » 18 úno 2020, 18:53

gilhad píše:
18 úno 2020, 03:31
@KamilV: To je prave ten rozdil mezi "provadel paralelne vic instrukci naraz" a "fungovalo nekolik cyklu naraz".

To prvni samozrejme nejde, protoze procesor je jednovlaknovy a umi delat jen jednu instrukci v dany okamzik (vcetne preruseni).

To druhe samozrejme jde, pokud se to vhodne napise - muzu mit jeden cyklus (while, for, ci libovolny jiny), co kazde 1.1 sec prepne LEDku mezi sviti/neviti. Druhy, ktery kazde 1.2 sec udela krok motorkem vlajeckou. Treti, ktery ceka libovolne dlouho na stisknuti tlacitka, pak zmeni barvu te LEDky a naledne 0.5 sec. to tlacitko debouncuje. Ctvrty, ktery porad dokola hlaje par taktu z pisnicky. Paty, ktery ... a to vse se deje naraz a nezavisle na sobe (i kdyz se ceka na dodebouncovani tlacitka, tak LEDka blika, motorek krokuje, pisnicka hraje ...). Sdilet jak pamet, tak I/O vetsinou muzou do te miry, ze se jim muze vyplatit ji vuci sobe zamykat, aby se predeslo rizikovym konkurencnim pristupum, napr. do retezcu, ci jinych struktur.

@Kabicek: Co si od tech while cyklu slibujes, ze budou delat - pokud je neumis napsat presne, tak aspon formou komentare - vetsina veci, ktere si zacatecnik od cyklu muze slibovat, lze provadet "naraz", alespon ze se to tak nezavislemu pozorovateli jevi. Naopak malokdy dokaze zacatecnik vymyslet rozumnou situaci, kde by to "prakticky neslo".
Teda, tohle by mě fakt zajímalo. Nemáš někde nějaký příklad nebo odkaz na nějaký projekt, který to využívá? Já jsem zatím vždy řešil nějaké souběžné úlohy přes časový interrupt. Taky by mě zajímala ta ochrana a zamykání paměti.

Odpovědět

Kdo je online

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