关于P2.2口的设置

2019-07-30 15:37发布

#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也不能用



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
dirtwillfly
1楼-- · 2019-07-30 17:16
调试时,注意下寄存器CAOUT,看是否比较器没有正常工作,还是正常工作了没有输出
郝英俊
2楼-- · 2019-07-30 17:25
dirtwillfly 发表于 2014-10-13 22:08
调试时,注意下寄存器CAOUT,看是否比较器没有正常工作,还是正常工作了没有输出 ...

CAOUT寄存器值始终为1
dirtwillfly
3楼-- · 2019-07-30 21:55
郝英俊 发表于 2014-10-15 09:45
CAOUT寄存器值始终为1

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

还有让p2.2作为普通io使用时,是否输出正常。如果不正常,可能是该io坏了
郝英俊
4楼-- · 2019-07-31 03:10
 精彩回答 2  元偷偷看……
dirtwillfly
5楼-- · 2019-07-31 08:09
郝英俊 发表于 2014-10-15 23:04
我用if(CAOUT)试过了,换了个其他的IO口,还是CAOUT一直为一

为1说明比较器工作了,这个寄存器默认是0
smilingangel
6楼-- · 2019-07-31 09:56
这个是用其IO口的服用功能的 啊,,

一周热门 更多>