void FXAS21002C::set_onchip_lowpass_filter(int frequency_hz) { int high = 256 / (800 / _current_rate); int med = high / 2 ; int low = med / 2; if (_current_rate <= 25) { low = -1; } if (_current_rate == 13) { med = -1; low = -1; } uint8_t filter = CTRL_REG0_BW_HIGH; if (frequency_hz == 0) { filter = CTRL_REG0_BW_HIGH; } else if (frequency_hz <= low) { filter = CTRL_REG0_BW_LOW; } else if (frequency_hz <= med) { filter = CTRL_REG0_BW_MED; } else if (frequency_hz <= high) { filter = CTRL_REG0_BW_HIGH; } set_standby(_current_rate, true); modify_reg(FXAS21002C_CTRL_REG1, CTRL_REG0_BW_MASK, filter); set_standby(_current_rate, false); }
int FXAS21002C::set_samplerate(unsigned frequency) { uint8_t bits = 0; unsigned last_rate = _current_rate; if (frequency == 0 || frequency == GYRO_SAMPLERATE_DEFAULT) { frequency = FXAS21002C_DEFAULT_RATE; } if (frequency <= 13) { _current_rate = 13; bits = CTRL_REG1_DR_12_5; } else if (frequency <= 25) { _current_rate = 25; bits = CTRL_REG1_DR_25HZ; } else if (frequency <= 50) { _current_rate = 50; bits = CTRL_REG1_DR_50HZ; } else if (frequency <= 100) { _current_rate = 100; bits = CTRL_REG1_DR_100HZ; } else if (frequency <= 200) { _current_rate = 200; bits = CTRL_REG1_DR_200HZ; } else if (frequency <= 400) { _current_rate = 400; bits = CTRL_REG1_DR_400HZ; } else if (frequency <= 800) { _current_rate = 800; bits = CTRL_REG1_DR_800HZ; } else { return -EINVAL; } set_standby(last_rate, true); modify_reg(FXAS21002C_CTRL_REG1, CTRL_REG1_DR_MASK, bits); set_standby(_current_rate, false); return OK; }
int FXAS21002C::set_range(unsigned max_dps) { uint8_t bits = CTRL_REG0_FS_250_DPS; float new_range_scale_dps_digit; float new_range; if (max_dps == 0) { max_dps = 2000; } if (max_dps <= 250) { new_range = 250; new_range_scale_dps_digit = 7.8125e-3f; bits = CTRL_REG0_FS_250_DPS; } else if (max_dps <= 500) { new_range = 500; new_range_scale_dps_digit = 15.625e-3f; bits = CTRL_REG0_FS_500_DPS; } else if (max_dps <= 1000) { new_range = 1000; new_range_scale_dps_digit = 31.25e-3f; bits = CTRL_REG0_FS_1000_DPS; } else if (max_dps <= 2000) { new_range = 2000; new_range_scale_dps_digit = 62.5e-3f; bits = CTRL_REG0_FS_2000_DPS; } else { return -EINVAL; } set_standby(_current_rate, true); _gyro_range_rad_s = new_range / 180.0f * M_PI_F; _gyro_range_scale = new_range_scale_dps_digit / 180.0f * M_PI_F; modify_reg(FXAS21002C_CTRL_REG0, CTRL_REG0_FS_MASK, bits); set_standby(_current_rate, false); return OK; }
void CLaserControl::OnLasercontrolAccept() { // TODO: Add your control notification handler code here // TODO: Add your control notification handler code here m_LaserControl_Settings.UpdateData(TRUE); //m_LaserControl_Settings.m_nIndex=2; m_LaserControl_Settings.SetTimer(1,100,NULL); set_laser_mode(m_LaserControl_Settings.m_LaserMode); switch(m_LaserControl_Settings.m_LaserMode) { case 0: set_standby(m_LaserControl_Settings.m_StandbyHalfPeriod,m_LaserControl_Settings.m_StanbyPulseLength); //set_standby(106,106); set_laser_pulses_ctrl(m_LaserControl_Settings.m_HalfPeriod,m_LaserControl_Settings.m_PulseLengthSignal); break; case 1: case 2: case 3: case 5: set_firstpulse_killer(m_LaserControl_Settings.m_FirstPulseKillerLengthSignal); set_qswitch_delay(m_LaserControl_Settings.m_QSwtchDelaySignal); break; default: break; } //Update data m_LaserControl_Settings.UpdateData(TRUE); //laser CLaserScanDoc::s_LaserPower=m_LaserControl_Settings.m_LaserPower; CLaserScanDoc::s_LaserSetpoint=m_LaserControl_Settings.m_LaserSetpoint; CLaserScanDoc::s_Frequency=m_LaserControl_Settings.m_Frequency; //serial Port CLaserScanDoc::s_SerialPort_Number=m_LaserControl_Settings.m_SerialPort_Number; //CString CLaserScanDoc::s_SerialPort_Parameters=m_SerialPort_Parameters; CLaserScanDoc::s_nInputMode=m_LaserControl_Settings.m_nInputMode; //scan head output and input //CLaserScanDoc::s_LaserMode=m_LaserControl_Settings.m_LaserMode; CLaserScanDoc::s_HalfPeriod=m_LaserControl_Settings.m_HalfPeriod; CLaserScanDoc::s_FrequencySignal=m_LaserControl_Settings.m_FrequencySignal; CLaserScanDoc::s_PulseLengthSignal=m_LaserControl_Settings.m_PulseLengthSignal; CLaserScanDoc::s_FirstPulseKillerLengthSignal=m_LaserControl_Settings.m_FirstPulseKillerLengthSignal; CLaserScanDoc::s_QSwtchDelaySignal=m_LaserControl_Settings.m_QSwtchDelaySignal; //standby CLaserScanDoc::s_StandbyHalfPeriod=m_LaserControl_Settings.m_StandbyHalfPeriod; CLaserScanDoc::s_StandbyFrequency=m_LaserControl_Settings.m_StandbyFrequency; CLaserScanDoc::s_StanbyPulseLength=m_LaserControl_Settings.m_StanbyPulseLength; //CDialog::OnOK(); }