MSP430单片机比较器A模块

来源:本站
导读:目前正在解读《MSP430单片机比较器A模块》的相关信息,《MSP430单片机比较器A模块》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《MSP430单片机比较器A模块》的详细说明。
简介:本文给大家介绍了MSP430单片机比较器A模块。

首先,整个比较器A的工作必需由CAON位置为1时才能工作的,此位属CACTL1控制寄存器。单片机上电时此位是为0的,也就是说比较器是不工作的。

以下大概讲述几个部分电路的功能和一些相关信息。

模拟输入电路:

外部模拟引脚信号CA0,CA1(正负端)可以分别由P2CA0,P2CA1位控制开或关。经过软件的设置可以分别与内部的几个基准电压进行比较(0.5VCC,0.25VCC,三极管门值电压)或外部其中的电压进行比较。

应用的硬件比较可以分为以下三种组合:

两个外部引脚输入信号进行比较

其中一个外部引脚信号与内部的0.5VCC或0.25VCC比较

其中一个外部引脚信号与内部基准电压比较

参考电压发生器

参考电压电路是可以由CARSEL,CARERF0,CARERF1位来控制电压的产生。通过软件设置可以选择几种电压输出到比较器的输入中作为比较,当然此参考电压也可以通过单片机的引脚往外部提供参考电压之用。

比较器A核心

比较器CAON位控制开关,CAEX位控制位控制方向。

低通虑波器

低通虑波器只需一个CAF位来控制此虑波器的功能开与关。此虑波器功能是用于消除比较器输出信号的毛剌,以保证信号的质量和中断请求的可靠性。

中断请求

比较器A模块是具有中断功能的,如比较器功能CAIE中断允许开了,在CAIF信号产生时将生产中断(当然GIE要为1时)。比较器A模块是具有中断独立向量的,是一个单独的中断,CUP接受请求后会硬件自动清除中断标志位CAIFG。

比较器模块相关寄存器说明

CACTL1 比较器控制寄存器1

CAEX: 控制内部比较器A的输入信号和输出信号的方向

CARSEL:控制内部参考电压加到比较器A的正输入端还是负输入端

由结构图可以看出,CAEX,CARSEL在不同设置时,比较器A输入端的所加的参考电压是有不同的.

请参考以下列表:

-----------------------------------

CARSEL CAEX 参考电压接入端

0 0 内部参考源加到比较器的正端

0 1 内部参考源加到比较器的负端

1 0 内部参考源加到比较器的负端

1 1 内部参考源加到比较器的正端

CAREF1, CAREF0 选择参考源:

0 使用外部参考

1 选择0.25VCC为参考电压

2 选择0.5VCC为参考电压

3 选择二极管电压为参考电压,须参见具体IC的资料

CAON: 控制比较器A的打开与关闭

0 关闭比较器工作

1 打开比较器工作

CAIES: 中断边沿触发模式选择

0 上升沿使中断标志CAIFG置位

1 下降沿使中断标志CAIFG置位

CAIE:比较器中断允许

0 禁止中断

1 允许中断

CAIFG: 比较器中断标志

0 没有中断请求

1 有中断请求标志信号

CACTL2 比较器控制寄存器2

P2CA1:控制输入端CA1

0 外部引脚信号不与比较器A连接

1 外部引脚信号与比较器A连接

P2CA0:控制输入端CA0

0 外部引脚信号不与比较器A连接

1 外部引脚信号与比较器A连接

CAF: 选择比较器输出端是否经过RC低通滤波器

0 开通RC低通滤波器

1 直通信号

CAOUT: 比较器A输出的信号

0 CA0小于CA1

1 CA0大于CA1

CAPD 端口禁止寄存器

比较器A模块的输入输出与IO口共用引脚,可以控制IO端口输入缓冲器的通断开关.CAPD控制位初始化为0,则端口输入缓冲器有效.当相应位为1时,端口输入缓冲器无效。

程序范例:

#include void main (void){WDTCTL = WDTPW WDTHOLD; // 停止WDTCAPD |= 0x08; // 断开与IO端口输入CACTL2 = P2CA0; // 设置P2.3为 compCCTL0 = CCIE; // CCR0 允许中断TACTL = TASSEL_2 ID_3 MC_2; // SMCLK/8,计数模式_EINT(); // 开总中断 while (1) // 循环{CACTL1 = 0x00; // 没有参考电压_BIS_SR(LPM0_bits); // 进入LPM0CACTL1 = CAREF0 CAON; // 0.25*Vcc=P2.3, 比较器开_BIS_SR(LPM0_bits); // 再次进入LPM0CACTL1 = CAREF1 CAON; // 0.5*Vcc=P2.3, 比较器开_BIS_SR(LPM0_bits); // 再次进入 LPM0CACTL1 = CAREF1 CAREF0 CAON; // 0.55V on P2.3,比较器开_BIS_SR(LPM0_bits); // 再次进入LPM0}}// Timer A0 interrupt service routine#pragma vector=TIMERA0_VECTOR__interrupt void Timer_A (void){_BIC_SR_IRQ(LPM0_bits); //退出LMP0模式}

提醒:《MSP430单片机比较器A模块》最后刷新时间 2024-03-14 00:57:47,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《MSP430单片机比较器A模块》该内容的真实性请自行鉴别。