Strategie rizeni vice casove kritickych operaci s jednim timerem v MCU?

Jan Waclawek konfera@efton.sk
Pondělí Srpen 10 15:16:44 CEST 2009


Snad najrychlejsie je pravidelne 10ms/32 prerusovat a drzat si 32x16 bitov priamo urcujucich stav pinov v jednotlivych preruseniach; prerusenie potom pozostava z vyplutia tohoto stavu priamo na piny a ak ten pulz ma byt ozaj kratky tak potom nasledne vyplutie kludoveho stavu na piny (predpokladam, ze mate piny definovane "rozumne", t.j. nie kadejako na preskacku ale v jednom ci dvoch portoch - podla toho ci su 16- alebo 8-bitove). Toto u vacsiny rozumnych jednocipov ide riesit bez potreby uchovavat nejake pracovne/stavove registre.

wek


----- Original Message ---------------
>Ceka me nasledujici,
>16pinu na MCU a jim odpovidajicich 16 promenych + jedna noha pro synchonizaci.
>Nabezna hrana na synchro pulsu znamena zacatek 10ms periody v ktere se nestane nic pokud je vsech 16 promenych 0 nebo se musi v case odpovidajicim prislusne promene na ji odpovidajicim pinu objevit impuls v delce trvani rekneme 5 taktu procesoru pricemz promena bude mit hodnotu  1-31 tj. napriklad pri hodnote 10, 3,125ms od zacatku periody) respektive pokud bude promena 32 tak se noha prepne na 1 v ktere setva do konce periody. Po 10ms by mel prijit novy sysncho puls, ktery to cele odstartuje znova.
>
>Pricemz, toto vsechno je relativne casove kriticke a melo by se provadel presne (presne vuci hodinam MCU , a zacatkuy periody), mimo to bude MCU delat i spoustu jine prace.
>
>Otazkou je jaka strategie rizeni casovace je nejefektivnejsi nebo spise nejvhodnejsi.Napada me 
>- casovac odpalovat kazdych 1/32 z tech 10ms a v preruseni kontrolovat zda nektera promena neodpovida danemu "casu"
>- promene na danou periodu zafixovat a seradit a casovac nastavit vzdy na nejblizsi udalost a nasledne dalsi v poradi.
>-  ....
>
>Nevim jaka bude cetnosot, ale teoreticky predpokladam, ze nejbeznejsi stav bude 16x0 , pocet zmen bude max desitky za hodinu a pokud dojde k nejake zmene tak tato vydrzi nekolik tisic period.




Další informace o konferenci Hw-list