Exemplo n.º 1
0
int main(void) {
    int key;
    adc_setup();
    draw_text();
    char temp[5];
    while (1) {
        for (i = 0; i < 4; i++) {
            if (adc_isdone(adcchannels[i]) == 1)
                adc_sample(adcchannels[i], 128);
            tsample = adc_getsample(adcchannels[i]);
            if (! tsample == 0) {
                sprintf(temp, "%d", adcchannels[i]);
                term_puts(1, i + 4, temp);
                sprintf(temp, "%d", adcsmoothing[i]);
                term_puts(5, i + 4, temp);
                sprintf(temp, "%d", tsample);
                term_puts(11, i + 4, temp);
            }
        }
        key = term_getchar(NOWAIT);
        if (key != -1) {
            if (handle_kbd((int)key))
                break;
        }
    }
    term_clrscr();
    term_moveto(1, 1);
    return 0;
}
Exemplo n.º 2
0
void get_measurements(void){
	uint32_t usample = 0;
	uint32_t gsample = 0;
	uint32_t bsample = 0;
	int32_t isample = 0;

	//Enable lower FETs
	#if(HARDWARE_VER == HW_CTRL_REV0)
		//This board does not have brake/throttle, but PAS.
		for (uint16_t i=0;i<ad_max_samples;i++){
			adc_init_single_ended(REF_3V3,ADC_CH_MUXPOS_PIN7_gc); //Bat Voltage.
			usample += adc_getsample();
			adc_init_differential(REF_3V3,ADC_CH_MUXPOS_PIN8_gc); //Strain Sensor.
			gsample += adc_getsample();	
			adc_init_temperature();//Internal temp
			bsample += adc_getsample();	
			adc_init_differential(REF_3V3,ADC_CH_MUXPOS_PIN0_gc); //Motor current.		
			isample += (int16_t)adc_getsample();		
		}
	#else
		//This board has analog inputs for brake and throttle.
		for (uint16_t i=0;i<ad_max_samples;i++){
			adc_init_single_ended(REF_3V3,ADC_CH_MUXPOS_PIN7_gc); //Bat Voltage.
			usample += adc_getsample();
			adc_init_single_ended(REF_3V3,ADC_CH_MUXPOS_PIN3_gc); //Throttle
			gsample += adc_getsample();
			adc_init_single_ended(REF_3V3,ADC_CH_MUXPOS_PIN2_gc); //Brake
			bsample += adc_getsample();		
			adc_init_differential(REF_3V3,ADC_CH_MUXPOS_PIN11_gc); //Motor current.		
			isample += (int16_t)adc_getsample();		
		}
	#endif

	//Hardware specific inputs.
	#if(HARDWARE_VER == HW_CTRL_REV0)
		ad_strain = gsample/ad_max_samples;
		ad_strain_sum += ad_strain;
		
		ad_temp = bsample/ad_max_samples;
		ad_temp_sum += ad_temp;
	#else
		ad_throttle = gsample/ad_max_samples;
		ad_brake = bsample/ad_max_samples;
	#endif
}
Exemplo n.º 3
0
void get_measurements(void){
	uint32_t usample = 0;
	#if(HARDWARE_VER != HW_CTRL_REV0)
	uint32_t gsample = 0;
	#endif
	uint32_t bsample = 0;
	int32_t isample = 0;
	int32_t ssample = 0;

	//Enable lower FETs
	#if(HARDWARE_VER == HW_CTRL_REV0)
		//This board does not have brake/throttle, but a strain.
		for (uint16_t i=0;i<ad_max_samples;i++){
			adc_init_single_ended(REF_3V3,ADC_CH_MUXPOS_PIN7_gc); //Bat Voltage.
			usample += adc_getsample();
			adc_init_strain(REF_3V3); //Strain Sensor.
			ssample += adc_getsample();	
			adc_init_temperature();//Internal temp
			bsample += adc_getsample();	
			adc_init_differential(REF_3V3,ADC_CH_MUXPOS_PIN0_gc); //Motor current.		
			isample += (int16_t)adc_getsample();		
		}
	#else
		//This board has analog inputs for brake and throttle.
		for (uint16_t i=0;i<ad_max_samples;i++){
			adc_init_single_ended(REF_3V3,ADC_CH_MUXPOS_PIN7_gc); //Bat Voltage.
			usample += adc_getsample();
			adc_init_single_ended(REF_3V3,ADC_CH_MUXPOS_PIN3_gc); //Throttle
			gsample += adc_getsample();
			adc_init_single_ended(REF_3V3,ADC_CH_MUXPOS_PIN2_gc); //Brake
			bsample += adc_getsample();		
			adc_init_differential(REF_3V3,ADC_CH_MUXPOS_PIN11_gc); //Motor current.		
			isample += (int16_t)adc_getsample();		
		}
	#endif
	
	//Convert 'em back to 12 bits.
	ad_voltage = usample/(uint32_t)ad_max_samples;	
	ad_current = isample/(int32_t)ad_max_samples;

	//Hardware specific inputs.
	#if(HARDWARE_VER == HW_CTRL_REV0)		
		ad_strain = (int32_t)ssample/(int32_t)ad_max_samples;		
		ad_strain_sum += ad_strain;
		
		ad_temp = bsample/ad_max_samples;
		ad_temp_sum += ad_temp;
	#else
		ad_throttle = gsample/ad_max_samples;
		ad_brake = bsample/ad_max_samples;
	#endif
	
	//Summing things that need averaging.
	meas_cnt++;
	ad_voltage_sum += ad_voltage;
	ad_current_sum += ad_current;
	
	//Per commutation current.
	ad_current_regcnt++;
	ad_current_regsum += ad_current;
}