2012Ehome 发表于 2012-8-29 20:58:32

MSP430 红外遮挡功能问题求解

最近在调试一个红外接收时遇到一个问题想请教下大家
    网上资料说接收管有电平型与脉冲型怎么区分?谢谢
   MSP430F413P1.1接红外发射管。红外接收管OUT脚接P1.0
问题点1:其它程序都关闭只调试红外。全速运行行,手一遮档,P1.0有低脉冲示波器测得 不档P1.0一直为高电平。
   
      在仿真程序时,在外部中断里设置一个断点,全速运行程序,一直可以进入中断
       (为什么不用手档就可以进入)为什么?,示波器测P1.0有脉冲产生
      我把接收管P1.0脚与PCB分离,分别测PCB上面的P1.0为高电平,接收管out脚也为高电平。当手一档,接收管脚会有脉冲。

问题点2:为什么在主程序加一个延时,接收管脚OUT会有一个脉冲?(把接收管头遮住也有)
         
问题1程序:
voidmain(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程序:
voidmain(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);
}
}
页: [1]
查看完整版本: MSP430 红外遮挡功能问题求解