static THD_FUNCTION(m3pyro_continuity_thd, arg) { (void)arg; while(true) { adcsample_t sampbuf[5]; adcStart(&ADCD1, NULL); msg_t result = adcConvert(&ADCD1, &adc_grp, sampbuf, 1); adcStop(&ADCD1); if(result != MSG_OK) { m3status_set_error(M3PYRO_COMPONENT_CONTINUITY, M3PYRO_ERROR_ADC); chThdSleepMilliseconds(500); continue; } uint8_t continuities[4]; continuities[0] = adc_to_resistance(sampbuf[0]); continuities[1] = adc_to_resistance(sampbuf[1]); continuities[2] = adc_to_resistance(sampbuf[2]); continuities[3] = adc_to_resistance(sampbuf[3]); can_send(CAN_MSG_ID_M3PYRO_CONTINUITY, false, continuities, sizeof(continuities)); uint8_t supply; supply = adc_to_voltage(sampbuf[4]); can_send(CAN_MSG_ID_M3PYRO_SUPPLY_STATUS, false, &supply, 1); m3status_set_ok(M3PYRO_COMPONENT_CONTINUITY); chThdSleepMilliseconds(500); } }
void closeAnalogIO (void) { adcStopConversion (&ADCD3); chThdSleepMilliseconds(TIME_STEP); adcStop (&ADCD3); }
adc_values_t readADC(void) { adc_values_t values; adcStart(&ADCD1, &adccfg); adcSTM32SetCCR(ADC_CCR_TSEN | ADC_CCR_VREFEN); adcStartConversion(&ADCD1, &adcgrpcfg, samples, 1); chThdSleepMilliseconds(500); adcStop(&ADCD1); values.vdda_voltage = get_vdda_voltage(samples[4]); values.supply_voltage = ((float)samples[0] / ADC_RES * values.vdda_voltage) / VSUPPMON_DIVIDER; values.batt_voltage = ((float)samples[2] / ADC_RES * values.vdda_voltage) / VBATTMON_DIVIDER; values.charge_current = ((float)samples[1] / ADC_RES * values.vdda_voltage) / ICHARGE_DIVIDER; values.internal_temp = get_temp(samples[3]); return values; }
uint32_t dma_storm_adc_stop(void){ adcStopConversion(&ADCD1); adcSTM32DisableTSVREFE(); adcStop(&ADCD1); return ints; }
void convStop( void ) { adcStopConversion( &ADCD1 ); adcStop( &ADCD1 ); pwmStop( &CONV_PWM ); }
void gadc_lld_stop_timer(uint32_t physdev) { (void) physdev; if ((acg.trigger & ~ADC_TRIGGER_SOFTWARE) == ADC_TRIGGER_TIMER) adcStop(&ADCD1); }
/** * @brief Stops the ADC and ICU input drivers. * @return none. */ void mixedInputStop(void) { icuStop(&ICUD2); icuStop(&ICUD3); adcStop(&ADCD1); }