123

Dependencies:   mbed

Fork of LG by igor Apu

DeviceTimers.c

Committer:
Kovalev_D
Date:
2016-10-19
Revision:
197:7a05523bf588
Parent:
173:7f938afb0447

File content as of revision 197:7a05523bf588:

#include "Device.h"

extern Device device;
extern unsigned int SystemCoreClock1;

void InitMeasurementTimerDefaultSettings(void){
 //device.controller.timer[0].settings.match = 8064; //CCLK / 8064 = 12800.0Hz; Vibro: Timer1/32 = 400.0Hz;
}

void InitMeasurementTimerState(void) {
  //TODO:
  //SystemCoreClock1 - 27 bit
  //device.dither.oscillation.state.frequency - 25 bit
  //device.controller.timer[0].state.MR0 - 13 bit
  device.controller.timer[0].state.MR0 = 0;
  device.controller.timer[0].state.MCR = 0;
  device.controller.timer[0].state.TCR = 0;
}

void DeviceStartMeasurementTimer(void) {
  LPC_SC->PCONP |= (1<<2); //Power on timer 1
  
  LPC_TIM1->MR0 = device.controller.timer[0].state.MR0;
  
  device.controller.timer[0].state.MCR = 3;
  LPC_TIM1->MCR = device.controller.timer[0].state.MCR; //Interrupt and Reset on MR1
  
  NVIC_EnableIRQ(TIMER1_IRQn);
  
  device.controller.timer[0].state.TCR = 1; //Bit 0: Counter Enable
  LPC_TIM1->TCR = device.controller.timer[0].state.TCR;
  return;
}

void timersSetMeasurementPeriod(uint32_t period) {
  device.controller.timer[0].state.MR0 = period;
  LPC_TIM1->MR0 = device.controller.timer[0].state.MR0;
}

void InitRegularTimerDefaultSettings(void){
}

void InitRegularTimerState(void) {
  device.controller.timer[1].state.MR0 = 0;
  device.controller.timer[1].state.MCR = 0;
  device.controller.timer[1].state.TCR = 0;
}

void DeviceStartRegularTimer(void) {
  LPC_SC->PCONP |= (1<<22);//Power on timer 2
  
  LPC_TIM2->MR0 = device.controller.timer[1].state.MR0;
  
  device.controller.timer[1].state.MCR = 3;
  LPC_TIM2->MCR = device.controller.timer[1].state.MCR; //Interrupt and Reset on MR0
  
  NVIC_EnableIRQ(TIMER2_IRQn);
  
  device.controller.timer[1].state.TCR = 1; //Bit 0: Counter Enable
  LPC_TIM2->TCR = device.controller.timer[1].state.TCR;
}

void timersSetRegularPeriod(uint32_t period) {
  device.controller.timer[1].state.MR0 = period;
  LPC_TIM2->MR0 = device.controller.timer[1].state.MR0;
}
/*
//Measurement floating cycle timer interrupt
__irq void TIMER1_IRQHandler(void) {
  DeviceMeasurementInterruptHandler();

  LPC_TIM1->IR = 1;
}

//Regular cycle 100kHz timer interrupt
__irq void TIMER2_IRQHandler(void) {
  DeviceRegularInterruptHandler();
  
  LPC_TIM2->IR = 1;
}
*/