Project

General

Profile

269 markw
#include "timer.h"
275 markw
#include "regs.h"
269 markw
// this is a 32 bit counter which overflows after 2^32 milliseconds
// -> after 46 days

void wait_us(int unsigned num);

void timer_init() {
}

275 markw
#ifdef LINUX_BUILD
#include <sys/time.h>
269 markw
msec_t timer_get_msec() {
275 markw
struct timeval x;
gettimeofday(&x,0);
return (x.tv_sec*1000+(x.tv_usec/1000));
269 markw
}
275 markw
#else
msec_t timer_get_msec() {
int res = *zpu_timer;
803 markw
res = res >> 10; // Divide by 1024, good enough for here!
956 markw
275 markw
return res;
}
956 markw
bool timer_elapsed(msec_t until)
{
msec_t now = timer_get_msec();
if (now>=until)
return true;
else
{
unsigned int delay = until - now;

if (delay > 0x200000)
return true; //overflow
else
return false; //normal case
}
}

275 markw
#endif