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)