Vícevláknový program

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, 19:53

Hned na zacatku uvadim tri postupne se rozvijejici projekty, ktere to na ruznem stupni slozitosti resi (KlikacuX)

Princip je ten, ze ty ulohy rozdelis na male casti a poskladas jako stavove automaty. Pak v kazdem pruchodu loop() resis jen jeden trivialni stav (pokud vubec nastane jeho cas) od kazde ulohy. (test tlacitka/cekani na debounce | stisknuti mysi/cekani/pusteni/ cekani/ opakovani pokud jich bylo min nez 20 | stisk klavesy/cekani/pusteni/ ...) - kazda cast probehne "prakticky hned", cekani se dela testem na millis - pokud nenastala vhodna doba, neudelam nic a necham bezet dalsi krok. Ve vysledku se to tvari, ze vsechny prekryvajici se cykly bezi "naraz".

Veskera pamet v Arduinu je vlastne volne dostupna odevsad - pokud bys mel tyhle jednotlive stavy nad zpracovanim nejakeho seznamu/retezce/slozite struktury a mel je dost podrobne, ze by to zpracovani neprobehlo v jednom kroku, a vic uloh by pristupovalo ke stejne cesti pameti, tak se musi nejak domluvit, kdy muzou psat a kdy cist, aby to bylo konzistentni.

Napriklad, pokud tam delam nejake slozitejsi klikani mysi a klavesnici naraz, a zaroven ctu tlacitka, tak chci, aby to na stisk tlacitka skoncilo, ale tak, ze to pusti jak mys, tak uvolni vsechny klavesy, idealne v nejakou vhodnou chvili.

Takze tlacitko mi neshodi ten automat, jen mu nastavi promennou "stop_me" a ten automat dojede do mista, kde muze bezpecne skoncit. Nacez zase natavi nejakou globalni promennou, ktera dovoli sputit dalsi automat misto nej.

---

Pak jsou tu "skutecne" multitaskove OS pro arduino, napr. https://create.arduino.cc/projecthub/fe ... ino-ebc3cc https://github.com/greiman/ChNil https://github.com/greiman/NilRTOS-Arduino ktere ti udelaji "skutecny multitaking" na Arduinu

(Jestli se dobre pamatuju, tak se vetsinou povesi na casovy interrupt a v pravidelnych intervalech prepinaji bezici ulohy at tyto chteji ci nikoli) a tam uz skutecne potrebujes atomicke semafory, aby se ti dve veci nepotkaly uprostred prace necekane.

Odpovědět

Kdo je online

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