cc2530 光敏传感器adc转换问题!
协议栈是2.5.1-a,想利用热敏电阻接P0_5,以下是我用来读取adc的值
uint16 ReadLightData( void )
{
uint16 reading = 0;
uint16 total = 0;
int i;
P0SEL &= ~0x20;//设置为普通IO
P0DIR &= ~0x20; // 设置P0.5为输入方式
asm("NOP");asm("NOP");
for(i = 0; i < 4; i++)
{
APCFG |= 1 << 5 ; //注意这里是设置ADC输入通道!
ADCCON3 = 0x80|0x20|0x05; //AVDD5参考电压 10位分辨率 通道5使能
ADCCON1 |= 0x30;//手动模式
ADCCON1 |= 0x40; //开启单通道ADC
while(!(ADCCON1 & 0x80)); //等待AD转换完成
reading = ADCL;
reading |= ((uint16) ADCH) << 8;
reading >>= 6;
total += reading;
}
total >>= 2; //求4次平均值
return total;
}
这样得出来的adc值,在不懂光敏电阻情况下,输出值也是时大时小,有0-1000浮动,本以为adc这东西最简单了,搞了一天都这样,真郁闷!
这是硬件连接方式,接在P0_5
把采样间隔调大一些,我们的是Sigma delta的ADC,采样保持的时候会抽电流,如果不影响光敏电阻的情况下,你在ADC输入脚挂一个大一点的电容试试呢?
电容该多大?怎么接法呢?求教!
我当时帮客户调的时候是1uf的电容,挂在input引脚上接地,现象跟你类似,但不知道对你适用否,仅供参考
加了1uf的电容,确实不会波动很大,他是一点一点的上升,又一点一点的下降,但是我将相同的程序运行在开发板上,P0_5不加电容,却能够正常的反馈出光敏值,难道开发板上的P0_5加了什么电路不成?可是万用表测得P0_5并没外加什么电路!这就奇了怪了,难道淘宝的ZigBee芯片质量差点?还是焊脚的焊锡影响ad测量值?
你好 我想问一下我用的光敏电阻,采集到的最大值怎么不会超过127,搞不清什么情况。
