/********************************************************** * Paulo Pedreiras, Set/2009 * DETI/UA - Sistemas de Tempo-Real * * Calcula a diferenca entre os tempos de * activacao consecutivas de um "loop de controlo" * * Historia: * 21/Set/2009: Versão 1.0 * ***********************************************************/ #include #include #include #include #include #define TINTERVAL_US 50000 /* Intervalo entre activacoes, em micro-segundo */ char pexit = 0; /* * Handler do CTRL+C */ static void endme(int dummy) { pexit = 1; } /* * Tarefa de "controlo". Activada periódicamente, com intrevalo TINTERVAL_US */ static void timer_tick(int signo) { static struct timeval tcur, tant; static first=1; long long tantus, tcurus,tdifus,tmaxus,tminus; if(first) { /* Primeira activação? */ gettimeofday(&tant,NULL); tmaxus=0; tminus=TINTERVAL_US*100; first=0; } else { /* Activações seguintes */ gettimeofday(&tcur,NULL); tantus=tant.tv_sec*1000000+tant.tv_usec; tcurus=tcur.tv_sec*1000000+tcur.tv_usec; tdifus=tcurus-tantus; if(tdifus>tmaxus) tmaxus=tdifus; if(tdifus