紅外AD采样的问题

[复制链接]
3422|6
 楼主| kangwuwei 发表于 2011-11-1 21:36 | 显示全部楼层 |阅读模式
  1. unsigned int  Irq_Work2()
  2. {unsigned short nVal1=0;
  3. unsigned short nVal2=0;

  4.   IR_ON();
  5.        
  6.         delay_us(1);
  7.        // HW_ON();
  8.           //ADC set
  9.         PM2 |=0x40;
  10.         ADM0  =        0x36; //adc work in High speed 1 mode, conversion time 8.25uS;
  11.         ADCE  = 1;
  12.         ADPC0 &= ~RF_ADC;
  13.         ADS   =         INCH_6;
  14.         ADIF  =         0;
  15.       
  16.         ADCS  = 1;
  17.       delay_us(1);
  18.         while (!ADIF);
  19.         delay_us(1);
  20.         nVal1 =         ADCR;      
  21.         ADCS = 0; //Stop ADC
  22.         ADCE = 0;  //Stop ADC V
  23.         HW_ON();
  24.         //ADM0  =        0x36; //adc work in High speed 1 mode, conversion time 8.25uS;
  25.         ADCE  = 1;
  26.      // ADPC0 &= ~RF_ADC;
  27.        // ADS   =         INCH_6;
  28.        delay_us(1);
  29.        ADIF  =         0;
  30.         ADCS  = 1;
  31.         while (!ADIF);
  32.          delay_us(1);
  33.         nVal2 =         ADCR;   
  34.         ADM0         &=        ~0x81;     
  35.         ADCS = 0;
  36.         ADCE = 0;          
  37.         HW_OFF();
  38.         IR_OFF();
  39.        if(nVal1 >= nVal2)
  40.        {
  41.          nVal2 = nVal1 - nVal2;
  42.           return nVal2;
  43.        }
  44.        else
  45.        {  
  46.          return 0;
  47.        }
  48. }
在做红外ID采样用的芯片是 NEC的 78F0746自带ADC遇到的问题是在ADC采样寄存器 和付给变量的值不相等。详细说明如下:
电路是红外 发送和接收 然后做AD采样  首先的工作是 红外不开启  TM_SDA给出高电平AD采样 记录一个采样值  然后开启红外发送管 在记录一个采样值  得出一个差值 来进行判断 现在遇到的问题是  在进行第一步采用的时候 AD采样转换结果这个寄存器 的值 和 付给变量的值不相等。
就是 ADCR 和nVal1这个值 结果不一样。尝试的结果是 在 TM_SDA给出高电平后 要延时 100uS左右AD采样结构寄存器 和 付给的变量值才能一样。我的问题是如何能避免这个延时?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| kangwuwei 发表于 2011-11-1 21:38 | 显示全部楼层
第一次 使用插入代码 和图片 这个功能  有点乱 见谅。  希望各位遇到过这个问题的前辈们  给个提示 该怎么解决 这问题 搞了我好久了 没有想到解决的办法
 楼主| kangwuwei 发表于 2011-11-2 14:12 | 显示全部楼层
唉 木有人回到  难道我放错板块了??
lost1421 发表于 2011-11-2 16:21 | 显示全部楼层
“AD采样转换结果这个寄存器 的值 和 付给变量的值不相等。”
不明白这是什么意思?
alex_20091122 发表于 2011-11-4 20:59 | 显示全部楼层
有的ADC第一次采样是不准确的,你可以抛弃第一次采样。
 楼主| kangwuwei 发表于 2011-11-7 11:57 | 显示全部楼层
换个小电阻  就可以  原理 这个 时间和电阻 阻值是有关的  我想 应该可PCB走线也有关 不过没法验证走线的问题了  只能换个小电阻 解决  牺牲灵敏度
seuwys 发表于 2013-4-23 09:53 | 显示全部楼层
楼主求联系啊,QQ:474244102 验证码:勾践
我最近也在研究这款单片机,想请教一些问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:修行

26

主题

190

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部