Example #1
0
void timer_pool_init (void)
{
	int i;

	for( i=0; i < NUMTIMERS; i++) {
		timer_pool[i].value = 0;
		timer_pool[i].free = TRUE;
		
	}
		
    volatile int tmp;
    __builtin_sysreg_write(__TMRIN0H, 0);
    __builtin_sysreg_write(__TMRIN0L, TIMEOUT_PERIOD);// set period of timer

    interruptf(SIGTIMER0LP, decrement_timers); // interrupt vector of timer

    tmp = __builtin_sysreg_read(__INTCTL);
    tmp = tmp | INTCTL_TMR0RN;
    __builtin_sysreg_write(__INTCTL, tmp);    // start timer

    tmp = __builtin_sysreg_read(__IMASKL);
    tmp = tmp | INT_TIMER0L;                  // allow timer interrupt
    __builtin_sysreg_write(__IMASKL, tmp);

    giet(1);     // global interrupt enable
}
void delay_ms(u16 ms)
{
	   uint32_t delay = (int32_t) ((long long) ms * (CLOCKS_PER_SEC / 5000));
	   uint32_t start = __builtin_sysreg_read(reg_CYCLES);

	   /* Spin until the delay expires. */
	   while ((__builtin_sysreg_read(reg_CYCLES) - start) < delay)
	   {
	   	/* do nothing */
	   }
}   
Example #3
0
void giet(int state) {
    volatile int tmp;
    tmp = __builtin_sysreg_read(__SQCTL);
    if (state) tmp = tmp | SQCTL_GIE;           //global interrupt enable
    else tmp = tmp & (~SQCTL_GIE);
    __builtin_sysreg_write(__SQCTL, tmp);
}