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.
CCS-COMM_BOARD/DSP28335/MeasureTimeInterval.cpp

79 lines
1.8 KiB
C++

/*
* MeasureTimeInterval.cpp
*
* Author: Aleksey Gerasimenko
* gerasimenko.aleksey.n@gmail.com
*/
#include "DSP28335/MeasureTimeInterval.h"
namespace DSP28335
{
//Constructor
MeasureTimeInterval::MeasureTimeInterval(CPUTIMER_VARS& CPUTimer):
m_CPUTimer(CPUTimer),
m_time_interval((Uint32)0),
m_time_interval_previous((Uint32)0),
m_magic_number((Uint32)0)
{}//end Constructor
// #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("ramfuncs");
void MeasureTimeInterval::stop(void)
{
m_CPUTimer.RegsAddr->TCR.bit.TSS = 1; // Stop CPU Timer
//
m_time_interval_previous = m_time_interval;
m_time_interval = m_CPUTimer.RegsAddr->PRD.all - m_CPUTimer.RegsAddr->TIM.all - m_magic_number;
//
}//end
// #pragma CODE_SECTION("ramfuncs");
Uint32 MeasureTimeInterval::interval(void)
{
return m_CPUTimer.RegsAddr->PRD.all - m_CPUTimer.RegsAddr->TIM.all - m_magic_number;
//
}//
//
// #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
// #pragma CODE_SECTION("ramfuncs");
void MeasureTimeInterval::inc_counter()
{
m_CPUTimer.InterruptCount++;
//
}//
//
// #pragma CODE_SECTION("ramfuncs");
void MeasureTimeInterval::reset_counter()
{
m_CPUTimer.InterruptCount = (Uint32)0;
//
}//
//
void MeasureTimeInterval::set_magic(const Uint32 magic)
{
m_magic_number = (Uint32)magic;
//
}//end
//
} /* namespace DSP28335 */