コード例 #1
0
ファイル: main.c プロジェクト: KuanYuChen/ameba-sdk-gcc-make
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);
}
コード例 #2
0
ファイル: analogin_api.c プロジェクト: pan-/mbed
/** 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;
}
コード例 #3
0
//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;
}
コード例 #4
0
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;
}
コード例 #5
0
ファイル: analogin_api.c プロジェクト: jferreir/mbed
float analogin_read(analogin_t *obj)
{
    uint16_t value = analogin_read_u16(obj);
    return (float)value * (1.0f / (float)ADC_RANGE);
}
コード例 #6
0
ファイル: analogin_api.c プロジェクト: AlessandroA/mbed
//******************************************************************************
float analogin_read(analogin_t *obj)
{
    // Convert integer to float
    return (((float)analogin_read_u16(obj)/(float)ADC_FULL_SCALE));
}
コード例 #7
0
ファイル: analogin_api.c プロジェクト: 1deus/tmk_keyboard
//******************************************************************************
float analogin_read(analogin_t *obj)
{
    // Convert integer to float
    return (((float)analogin_read_u16(obj)/(float)0xFFFF));
}