[elektro] C kerdes - macro szamlalo

Rancz Lajos csiga at fosch.com
Wed Sep 23 20:01:58 CEST 2009


Szia!

Ilyen jellegű problémát én Python/Perl előfeldolgozó scripttel oldanék 
meg ami a prebuild szakaszban legyártja a táblát előre egy C fájlba és 
az a fordítás során belefordul.

Üdv,
Lajos

Moczik Gabor írta:
> hg12345 wrote:
>   
>> Nem ez lenne a megoldás
>>
>> Kell egy header ami tartalmazza az ENUM definiciót
>>
>>  typedef enum ŕ2D9indexID={     ID_A=0,ID_B, ID,_C  } ID_t;
>>
>> Ezt ahová kell includolod, is mindent itt bővítesz.
>>     
>
> Sejtette, hogy nem fog menni amit akarok, de közben kiderült, hogy talán nem 
> is kell. Inkább leírom az eredeti komplex problémát, biztos van itt aki 
> jobban vágja ezt.
>
> Az egészre tekintsünk úgy, hogy ez jelen pillanatban egy 8 bites PIC-en kell 
> fusson, tehát nem lehet a világ végéig bonyolítani...
>
> Eseményvezérelt rendszer készül, amolyan kooperatív multitask szerűség, bár 
> köze nincs hozzá. :-)
> A főprogram annyit csinál, hogy egy végtelen ciklusban kiolvassa egy 
> globális eventq-ból az eseménykódot, majd meghívja a hozzá tartozó függvényt 
> ami valamit csinál, új eseményt generálhat, stb., de mindenképp vissza kell 
> térjen. A megszakítás rutin is lekezeli a maga nagysebességű problémáit, és 
> ha valami van (pl. billentyűnyomás) ott is keletkezhet esemény.
>
> A probléma amit nem tudok OOP szemlélet szerint jól megoldani, hogy mindenki 
> csak a rá tartozó dolgokkal foglalkozzon. Pl. ahhoz hogy meghívjam az 
> esemény kezelő függvényt a main()-ben lévő ciklusnak tudnia kell az összes 
> létező eseményről és a hozzá tartozó függvényről.
>
> Egy lehetséges verzió, hogy minden egység az inicializáció során 
> regisztrálja a saját eseménykezelőit, aminek a vége, hogy egy globális 
> tömbbe bekerül egy függvénycím. A main előkotorja a címet és meghívja. Innen 
> már az a bajom, hogy ez nem dől el fordítási időben, tele lesz a kód egy 
> csomó szükségtelen indirekt hívással és az ehhez szükséges tábla is sok 
> helyet foglal, arról nem is beszélve, hogy egy véletlen kis memória 
> korrupció a másvilágra sodorja a rendszert.
>
> Egy másik (eddig a legelfogadhatóbb) ötlet, hogy minden egység rendelkezik 
> egy saját eseménykezelővel. Hátránya, hogy ekkor mindegyiken át kell hajtani 
> az üzenetet, mire valaki foglalkozik vele. Talán nem olyan lassú. És az a 
> probléma is fennáll még mindig, hogy az egész rendszeren belül egyedi 
> azonosítókat kell kiosztani...
>
> Nahh, elfogadok minden építő jellegű kritikát. :-)
>
>   



More information about the Elektro mailing list