Ejemplo n.º 1
0
Archivo: adc.c Proyecto: ryanbaw/bravo
void adc_test(void)
{
	unsigned char i;
	unsigned char n;
	unsigned char tail;
	short int res_voltage 	= 0;
	short int temp_voltage 	= 0;
	uint16 temp_adc = 0;
	float pvoltage = 0;

	adc_switch_channel(VOLTAGE);
	for(i = 0; i < 50; i++)
	{
		START_ADC();
		temp_adc +=  adc_result;
	}
	
	n = min(adc_mean_num, adc_queue.count);			// 取当前队列中数据个数与设置值的最小值
	if(0 == n)
		return;

	tail = adc_queue.tail;							// 获取队列尾部下标
	tail = (tail-1) & ADC_MAX_SIZE_MASK;			// 减1之后,指向最后加入的一个数据
													// 减1是因为下标是从0开始的
	for(i = 0; i < n; i++)
	{
		temp_voltage = adc_queue.data[tail].voltage;
		res_voltage += temp_voltage;

		tail = (tail-1) & ADC_MAX_SIZE_MASK;
	}
	pvoltage = 5.0f * res_voltage / n / 1024.0f;
	uart_putnstring((uint8 *)&pvoltage, 4);
	OSTimeDly(OS_TICKS_PER_SEC/2);
}
Ejemplo n.º 2
0
void adc_convert_start(void)
{
	adc_status_flag.is_current_convert = TRUE;
	adc_status_flag.is_first_time 	   = TRUE;
	adc_switch_channel(ADC_VOLTAGE);

	START_ADC();
}
Ejemplo n.º 3
0
Archivo: adc.c Proyecto: ryanbaw/bravo
void adc_convert_start(void)
{
	memset(&adc_status, 0, sizeof(AdcStatusFlag));
	adc_status.who_is_convert 	= CURRENT;			// 置位电流转换,先电流后电压顺序
	adc_status.first_time 		= TRUE;				// 第一次转换
	adc_switch_channel(CURRENT);					// 切换到电流转换

	START_ADC();									// 启动一次转换(没有采用连续转换)
}