You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

60 lines
1.7 KiB
C++

/*
* TimeStartStop.cpp
*
* Author: Aleksey Gerasimenko
* gerasimenko.aleksey.n@gmail.com
*/
#include "SYSCTRL/MeasureTimeInterval.h"
namespace SYSCTRL
{
//Constructor
MeasureTimeInterval::MeasureTimeInterval(CPUTIMER_VARS& 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)
{}//end Constructor
//#pragma CODE_SECTION(".TI.ramfunc");
#pragma CODE_SECTION("ramfuncs");
void MeasureTimeInterval::start(void)
{
m_CPUTimer.RegsAddr->TCR.bit.TSS = 1; // Stop CPU Timer
m_CPUTimer.RegsAddr->TCR.bit.TRB = 1; // Reload CPU Timer
m_CPUTimer.RegsAddr->TCR.bit.TSS = 0; // Start CPU Timer
//
}//end
//#pragma CODE_SECTION(".TI.ramfunc");
#pragma CODE_SECTION("ramfuncs");
void MeasureTimeInterval::stop(void)
{
m_CPUTimer.RegsAddr->TCR.bit.TSS = 1; // Stop CPU Timer
//
m_timer_result_previous = m_timer_result;
m_period = (Uint32)m_CPUTimer.RegsAddr->PRD.all;
m_tim = (Uint32)m_CPUTimer.RegsAddr->TIM.all;
//m_timer_result = m_CPUTimer.RegsAddr->PRD.all - m_CPUTimer.RegsAddr->TIM.all - m_magic_number;
m_timer_result = (Uint32)((Uint32)m_period - (Uint32)m_tim - (Uint32)m_magic_number);
m_counter++;
//
}//end
//#pragma CODE_SECTION(".TI.ramfunc");
#pragma CODE_SECTION("ramfuncs");
void MeasureTimeInterval::reset(void)
{
m_CPUTimer.RegsAddr->TCR.bit.TSS = 1; // Stop CPU Timer
m_CPUTimer.RegsAddr->PRD.all = 0xFFFFFFFF;
m_CPUTimer.RegsAddr->TCR.bit.TRB = 1; // Reload CPU Timer
//
}//end
} /* namespace SYSCTRL */