diff --git a/fpga/lib/ips/dino.cpp b/fpga/lib/ips/dino.cpp index 6ab463a33..17819cba6 100644 --- a/fpga/lib/ips/dino.cpp +++ b/fpga/lib/ips/dino.cpp @@ -141,23 +141,38 @@ void DinoAdc::setRegisterConfig(std::shared_ptr reg, double sampleRate) { constexpr double dinoClk = 25e6; // Dino is clocked with 25 Mhz constexpr size_t dinoRegisterTimer = 0; - constexpr size_t dinoRegisterScale = 1; - constexpr size_t dinoRegisterOffset = 2; + constexpr size_t dinoRegisterAdcScale = 1; + constexpr size_t dinoRegisterAdcOffset = 2; + constexpr size_t dinoRegisterDacExternalTrig = 4; + constexpr size_t dinoRegisterStsActive = 5; + constexpr size_t dinoRegisterDacScale = 6; + constexpr size_t dinoRegisterDacOffset = 7; uint32_t dinoTimerVal = static_cast(dinoClk / sampleRate); double rateError = dinoClk / dinoTimerVal - sampleRate; reg->setRegister( dinoRegisterTimer, dinoTimerVal); // Timer value for generating ADC trigger signal - reg->setRegister(dinoRegisterScale, - -0.001615254F); // Scale factor for ADC value - reg->setRegister(dinoRegisterOffset, 10.8061F); // Offset for ADC value - uint32_t rate = reg->getRegister(0); - float scale = reg->getRegisterFloat(1); - float offset = reg->getRegisterFloat(2); - logging.get("Dino")->info("Check: Register configuration: Rate: {}, Scale: " - "{}, Offset: {}, Rate-Error: {} Hz", - rate, scale, offset, rateError); + reg->setRegister(dinoRegisterAdcScale, + -0.001615254F); // Scale factor for ADC value + reg->setRegister(dinoRegisterAdcOffset, 10.8061F); // Offset for ADC value + + reg->setRegister(dinoRegisterDacScale, + 3276.75F); // Scale factor for DAC value + reg->setRegister(dinoRegisterDacOffset, 10.0F); // Offset for DAC value + uint32_t rate = reg->getRegister(dinoRegisterTimer); + float adcScale = reg->getRegisterFloat(dinoRegisterAdcScale); + float adcOffset = reg->getRegisterFloat(dinoRegisterAdcOffset); + float dacScale = reg->getRegisterFloat(dinoRegisterDacScale); + float dacOffset = reg->getRegisterFloat(dinoRegisterDacOffset); + uint32_t dacExternalTrig = reg->getRegister(dinoRegisterDacExternalTrig); + uint32_t stsActive = reg->getRegister(dinoRegisterStsActive); + logging.get("Dino")->info( + "Check: Register configuration: Rate: {}, Rate-Error: {} Hz, ADC Scale: " + "{}, ADC Offset: {}, DAC Scale: {}, DAC Offset: {}, DAC External Trig: " + "{:#x}, STS Active: {:#x}", + rate, rateError, adcScale, adcOffset, dacScale, dacOffset, + dacExternalTrig, stsActive); } DinoDac::DinoDac() : Dino() {}