Skip to content
Snippets Groups Projects
timer.c 823 B
Newer Older
#include <types.h>
#include <ts7200.h>

void ClockInit(Clock *MyClock)
{
  MyClock->ClockCount = 0;
  MyClock->LastTimerValue = CLOCK_LOAD_VALUE;
  unsigned int* Clock3LoadRegsiter = (unsigned int *)(TIMER3_BASE + LDR_OFFSET);
  unsigned int* Clock3ControlRegister = (unsigned int *)(TIMER3_BASE + CRTL_OFFSET);
  // set interval
  *Clock3LoadRegister = CLOCK_LOAD_VALUE;
  // enable clock
  *Clock3ControlRegister = ENABLE_MASK | ClockConfig;
}

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;
}