打印

MSP430 红外遮挡功能问题求解

[复制链接]
1738|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qinglf|  楼主 | 2012-8-29 20:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在调试一个红外接收时遇到一个问题想请教下大家
    网上资料说接收管有电平型与脉冲型怎么区分?谢谢
   MSP430F413  P1.1接红外发射管。红外接收管OUT脚接P1.0
问题点1:其它程序都关闭只调试红外。全速运行行,手一遮档,P1.0有低脉冲示波器测得 不档P1.0一直为高电平。
   
        在仿真程序时,在外部中断里设置一个断点,全速运行程序,一直可以进入中断
       (为什么不用手档就可以进入)为什么?,  示波器测P1.0有脉冲产生
        我把接收管P1.0脚与PCB分离,分别测PCB上面的P1.0为高电平,接收管out脚  也为高电平。当手一档,接收管脚会有脉冲。

问题点2:  为什么在主程序加一个延时,接收管脚OUT会有一个脉冲?(把接收管头遮住也有)
         
问题1程序:
void  main(void)
{
  WDTCTL = WDTPW + WDTHOLD;//关闭WDT
  uchar i;
  P1DIR=P1DIR|0xf2;
  P1SEL=0x00;

  P1IES &= ~BIT0;
  P1IE|=BIT0;
  P1IFG=0x00;
_EINT();//开全局中断
  while(1)
  {
   
    for(i=0;i<10;i++)
   {
     
    START_TRAMIT_INFRARED;
    delay_us(15);
    STOP_TRAMIT_INFRARED;
    delay_us(4);  
   }
  }
}

#pragma vector=PORT1_VECTOR
__interrupt void P1_irq(void)
{
   _DINT();
if(P1IFG&BIT0)
  {
    flagIrq++;
    if(flagIrq>2) flagIrq=1;
                  
  }
  
   P1IFG=0x00; //每个标志必须在它自己的中断服务程序中复位
   _EINT();
}

问题2程序:
void  main(void)
{
  WDTCTL = WDTPW + WDTHOLD;//关闭WDT
  P1DIR=0xf2;  // 1111 0010
  P1SEL=0x00;
  while(1)
  {
  
     
for(i=0;i<10;i++)
{
    START_TRAMIT_INFRARED;
    delay_us(15);
    STOP_TRAMIT_INFRARED;
    delay_us(4);
}
  delay_ms(1000);
}
}

相关帖子

沙发
figo20042005| | 2012-8-29 22:27 | 只看该作者
不管你是电平还是脉冲,一般来说中断设置为边沿方式最好,如果中断为电平方式就会一直进入中断

使用特权

评论回复
板凳
tianm| | 2012-8-30 09:49 | 只看该作者
加强抗干扰和误动判断

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
qinglf + 1
地板
qinglf|  楼主 | 2012-8-30 10:05 | 只看该作者
我的发射管是套了热缩套管的。与接收管成90度在PCB板上在,电源是用3.3V的。
是设置成沿中断的。请问下3楼怎么处理可以:加强抗干扰和误动判断

使用特权

评论回复
5
figo20042005| | 2012-8-30 13:15 | 只看该作者
比如对有些沿可能是干扰或误动作,你需要用延时或对信号持续时间判断,因为抖动比人动作快,根据这些消除抖动

使用特权

评论回复
6
ledaa| | 2012-8-30 14:04 | 只看该作者
学习。。路过

使用特权

评论回复
7
sssha| | 2012-8-30 14:21 | 只看该作者
:lol学习学习,哈哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

34

帖子

1

粉丝