48 lines
721 B
C
48 lines
721 B
C
#include "types.h"
|
|
#include "hw.h"
|
|
#include "timer.h"
|
|
|
|
|
|
u8 tcr_val = 0;
|
|
|
|
void timer_enable(int enb)
|
|
{
|
|
if (enb) tcr_val |= TIMER_ENB;
|
|
else tcr_val &= ~TIMER_ENB;
|
|
HW_REGS[TCR] = tcr_val;
|
|
}
|
|
|
|
u16 timer_get()
|
|
{
|
|
return (HW_REGS[TLR] | (HW_REGS[THR] << 8));
|
|
}
|
|
|
|
void timer_set(u16 time)
|
|
{
|
|
HW_REGS[TLR] = (time & 0xFF);
|
|
HW_REGS[THR] = (time >> 8);
|
|
}
|
|
|
|
void timer_freq(int freq)
|
|
{
|
|
if (freq) tcr_val |= TIMER_20US;
|
|
else tcr_val &= ~TIMER_20US;
|
|
HW_REGS[TCR] = tcr_val;
|
|
}
|
|
|
|
void timer_int(int enb)
|
|
{
|
|
if (enb) tcr_val |= TIMER_INT;
|
|
else tcr_val &= ~TIMER_INT;
|
|
HW_REGS[TCR] = tcr_val;
|
|
}
|
|
|
|
int timer_getstat()
|
|
{
|
|
return (!!(HW_REGS[TCR] & TIMER_ZSTAT));
|
|
}
|
|
|
|
void timer_clearstat()
|
|
{
|
|
HW_REGS[TCR] = (tcr_val|TIMER_ZCLR);
|
|
} |