26 m_pReg(owner->getRegAddr()) {
52 if(preScaler == 0 || preScaler == 1)
53 throw std::runtime_error(
"Invalid preScaler value in Multiplexed Counter. Value should not be 0 or 1.");
55 WRITE32(m_pReg, MuxPrescaler(m_id), preScaler);
60 return READ32(m_pReg, MuxPrescaler(m_id));
68 epicsUInt32 preScaler = (epicsUInt32)((epicsFloat64)clkSpeed / freq);
75 epicsFloat64 clkSpeed = (epicsFloat64)m_owner->
getFrequency()
78 return clkSpeed/preScaler;
84 throw std::runtime_error(
"EVG Mxc Trig Event ID too large. Max: 7");
88 BITSET32(m_pReg, MuxControl(m_id), mask);
90 BITCLR32(m_pReg, MuxControl(m_id), mask);
96 throw std::runtime_error(
"EVG Mxc Trig Event ID too large. Max: 7");
99 return READ32(m_pReg, MuxControl(m_id))&mask;
#define BITSET32(base, offset, mask)
#define READ32(base, offset)
epicsUInt32 getPrescaler() const
void setFrequency(epicsFloat64)
epicsFloat64 getFrequency() const
void setPrescaler(epicsUInt32)
#define MuxControl_TrigMap_SHIFT
#define BITCLR32(base, offset, mask)
evgMxc(const std::string &, const epicsUInt32, evgMrm *const)
void setTrigEvtMap(epicsUInt16, bool)
bool getTrigEvtMap(epicsUInt16) const
epicsFloat64 getFrequency() const
#define WRITE32(base, offset, value)