Close

Multiple ADC Inputs

A project log for RM57Lx

Circuit board

jlbrian7jlbrian7 03/09/2016 at 17:410 Comments
void main(){
        adcData_t adc_data; //ADC Data Structure
	adcData_t *adc_data_ptr = &adc_data; //ADC Data Pointer

	unsigned int NumberOfChars;
	uint16 trimmer_val;
	uint16 hyd_pos_val;
	uint16 air_pos_val;
	uint32 adc_id;

        adcInit();

        while(1){
		adcStartConversion(adcREGx, adcGroup1); //Start ADC conversion
		while(!adcIsConversionComplete(adcREGx, adcGroup1)); //Wait for ADC conversion
		int i;
		for (i=3; i > 0; i--){
			adcGetData(adcREGx, adcGroup1, adc_data_ptr); //Store conversion into ADC pointer
			adc_id = adc_data_ptr->id;

			switch (adc_id){
			case 6:
				trimmer_val = adc_data_ptr->value;

				NumberOfChars = ltoa(trimmer_val,(char *)command);
				sciDisplayText(sciREGx, (uint8_t*)"Trimmer: 0x", sizeof("Trimmer: 0x"));
				sciSend(sciREGx, NumberOfChars, command);
				sciDisplayText(sciREGx, txtCRLF, sizeof(txtCRLF));
				break;
			case 10:
				hyd_pos_val = adc_data_ptr->value;

				NumberOfChars = ltoa(hyd_pos_val,(char *)command);
				sciDisplayText(sciREGx, (uint8_t*)"HYD_POS: 0x", sizeof("HYD_POS: 0x"));
				sciSend(sciREGx, NumberOfChars, command);
				sciDisplayText(sciREGx, txtCRLF, sizeof(txtCRLF));
				break;
			case 17:
				air_pos_val = adc_data_ptr->value;

				NumberOfChars = ltoa(air_pos_val,(char *)command);
				sciDisplayText(sciREGx, (uint8_t*)"AIR_POS: 0x", sizeof("AIR_POS: 0x"));
				sciSend(sciREGx, NumberOfChars, command);
				sciDisplayText(sciREGx, txtCRLF, sizeof(txtCRLF));
				break;
			default:
				sciDisplayText(sciREGx, (uint8_t*)"ADC ERROR", sizeof("ADC ERROR"));
				sciDisplayText(sciREGx, txtCRLF, sizeof(txtCRLF));
				break;
			}
		}
        }
}

FIFO - spnu562: 22.2.1.9.1

Discussions