/* * MeasureTimePeriod.cpp * * Author: Aleksey Gerasimenko * gerasimenko.aleksey.n@gmail.com */ #include "SYSCTRL/MeasureTimePeriod.h" namespace SYSCTRL { //Constructor MeasureTimePeriod::MeasureTimePeriod(CPUTIMER_REGS& CPUTimer, Uint32 magic): m_CPUTimer(CPUTimer), m_timer_result((Uint32)0), m_timer_result_previous((Uint32)0), m_magic_number((Uint32)magic), m_period((Uint32)0), m_tim((Uint32)0), m_counter((Uint32)0), _execute(&SYSCTRL::MeasureTimePeriod::_execute_start) // {}//end Constructor //#pragma CODE_SECTION(".TI.ramfunc"); #pragma CODE_SECTION("ramfuncs"); void MeasureTimePeriod::execute(void) { (this->*_execute)(); // }//end // //#pragma CODE_SECTION(".TI.ramfunc"); #pragma CODE_SECTION("ramfuncs"); void MeasureTimePeriod::reset(void) { m_CPUTimer.TCR.bit.TSS = 1; // Stop CPU Timer m_CPUTimer.PRD.all = (Uint32)0xFFFFFFFF; m_CPUTimer.TCR.bit.TRB = 1; // Reload CPU Timer // _execute = &SYSCTRL::MeasureTimePeriod::_execute_start; // }//end // //#pragma CODE_SECTION(".TI.ramfunc"); #pragma CODE_SECTION("ramfuncs"); void MeasureTimePeriod::_execute_start(void) { _execute = &SYSCTRL::MeasureTimePeriod::_execute_scan; // m_CPUTimer.TCR.bit.TSS = 1; // Stop CPU Timer m_CPUTimer.TCR.bit.TRB = 1; // Reload CPU Timer m_CPUTimer.TCR.bit.TSS = 0; // Start CPU Timer // // }//end // //#pragma CODE_SECTION(".TI.ramfunc"); #pragma CODE_SECTION("ramfuncs"); void MeasureTimePeriod::_execute_scan(void) { m_CPUTimer.TCR.bit.TSS = 1; // Stop CPU Timer // m_timer_result_previous = (Uint32)m_timer_result; m_period = (Uint32)m_CPUTimer.PRD.all; m_tim = (Uint32)m_CPUTimer.TIM.all; m_timer_result = (Uint32)((Uint32)m_CPUTimer.PRD.all - (Uint32)m_CPUTimer.TIM.all - (Uint32)m_magic_number); // m_CPUTimer.TCR.bit.TRB = 1; // Reload CPU Timer m_CPUTimer.TCR.bit.TSS = 0; // Start CPU Timer // m_counter++; // }//end // } /* namespace SYSCTRL */