MSP430单片机的比较器工作原理解析

这两天研究了一下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;
}
}
}

小康助手怎么样?家用健康机器人,父母的贴心健康管家
杨元庆:联想坚持全球化与本土化 每年投入100亿做研发
Flash Player于2021年1月12日起彻底屏蔽运行
诺基亚8.1 Plus曝光采用了打孔屏将配备骁龙710或者更强的新处理器
智能电能表上指示灯的含义
MSP430单片机的比较器工作原理解析
医疗废物实时监管追溯系统的优势与作用
25G光模块的四种分类,主要用在25G以太网和100G(4×25Gbps)以太网中
Wishbone总线的地址不变突发示例
M5年度热销产品TOP10
PLC中的扩展模拟量输入模块是什么
人工智能技术使得2022北京8分钟惊艳平昌冬奥会
高通表示5G将会比3G过渡到4G时间更短
苹果又被起诉 Apple Watch的“紧急求救”功能被指涉嫌剽窃
Linux内核的物理内存组织结构详解
智能建筑技术正处于测试和升级的阶段
米尔科技ARM编译器介绍
插电式混动车型有哪些_插电式混动车型推荐
SpaceBok是一个可以在月球或者小行星等低重力体上行走的四足机器人
我国将陆续投产4架大型灭火水上救援水陆两栖飞机鲲龙AG600