历史上的今天
今天是:2025年04月07日(星期一)
2020年04月07日 | MSP430的比较器
2020-04-07 来源:eefocus
这两天研究了一下430的比较器,开始的时候,没有看懂是怎么一回事,在网站看这方面的博客,好像懂了,但是一到编程,就变得无从下手,但是,皇天不负有心人,笔者还是把他弄懂了
其实这里就是看懂一幅图,两个寄存器,明白工作原理就可以了

这是比较器A的逻辑图,比价器A由4个部分组成
标号1:内部参考电压发生器,可以产生0.25V,0.50v的参考电压
标号2,:外部电压输入端,CA0对应P2.3,CA1对应P2.4
标号3:内部比较器,今天上课刚好上了比较器,也就是正输入端大于负输入端的时候,比较器输出一个1,同时产生一个中断标志位
标号4:也就是比较结果输入端
因此,一般的模版就可以出来了
1:设置内部的参考电压
2:打开外部的输入端
3:设置外部I/O的属性,也就是P2.3或者P2.4的输入属性
4:判断输出的结果
步骤一对应上个步骤的1:这时候就要熟悉寄存器了,比较器A有两个寄存器CACTL1,CACTL2
设置内部参考电压是用CACTL1:这里举一个模版例子:CACTL1 = CARSEL+CAREF1+CAON;
翻译就是,将CACTL1 = 内部参考电压在比较器的正向端输入还是反向端输入+选择是0.25V参考电压还是0.5V参考电压+打开比较器A
步骤二对应上个步骤的2
打开外部的输入端:用的是CACTL2,CACTL2=P2CAO
翻译就是,外部选择的是P2CAO也就是讲P2.3作为输入端,
步骤三:设置I/O属性
P2DIR = 0x00;//把IO设为比较器的输入端
P2SEL |=BIT3;
步骤四:比较输入输出结果:
这时候也要熟悉寄存器了,CACTL2中的最低位,也就是CAOUT,如果正向端大于负向端的话,cout变为1,这时候典型的判断语句就是
if((CACTL2|0xfe) == 0xff)//最低位如果置位为1的话,CACTL1中的最低位,也就是比较器的中断标志位也会置位
{
进一步操作;
中断标志置位为1
}
示例代码:将P2.3输入的电压与0.25进行比较,如果大于的话,点亮led灯,并将中断标志清除
#include void main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; CACTL1 =CARSEL +CAREF1 +CAON; CACTL2 = P2CA0; P2DIR = 0x00;//把IO设为比较器的输入端 P2SEL |=BIT3; P3OUT |=BIT5; P3DIR |=BIT5; while(1) { if((CACTL2 |0xfe)==0xff) { P3OUT &=~BIT5; //比较电压是否超过0。25V CACTL1 &=0xfe; //清除中断标志 } else { P3OUT |=BIT5; } } }
史海拾趣
|
Atheros communications (上海)高薪聘FPGA工程师 WiFi领域著名美资公司,具有竞争力的薪资。 招聘具有相当FPGA经验者,具有一定在IC公司工作的工作背景。 请发送简历至truelygoing@163.com。 工作地点:张江高科,距地铁站5分钟。 注:邮件标题请加上“[FPGA]”,谢谢。… 查看全部问答> |
|
汽车牌照识别是基于图像分割和图像识别理论,对含有汽车牌照的图像进行分析处理,从而确定汽车牌照在图像中的位置,并进一步提取和识别出文本字符。从不同车牌图像中分割出的字符图像各式各样,尺寸变化范围大,增加了识别的难度。尽管可以采用图像 ...… 查看全部问答> |
|
现在很多旧的电脑电源都浪费了,其实用于驱动LED灯比较好。 但是如果直接用限流电阻的话,效率较低。由于电脑电源是开关电源,它先把220V 交流电整流变换成频率较高的振荡,然后整流成5V、 12V等,可在5V 、12V的次级线圈上,整流管之前引出高频的 ...… 查看全部问答> |
|
【FPGA设计问题】Xilinx的IOBUF移植到Altera器件中,RTL代码如何修改? Xilinx的IOBUF移植到Altera器件中,RTL代码如何修改? Xilinx的IOBUF移植到Altera器件中,RTL代码如何修改?本人以前使用的是Xilinx的FPGA,现在改用Altera的FPGA,不知道在对双向端口的控制在Altera中是怎样实现的,直接用下面的assign语句可以保 ...… 查看全部问答> |
|
我把整个的NAND FLASH读出来,然后通过一些办法把NK文件读出来了。。 但是我发现里面的都是系统文件,里面原先写入NAND FLASH文件的文件不能导出来。请问有什么办法把这些导出来。。 我写个示意图: 00000000H:xx xx xx xx xx xx xx xx xx xx ...… 查看全部问答> |
|
我的开发板有做好的BSP包,我想屏蔽去掉一些驱动,写上自己的驱动,然后烧到板子里去,怎么做自己的镜像呢? 新手,求指教!!!! 我的驱动也写好了,屏蔽原有的驱动是不是直接删掉DRIVERS下的驱动文件就可以了呢???… 查看全部问答> |
|
大家好,请问这里有过英蓓公司 EDUKIT-III ARM 开发箱子吗?加我QQ 请教、交流,学习, 大家好,请问这里有过英蓓公司 EDUKIT-III ARM 开发箱子吗?加我QQ 请教、交流,学习,… 查看全部问答> |
|
我想用定时器b来做iar里面定时器a的演示程序功能。但是我把程序改好之后,一直不能正常运行,从右面的disassem××y窗口里面看不到数据。请问为何。程序那里有错?谢谢大侠!!! #include <msp430x14x.h> void main(void) { P1DIR |= 0x0 ...… 查看全部问答> |




