int acq_SetChannelThreshold(rp_channel_t channel, float voltage) { float gainV; rp_pinState_t gain; ECHECK(acq_GetGainV(channel, &gainV)); ECHECK(acq_GetGain(channel, &gain));; if (fabs(voltage) - fabs(gainV) > FLOAT_EPS) { return RP_EOOR; } rp_calib_params_t calib = calib_GetParams(); int32_t dc_offs = (channel == RP_CH_1 ? calib.fe_ch1_dc_offs : calib.fe_ch2_dc_offs); uint32_t calibScale = calib_GetFrontEndScale(channel, gain); uint32_t cnt = cmn_CnvVToCnt(ADC_BITS, voltage, gainV, gain == RP_HIGH ? false : true, calibScale, dc_offs, 0.0); // We cut high bits of negative numbers cnt = cnt & ((1 << ADC_BITS) - 1); if (channel == RP_CH_1) { return osc_SetThresholdChA(cnt); } else { return osc_SetThresholdChB(cnt); } }
int acq_SetChannelThresholdHyst(rp_channel_t channel, float voltage) { float gainV; rp_pinState_t gain; ECHECK(acq_GetGainV(channel, &gainV)); ECHECK(acq_GetGain(channel, &gain));; if (fabs(voltage) - fabs(gainV) > FLOAT_EPS) { return RP_EOOR; } rp_calib_params_t calib = calib_GetParams(); int32_t dc_offs = GET_OFFSET(channel, gain, calib); uint32_t calibScale = calib_GetFrontEndScale(channel, gain); uint32_t cnt = cmn_CnvVToCnt(ADC_BITS, voltage, gainV, gain == RP_HIGH ? false : true, calibScale, dc_offs, 0.0); if (channel == RP_CH_1) { return osc_SetHysteresisChA(cnt); } else { return osc_SetHysteresisChB(cnt); } }