比较器A是一个实现模拟电压比较的外围模块~~~~~~~~~~~~
比较器A的主要功能是指出两个输入电压CA0和CA1的大小关系,然后设置输出信号CAOUT的值。如果CA0>CA1 则:CAOUT=1,否则CAOUT=0。
参与比较的两个电压CA0和CA1可以是外部或者内部基准电压。任何组合都是可能的。
比较器结构
比较器A一共有3个寄存器
CACTL1,CACTL2和CAPD
其中CAEX 交换比较器的输入端
CARSEL 选择内部参考源加到比较器A的+端或-,跟CAEX的选择有关,具体参照数据手册。
CAREF1,CAREF0 参考电平发生器控制
0:关闭
1:选择0.25Vcc为参考电平
2: 0.5Vcc
3:选择二极管为参考电压
CAON 开关 0关闭,1打开
CAIES 中断沿触发
0:上升沿
1:下降沿
CAIE 比较器A中断允许
0:不允许
1:允许
CAIFG 比较器A中断标志
0:没有
1:有中断标志
CACTL2.7~CACTL2.4具体看手册
PACA1,PACA0
0:外部信号不连接
1:连接
CAF
1的话输出信号经过滤波器
CAOUT 比较器A输出。readonly
CAPD
CAPD.x
0:输入缓冲开
1:输入缓冲关
比较器A的中断
ex:
电压检测:P2.3输入的未知电压接到比较器A正端,片内参考电压0.25Vcc接到比较器A负端,如果未知电压大于0.25Vcc,P1.0置位,否则P1.0复位。
#include "msp430x44x.h"
void main (void)
{
WDTCTL = WDTPW + WDTHOLD; // 停止看门狗
P1DIR |= 0x01; // P1.0 输出
CACTL1 = CARSEL + CAREF0 + CAON; // 0.25 Vcc = -comp
CACTL2 = P2CA0; // P2.3 = +comp
while (1)
{
if ((CAOUT & CACTL2))
P1OUT |= 0x01; // CAOUT =1, 置位 P1.0
else P1OUT &= ~0x01; // 否则复位
}
}