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;
}
Exemple #5
0
void convStop( void )
{
	adcStopConversion( &ADCD1 );
	adcStop( &ADCD1 );
    pwmStop( &CONV_PWM );
}
Exemple #6
0
void gadc_lld_stop_timer(uint32_t physdev) {
	(void) physdev;
	if ((acg.trigger & ~ADC_TRIGGER_SOFTWARE) == ADC_TRIGGER_TIMER)
		adcStop(&ADCD1);
}
Exemple #7
0
/**
 * @brief  Stops the ADC and ICU input drivers.
 * @return none.
 */
void mixedInputStop(void) {
  icuStop(&ICUD2);
  icuStop(&ICUD3);
  adcStop(&ADCD1);
}