搜索
bottom↓
回复: 8

PIC16F877A AD转换 通道互相影响问题

[复制链接]

出0入0汤圆

发表于 2010-4-10 09:25:43 | 显示全部楼层 |阅读模式
我用ADC功能时 使用了两个ad通道分别转换热敏电阻的模拟信号 (AN0,AN1) 在显示的过程中发现,随着AN0数据的变化,AN1数据也在改变。而实际上AN1采集温度的环境是没有变化,理论上转换出来的数据是没有很大浮动的。 另外我做了另外几个测试
1 AN0通道温度环境不变情况下,改变AN1温度环境,AN0不受影响
2 不使用AN1通道转换,用AN3代替AN1,做以上的实验,改变AN0采集的温度环境,随着AN0数据变化,AN3数据也在改变。
3 不使用AN0通道转换,用AN3代替AN0,做以上的实验,通道之间没有影响

以下是我ADC的配置程序
void init_a2d(void){
        ADCON0=0x80;        // select Fosc/32
        ADCON1=0x84;        // select right justify result. A/D port configuration 1
        ADON=1;                // turn on the A2D conversion module
}

unsigned int read_a2d(unsigned char channel){
    unsigned int result;
        channel&=0x07;        // truncate channel to 3 bits
    NOP();
    NOP();
        ADCON0&=0xC5;        // clear current channel select
    NOP();
    NOP();
        ADCON0|=(channel<<3);        // apply the new channel select
    NOP();
    NOP();
    NOP();
    NOP();
        ADGO=1;        // initiate conversion on the selected channel
        while(ADGO)continue;
    NOP();
    NOP();
    result = ADRESH;
    result <<= 8;
    result |= ADRESL;
        return(result);        // return 8 MSB of the result
}

我用了32时钟分频 右对齐数字值,通道转换用了几个空操作来缓冲,转换用了查询标志位的方式

请教各位,ADC通道 AN0是否会影响其他通道的转换。是不是跟程序的配置有关。谢谢

出0入0汤圆

 楼主| 发表于 2010-4-10 10:25:41 | 显示全部楼层
问题解决了,通道转换用了几个空操作来缓冲 可能转换时间不够导致了互相影响。用多几个微妙级的延时可以解决

出0入0汤圆

发表于 2010-4-10 11:54:20 | 显示全部楼层
采用一个定时器定时触发采样,转换通道比较好

出0入0汤圆

 楼主| 发表于 2010-4-10 14:17:30 | 显示全部楼层
定时器触发通道转换 一般需要时间是多少呢

出0入0汤圆

发表于 2010-4-12 15:52:24 | 显示全部楼层
回复【3楼】822690a 菜鸟
-----------------------------------------------------------------------

查阅datasheet,里面有不同时钟源和频率下的转换时间要求,一般第一次采样的值可以丢掉不要,再采样一次为准

出0入0汤圆

发表于 2010-4-12 16:20:48 | 显示全部楼层
result = ADRESH;
    result <<= 8;
    result |= ADRESL;

这样的语句比较让人心疼

出0入0汤圆

发表于 2010-4-12 17:06:08 | 显示全部楼层
result = ADRESH;  
    result <<= 8;  
    result |= ADRESL;


result=(ADRESH<<8)|ADRESL;

说不定编译器优化了.结果都一样.第一种写法保险点不是好事?

出0入0汤圆

 楼主| 发表于 2010-5-5 10:52:06 | 显示全部楼层
result=(ADRESH<<8)|ADRESL;
这个语句比较简洁 我会多考虑这方面的语句简化 谢谢各位

出0入0汤圆

发表于 2010-5-5 13:23:09 | 显示全部楼层
应该是没有配置好转换时钟,TAD选大一些
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 19:55

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表