Posted By: hajoucha (hajoucha) on 'CZhardware'
Title:     casova znacka po hw triggeru
Date:      Thu Nov  5 18:16:10 2009

Ahojda, 

resim nasledujici problem: merak meri napeti po dobu jednoho cyklu v zasuvce, 
nasledne posle trigger, ze uz je hotov (srq po gpib) a ja z neho prectu data. 

Samotne cteni dat probehne vcelku rychle, ale nastava urcita promenliva 
prodleva mezi okamzikem, kdy merak (mimochodem je to keithley 2182 
nanovoltmeter) vysle srq a kdy ja z neho zacnu cist. Potazmo, kdy v pc mrknu 
na hodinky volanim funkce clock_gettime(). 

Pritom ten merak umi vyslat i hw trigger (ma na to vzadu konektor). Tak me 
napadlo, jestli by neslo v beznem pc nebo i po dodani nejake relativne levne 
soucastky (par stovek) zjistit presny cas hned pote, co by prisel hw trigger. 

Je treba si uvedomit, ze se tu bavime o casech nekolika milisekund. Coz je 
zpozdeni mezi tim, co merak rekne "mam hotovo" a okamzikem, kdy ja reknu "tak 
toto jsou ta data a je tolik a tolik hodin".

Samozrejme zvazuji i real-time patch pro jadro, ale v zasade by mi stacilo 
ziskat presnou casovou znacku a tu si pak precist klidne o chvili pozdeji. 
Pritom tato chvile by nemela presahnout rekneme 300ms (tj. do okamziku 
dalsiho mereni... aby se mi ty znacky nehromadily). 

prislusny kus C kodu vypada takhle:

   ibwrt(K2182nUd,":data:fresh?",12);
   clock_gettime(CLOCK_REALTIME, &Time_now);
   ibrd(K2182nUd,buffer,MAX_KEITHLEY_REPLY_LEN);
   buffer[15]='   printf("%ld.%09ld %sn",Time_now.tv_sec,Time_now.tv_nsec,buffer);

jde mi o to, ze prvni tri radky mohou obecne probihat ruzny pocet milisekund, 
aniz by to byla chyba toho meraku. Ten naopak ta data nabere vzdy stejne 
rychle.

Diky predem za tipy a triky. 

Zdravi michal (toho casu bez nanosekundy) 

Search the boards