Skip to content
Snippets Groups Projects
timer.c 977 B
Newer Older
Tom Feng's avatar
Tom Feng committed
#include <bwio.h>
Tom Feng's avatar
Tom Feng committed
#include <timer.h>
#include <ts7200.h>

void ClockInit(Clock *MyClock)
{
Tom Feng's avatar
Tom Feng committed
  bwprintf(COM2,"Entered Clock init\n\r");
  MyClock->ClockCount = 0;
  MyClock->LastTimerValue = CLOCK_LOAD_VALUE;
Tom Feng's avatar
Tom Feng committed
  unsigned int* Clock3LoadRegister = (unsigned int *)(TIMER3_BASE + LDR_OFFSET);
  unsigned int* Clock3ControlRegister = (unsigned int *)(TIMER3_BASE + CRTL_OFFSET);
Tom Feng's avatar
Tom Feng committed
  unsigned int ClockConfig = MODE_MASK | CLKSEL_MASK;
  // set interval
  *Clock3LoadRegister = CLOCK_LOAD_VALUE;
  // enable clock
  *Clock3ControlRegister = ENABLE_MASK | ClockConfig;
Tom Feng's avatar
Tom Feng committed
  bwprintf(COM2,"clock init!!!!\n\r");
}

void ClockUpdate(Clock *MyClock)
{
  unsigned int *ValRegister = (unsigned int *)(TIMER3_BASE+VAL_OFFSET);
  unsigned int CurrentTimerValue = *ValRegister;
  if(CurrentTimerValue > MyClock->LastTimerValue){
    MyClock->ClockCount = MyClock->ClockCount + 1;
    MyClock->bChanged = 1;
  } else {
    MyClock->bChanged = 0;
  }
  MyClock->LastTimerValue = CurrentTimerValue;
}