VOID main ( VOID ) { uint16_t offset, gain; analogin_init(&adc0, MBED_ADC_EXAMPLE_PIN_1); // no pinout on HDK board analogin_init(&adc1, MBED_ADC_EXAMPLE_PIN_2); analogin_init(&adc2, MBED_ADC_EXAMPLE_PIN_3); #if ADC_CALIBRATION sys_adc_calibration(0, &offset, &gain); printf("ADC:offset = 0x%x, gain = 0x%x\n", offset, gain); if((offset==0xFFFF) || (gain==0xFFFF)) #endif { offset = OFFSET; gain = GAIN_DIV; printf("ADC:offset = 0x%x, gain = 0x%x\n", offset, gain); } for (;;){ adcdat0 = analogin_read_u16(&adc0); adcdat1 = analogin_read_u16(&adc1); adcdat2 = analogin_read_u16(&adc2); v_mv0 = AD2MV(adcdat0, offset, gain); v_mv1 = AD2MV(adcdat1, offset, gain); v_mv2 = AD2MV(adcdat2, offset, gain); printf("AD0:%x = %d mv, AD1:%x = %d mv, AD2:%x = %d mv\n", adcdat0, v_mv0, adcdat1, v_mv1, adcdat2, v_mv2); adc_delay(); } analogin_deinit(&adc0); analogin_deinit(&adc1); analogin_deinit(&adc2); }
/** Read the value from analogin pin, represented as an unsigned 16bit value * * @param obj The analogin object * @return An unsigned 16bit value representing the current input voltage */ float analogin_read(analogin_t *obj) { MBED_ASSERT(obj); /* Read 16 bit ADC value (using Mbed API) and convert to [0;1] range float. */ uint16_t value = analogin_read_u16(obj); float result = ((float) value / (float) ADC_16BIT_RANGE); return result; }
//NeoJou // analogRead : ulPin : only for ADC using; uint32_t analogRead(uint32_t ulPin) { uint32_t ulValue = 0; uint32_t ulChannel; uint16_t ret = 0; float voltage; float adc_value; switch ( ulPin ) { case 0: case 1: ret = analogin_read_u16(&adc2); break; case 2: ret = analogin_read_u16(&adc3); break; default: DiagPrintf("%s : ulPin %d wrong\n", __FUNCTION__, ulPin); return 0; } ret >>= 4; if (ret < 674) { voltage = 0; } else if ( ret > 3410){ voltage = (float)(ret - 3410)*ADC_slope2 + 3.12; } else { voltage = (float)(ret-674)*ADC_slope1; } // Arduino analogRead() // input : 0~5V // 10 bit : 0 ~1023 ret = round(1023.0*voltage/5.0); if ( ret > 1023 ) ret = 1023; return ret; }
float analogin_read(analogin_t *obj) { /* Convert from a uint16 to a float between 0 and 1 by division by 0xFFFF */ return analogin_read_u16(obj) / (float) 0xFFFF; }
float analogin_read(analogin_t *obj) { uint16_t value = analogin_read_u16(obj); return (float)value * (1.0f / (float)ADC_RANGE); }
//****************************************************************************** float analogin_read(analogin_t *obj) { // Convert integer to float return (((float)analogin_read_u16(obj)/(float)ADC_FULL_SCALE)); }
//****************************************************************************** float analogin_read(analogin_t *obj) { // Convert integer to float return (((float)analogin_read_u16(obj)/(float)0xFFFF)); }