关于P2.2口的设置

[复制链接]
1236|7
 楼主| 郝英俊 发表于 2014-10-13 08:58 | 显示全部楼层 |阅读模式
#include <MSP430X14X.h>    //msp430f149
typedef unsigned char uchar;
void main( void )
{
  WDTCTL = WDTPW + WDTHOLD;
  P2DIR |=BIT2;
  P2SEL |=BIT2;  //p2.2
  CAPD |=0X08;
  CACTL2=P2CA0;   //CA0-P2.3,int,比较器的正端
  
  //CACTL1=CARSEL+CAREF_0+CAON;
  CACTL1=CARSEL+CAREF_2+CAON;  //内部参考接到比较器的负端,0.25vcc,open-coa
                               //CAREF_1=0.8v  CAREF_2=1.6V   CAREF_3=0.6v
}
这个是我写的一个简单的比较器输出,前几天还能有输出的,不知道为什么就突然不能用了。我猜应该和P2.2口设置有关,因为之前写了一个PWM波输出的程序,使用定时器OUTMOD_4这个功能,输出I/OP2.2也不能用



dirtwillfly 发表于 2014-10-13 22:08 | 显示全部楼层
调试时,注意下寄存器CAOUT,看是否比较器没有正常工作,还是正常工作了没有输出
 楼主| 郝英俊 发表于 2014-10-15 09:45 | 显示全部楼层
dirtwillfly 发表于 2014-10-13 22:08
调试时,注意下寄存器CAOUT,看是否比较器没有正常工作,还是正常工作了没有输出 ...

CAOUT寄存器值始终为1
dirtwillfly 发表于 2014-10-15 21:39 | 显示全部楼层
郝英俊 发表于 2014-10-15 09:45
CAOUT寄存器值始终为1

CAOUT为1应该是比较器已经工作了。你换个io,通过if(CAOUT)来输出高电平,验证一下。
另外,你尝试下:设置控制位CAF位置位时,通过片上的RC低通滤波器进行滤波输出,看怎么样。

还有让p2.2作为普通io使用时,是否输出正常。如果不正常,可能是该io坏了
 楼主| 郝英俊 发表于 2014-10-15 23:04 | 显示全部楼层
dirtwillfly 发表于 2014-10-15 21:39
CAOUT为1应该是比较器已经工作了。你换个io,通过if(CAOUT)来输出高电平,验证一下。
另外,你尝试下: ...

我用if(CAOUT)试过了,换了个其他的IO口,还是CAOUT一直为一
dirtwillfly 发表于 2014-10-16 08:51 | 显示全部楼层
郝英俊 发表于 2014-10-15 23:04
我用if(CAOUT)试过了,换了个其他的IO口,还是CAOUT一直为一

为1说明比较器工作了,这个寄存器默认是0
smilingangel 发表于 2014-10-16 17:19 | 显示全部楼层
这个是用其IO口的服用功能的 啊,,
angerbird 发表于 2014-10-17 17:35 | 显示全部楼层
这个还是蛮不错的啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

40

帖子

0

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