?? clock.c
字號:
#include "user_macro.h"
#ifdef _TRIMEDIA
#undef abs(a)
#include <tm1/tmProcessor.h>
#include <tsaClock.h>
#if 0
/* cpu frequency 178.75MHz */
#define MS_IN_CYCLE 24027.789 /* 0xFFFFFFFF / (178.75 * 1000) */
#define TICKS_IN_MS 178750
#define US_IN_CYCLE 24027789 /* 0xFFFFFFFF / 178.75 */
#define TICKS_IN_US 178.75
#endif
#if 1
/* cpu frequency 166MHz */
#define MS_IN_CYCLE 25873.296 /* 0xFFFFFFFF / (166 * 1000) */
#define TICKS_IN_MS 166000
#define US_IN_CYCLE 25873296 /* 0xFFFFFFFF / 166 */
#define TICKS_IN_US 166
#endif
#if 0
/* cpu frequency 200MHz */
#define MS_IN_CYCLE 21474.836 /* 0xFFFFFFFF / (200 * 1000) */
#define TICKS_IN_MS 200000
#define US_IN_CYCLE 21474836 /* 0xFFFFFFFF / 200 */
#define TICKS_IN_US 200
#endif
Int ClkInstance;
ptsaClockInstanceSetup_t ClkInstanceSetup;
pprocCapabilities_t proccap;
tmLibappErr_t err;
tmTimeStamp_t tmTimeStamp;
void
initClock ()
{
tsaClockOpen (&ClkInstance);
tsaClockGetInstanceSetup (ClkInstance, &ClkInstanceSetup);
procGetCapabilities(&proccap);
ClkInstanceSetup->frequency = proccap->cpuClockFrequency;
ClkInstanceSetup->numAlarms = 0;
tsaClockInstanceSetup (ClkInstance, ClkInstanceSetup);
tmTimeStamp.ticks = 0;
tmTimeStamp.hiTicks = 0;
tsaClockSetTime (ClkInstance, &tmTimeStamp);
tsaClockStart (ClkInstance);
}
void
getClock (tmTimeStamp_t *tmTimeStamp)
{
tsaClockGetTime (ClkInstance, tmTimeStamp);
}
/*
* Note that: diffClock_tick can only be used to calcute a very small
* time interval less than (0xffffffff / 178.75) us = 24027.789 ms ,
* else it will be incorrect.
*/
/* ticks */
unsigned long
diffClock_tick (tmTimeStamp_t *cBegin, tmTimeStamp_t *cEnd)
{
return ( (cEnd->ticks - cBegin->ticks) );
}
/* us */
float
diffClock_us (tmTimeStamp_t *cBegin, tmTimeStamp_t *cEnd)
{
return ( (float)(cEnd->hiTicks - cBegin->hiTicks) * (float)US_IN_CYCLE
+ (float)(cEnd->ticks - cBegin->ticks) / (float)TICKS_IN_US );
}
/* ms */
float
diffClock (tmTimeStamp_t *cBegin, tmTimeStamp_t *cEnd)
{
return ( (float)(cEnd->hiTicks - cBegin->hiTicks) * (float)MS_IN_CYCLE
+ (float)(cEnd->ticks - cBegin->ticks)/ (float)TICKS_IN_MS );
}
void
releaseClock ()
{
tsaClockStop (ClkInstance);
tsaClockClose (ClkInstance);
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -