📄 adc.c
字号:
#include "common.h"
uint AdcConvert(void)
{
uchar i,n;
uint ret;
uchar max_id,min_id,max_value,min_value;
ADCSRA=(1<<ADEN)|(1<<ADPS1)|(0<<ADPS0); //ADC enable, single convertion
//convert 65 times
for(i=0;i<65;i++)
{
ADCSRA|=_BV(ADSC);
_delay_loop_1(10);
//for(n=0;n<50;n++);
while(ADCSRA&_BV(ADSC));
_delay_loop_1(10);
ret=ADCL;
ret|=(uint)(ADCH<<8);
g_aAdValue[i]=ret;
}
ret=0;
for(i=1;i<65;i++)
ret+=g_aAdValue[i];
ret>>=6;
//find the max and min mumber
//ret/=64;
/*max_id=min_id=1;
max_value=min_value=0;
for(i=1;i<65;i++)
{
if(g_aAdValue[i]>ret)
{
if(g_aAdValue[i]-ret>max_value)
{
max_value=g_aAdValue[i]-ret;
max_id=i;
}
}
else
{
if(ret-g_aAdValue[i]>min_value)
{
min_value=ret-g_aAdValue[i];
min_id=i;
}
}
}
//the average value except the first, max and min numbers.
ret=0;
for(i=1;i<65;i++)
{
if((i!=min_id)&&(i!=max_id))
ret+=g_aAdValue[i];
}
if(min_id!=max_id)
ret/=62;
else
ret/=63;*/
ADCSRA=0; //close the ADC
return ret;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -