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; }
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 }
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; }