Sziasztok!
Tudnátok nekem segíteni vagy egy kis alapleírást adni a canopenről? hogy hogyan is működik vagy mifélre protokoll ez?! Igazából engem speciel az obejct directory érdekelni, hogy az mire is jó és hogyan használják.
Előre is köszi a válaszokat
CanOpen
Sikerült mindenféle okosságot beszereznem CanOpenhez, viszont egy olyan problémába ütköztem, hogy hogyan lehetne azt megoldani, hogy pl van egy rendszer programom és egy user programom, tehát értem én van egy alap rendszer, ami fut és lenne egy user program is, ami nem szólhat bele a rendszer programba max a függvényeit használhatná.
Tehát két szálon futna az egész egy rendszer szálon és egy user szálon!
Erre esetleg lenne vmi ötletetek?
Tehát két szálon futna az egész egy rendszer szálon és egy user szálon!
Erre esetleg lenne vmi ötletetek?
Azért jó lenne tudni a konkrét feladatot...
Az "igazi" multitasking-hez beteszel egy timer megszakítást, ami átkapcsolja a másik szálra a cuccot (elpushol mindent, esetleg stack-et cserél), ez a durva, sok hibalehetőséget hordoz (pl közös hardver portokat összekuszálhatja), vagy a timer billenti a "semafort" és a futó rutin végén megnézi a program, hogy menjen-e tovább, vagy adja át a vezérlést (itt sem árt tudni, hol tartott az előző szál, de az lehet SW stack vagy normál stack elmentés is. A timernek persze szépen be lehet külön-külön állítani az időszeletet, így egyik szál tovább dolgozhat, mint a másik (erőforráskiosztás). Ha UserInterface és Normál dolog kell csak, akkor a UserInterface-t nyugodtan megszakíthatod, úgy is elég lassú a jóember, aki a gombokat nyomogatja. Itt az a bibi, hogy a megszakításban el kell végezned mindent, amit a főprogramnak kell csinálnia, tehát időt kell neki adni. (tehát nem pakolunk bele Waitms-eket meg egyéb bírkaságokat, esetleg bitwait-eket ugye...) De konkrétumok nélkül nehéz kiválasztani a megfelelő módszert.
JAni
Az "igazi" multitasking-hez beteszel egy timer megszakítást, ami átkapcsolja a másik szálra a cuccot (elpushol mindent, esetleg stack-et cserél), ez a durva, sok hibalehetőséget hordoz (pl közös hardver portokat összekuszálhatja), vagy a timer billenti a "semafort" és a futó rutin végén megnézi a program, hogy menjen-e tovább, vagy adja át a vezérlést (itt sem árt tudni, hol tartott az előző szál, de az lehet SW stack vagy normál stack elmentés is. A timernek persze szépen be lehet külön-külön állítani az időszeletet, így egyik szál tovább dolgozhat, mint a másik (erőforráskiosztás). Ha UserInterface és Normál dolog kell csak, akkor a UserInterface-t nyugodtan megszakíthatod, úgy is elég lassú a jóember, aki a gombokat nyomogatja. Itt az a bibi, hogy a megszakításban el kell végezned mindent, amit a főprogramnak kell csinálnia, tehát időt kell neki adni. (tehát nem pakolunk bele Waitms-eket meg egyéb bírkaságokat, esetleg bitwait-eket ugye...) De konkrétumok nélkül nehéz kiválasztani a megfelelő módszert.
JAni