From 0bff1a54ec65d875a3865db2f953b1c4192dcdd4 Mon Sep 17 00:00:00 2001 From: Alexis Gaget Date: Thu, 11 Jan 2024 14:10:07 +0100 Subject: [PATCH 1/2] fix: Correct the setFrequency command, mixed between clock frequency and period frequency --- evgMrmApp/src/evgMxc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/evgMrmApp/src/evgMxc.cpp b/evgMrmApp/src/evgMxc.cpp index a1b7e8bf..3d312ddc 100644 --- a/evgMrmApp/src/evgMxc.cpp +++ b/evgMrmApp/src/evgMxc.cpp @@ -63,8 +63,8 @@ evgMxc::getPrescaler() const { void evgMxc::setFrequency(epicsFloat64 freq) { - epicsUInt32 clkSpeed = (epicsUInt32)(getFrequency() * - pow(10.0, 6)); + epicsUInt32 clkSpeed = (epicsFloat64)m_owner->getFrequency() + * pow(10.0, 6); epicsUInt32 preScaler = (epicsUInt32)((epicsFloat64)clkSpeed / freq); setPrescaler(preScaler); From 9c05cd9815a6294016af098c0c070c215b18f9d8 Mon Sep 17 00:00:00 2001 From: Jerzy Jamroz Date: Fri, 12 Jan 2024 14:31:50 +0100 Subject: [PATCH 2/2] perf: Slightly better accuracy. --- evgMrmApp/src/evgMxc.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/evgMrmApp/src/evgMxc.cpp b/evgMrmApp/src/evgMxc.cpp index 3d312ddc..da963235 100644 --- a/evgMrmApp/src/evgMxc.cpp +++ b/evgMrmApp/src/evgMxc.cpp @@ -63,10 +63,8 @@ evgMxc::getPrescaler() const { void evgMxc::setFrequency(epicsFloat64 freq) { - epicsUInt32 clkSpeed = (epicsFloat64)m_owner->getFrequency() - * pow(10.0, 6); - epicsUInt32 preScaler = (epicsUInt32)((epicsFloat64)clkSpeed / freq); - + epicsFloat64 clkSpeed = m_owner->getFrequency() * pow(10.0, 6); + epicsUInt32 preScaler = (epicsUInt32)lround(clkSpeed / freq); setPrescaler(preScaler); } @@ -98,4 +96,3 @@ evgMxc::getTrigEvtMap(epicsUInt16 trigEvt) const { epicsUInt32 mask = 1 << (trigEvt+MuxControl_TrigMap_SHIFT); return READ32(m_pReg, MuxControl(m_id))&mask; } -