您的位置 首页 FPGA

MSP430单片机比较器A模块

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

首要,整个比较器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 <msp430x11x1.h>
void main (void)
 {
  WDTCTL = WDTPW WDTHOLD;     // 中止WDT
  CAPD |= 0x08;           // 断开与IO端口输入
  CACTL2 = P2CA0;          // 设置P2.3为 comp
  CCTL0 = CCIE;           // CCR0 答应中止
  TACTL = TASSEL_2 ID_3 MC_2;  // SMCLK/8,计数模
  _EINT();             // 开总中止

 while (1) // 循环
 {
  CACTL1 = 0x00;          // 没有参阅电压
  _BIS_SR(LPM0_bits);        // 进入LPM0
  CACTL1 = CAREF0 CAON;      // 0.25*Vcc=P2.3, 比较器开
  _BIS_SR(LPM0_bits);        // 再次进入LPM0
  CACTL1 = CAREF1 CAON;      // 0.5*Vcc=P2.3, 比较器开
  _BIS_SR(LPM0_bits);        // 再次进入 LPM0
  CACTL1 = 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形式
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/261647.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部