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.

88 lines
1.7 KiB
C++

/*
* TriggerRS.cpp
*
* Author: Aleksey Gerasimenko
* gerasimenko.aleksey.n@gmail.com
*/
#include "SYSCTRL/TriggerRS.h"
namespace SYSCTRL
{
//CONSTRUCTOR
TriggerRS::TriggerRS():
SYSCTRL::TriggerBase()
//
{}//CONSTRUCTOR
#pragma CODE_SECTION("ramfuncs");
void TriggerRS::setSET(bool set)
{
m_trigger.bit.set = set;
//
}//
//
#pragma CODE_SECTION("ramfuncs");
void TriggerRS::setRESET(bool reset)
{
m_trigger.bit.reset = reset;
//
}//
//
#pragma CODE_SECTION("ramfuncs");
void TriggerRS::execute()
{
// Q(i) = (nR & (S | Q(i-1))) | (S & Q(i-1))
//
m_trigger.bit.out_privious = m_trigger.bit.out;
m_trigger.bit.out_shadow = (!m_trigger.bit.reset & (m_trigger.bit.set | m_trigger.bit.out_privious)) | (m_trigger.bit.set & m_trigger.bit.out_privious);
m_trigger.bit.out = m_trigger.bit.out_shadow;
m_trigger.bit.positive = !m_trigger.bit.out_privious & m_trigger.bit.out;
m_trigger.bit.negative = m_trigger.bit.out_privious & !m_trigger.bit.out;
//
}//
//
#pragma CODE_SECTION("ramfuncs");
void TriggerRS::clear()
{
m_trigger.all = 0;
//
}//
//
#pragma CODE_SECTION("ramfuncs");
bool TriggerRS::getOUT()
{
return m_trigger.bit.out;
//
}//
//
#pragma CODE_SECTION("ramfuncs");
bool TriggerRS::getPOSITIVE()
{
return m_trigger.bit.positive;
//
}//
//
#pragma CODE_SECTION("ramfuncs");
bool TriggerRS::getNEGATIVE()
{
return m_trigger.bit.negative;
//
}//
//
#pragma CODE_SECTION("ramfuncs");
bool TriggerRS::isPOSITIVE()
{
return m_trigger.bit.positive;
//
}//
//
#pragma CODE_SECTION("ramfuncs");
bool TriggerRS::isNEGATIVE()
{
return m_trigger.bit.negative;
//
}//
//
} /* namespace SYSCTRL */