31 if(RFref < 50.0f || RFref > 1600.0f) {
32 std::ostringstream strm;
33 strm<<
"Cannot set RF frequency to "<<RFref<<
" MHz. Valid range is 50 - 1600.";
34 throw std::runtime_error(strm.str());
47 if(rfDiv < 1 || rfDiv == 13 || rfDiv > 32) {
49 sprintf(err,
"Invalid RF Divider %d. Valid range is 1 - 12, 14 - 32", rfDiv);
50 std::string strErr(err);
51 throw std::runtime_error(strErr);
68 if ((!controlWord) || (error > 100.0)) {
70 sprintf(err,
"Cannot set event clock speed to %f MHz.\n", freq);
71 std::string strErr(err);
72 throw std::runtime_error(strErr);
74 epicsUInt32 uSecDivider = (epicsUInt16)freq;
76 epicsUInt32 oldControlWord=
READ32(m_pReg, FracSynthWord),
77 olduSecDivider=
READ32(m_pReg, uSecDiv);
81 if(controlWord != oldControlWord || uSecDivider!=olduSecDivider){
82 WRITE32(m_pReg, FracSynthWord, controlWord);
83 epicsUInt32 uSecDivider = (epicsUInt16)freq;
84 WRITE32(m_pReg, uSecDiv, uSecDivider);
105 m_ClkSrc = (
ClkSrc)clkSrc;
111 throw std::invalid_argument(
"Invalid clock source");
115 epicsUInt32 cur =
READ32(m_pReg, ClockControl);
122 epicsUInt32 cur =
READ32(m_pReg, ClockControl);
123 epicsUInt32 mask = 0;
124 if(
version()>=MRFVersion(2, 7, 0))
126 return (cur&mask)==mask;
129 void evgMrm::recalcRFDiv()
131 epicsUInt32 cur =
READ32(m_pReg, ClockControl);
136 epicsUInt32 div = m_RFDiv-1;
151 WRITE32(m_pReg, ClockControl, cur);
epicsShareExtern epicsUInt32 FracSynthControlWord(epicsFloat64 DesiredFreq, epicsFloat64 ReferenceFreq, epicsInt32 debugFlag, epicsFloat64 *Error)
#define READ32(base, offset)
epicsFloat64 getFrequency() const
epicsUInt32 getRFDiv() const
epicsFloat64 getFracSynFreq() const
#define ClockControl_Div_SHIFT
void setRFDiv(epicsUInt32)
epicsUInt16 getSource() const
#define ClockControl_Div_MASK
#define ClockControl_Sel_SHIFT
#define MRF_FRAC_SYNTH_REF
void setFracSynFreq(epicsFloat64)
#define ClockControl_cglock
void setRFFreq(epicsFloat64)
epicsShareExtern epicsFloat64 FracSynthAnalyze(epicsUInt32 ControlWord, epicsFloat64 ReferenceFreq, epicsInt32 PrintFlag)
epicsFloat64 getRFFreq() const
#define ClockControl_plllock
#define WRITE32(base, offset, value)
#define ClockControl_Sel_MASK
void setSource(epicsUInt16)
MRFVersion version() const