MSP430G2553与MSP430F5336系列单片机总结[4]——比较器B的使用

2019-11-06来源: eefocus关键字:MSP430G2553  MSP430F5336系列  比较器B

比较器B是什么,顾名思义,它其实就是用来比较模拟电压+输入端和-输入端的电压大小,然后设置输出信号CBOUT的值的,如果 + 端电压高于 - 端电压,则CBOUT置高,否则置低。主要的控制寄存器有CBCTL0,CBCTL1,CBCTL2,CBCTL3,CBINT,CBIV,在MSP430G2553中没有比较器B,但是F5336中有,所以接下来的代码全都是F5336的比较器B使用程序:


1.比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端,内部参考电压发生器利用共享电压源产生2.0V参考电压。最后当CB0输入模拟信号电压高于2.0V时,CBOUT输出高电平,当CB0输入模拟信号电压低于2.0V时,输出低电平


#include 

/*

 * 比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端,内部参考电压发生器利用共享电压源产生2.0V参考电压。最后当CB0输入模拟信号电压高于2.0V时,CBOUT输出高电平,当CB0输入模拟信号电压低于2.0V时,输出低电平

 */

void main(void)

{

  WDTCTL = WDTPW + WDTHOLD;         // 关闭看门狗

  P3DIR |= BIT0;

  P3SEL |= BIT0;                       // P3.0选择功能为比较器输出CBOUT

// 以下步骤设置比较器B

  CBCTL0 |= CBIPEN + CBIPSEL_0;     // 启用CB0(P6.0),并将其引至正输入端

  CBCTL1 |= CBPWRMD_1;               // 正常电源模式

  CBCTL2 |= CBRSEL;                   // 内部参考电压VREF引至负输入端

  CBCTL2 |= CBRS_3+CBREFL_2;     // 梯形电阻电路禁用,产生2.0V内部共享电压

  CBCTL3 |= BIT0;                     // 启用P6.0/CB0比较器功能

  CBCTL1 |= CBON;                     // 打开比较器B

  __delay_cycles(75);               // 延迟以待参考电压稳定

  __bis_SR_register(LPM4_bits);   // 进入LPM4

}


2.比较器B的中断使用

#include 

/*

 * 比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端

 * 内部参考电压发生器利用共享电压源产生1.5V参考电压,并且引至-输入端

 * 当CB0模拟信号电压高于1.5V时,拉高P1.0引脚,当CB0输入模拟信号电压低于1.5V时,拉低P1.0引脚

 */

void main(void)

{

  WDTCTL = WDTPW + WDTHOLD;         // 关闭看门狗

  P1DIR |= BIT0;                       // 将P1.0设为输出

  CBCTL0 |= CBIPEN + CBIPSEL_0;     // 启用CB0,并将其引至正输入端

  CBCTL1 |= CBPWRMD_1;               // 正常电源模式

  CBCTL2 |= CBRSEL;                   // 内部参考电压VREF引至负输入端

  CBCTL2 |= CBRS_3+CBREFL_1;     // 梯形电阻电路禁用,产生1.5V内部共享电压

  CBCTL3 |= BIT0;                     // 启用P6.0/CB0比较器功能

  __delay_cycles(75);               // 延迟以待参考电压稳定

  CBINT &= ~(CBIFG + CBIIFG);     // 清除比较器中断标志位

  CBINT  |= CBIE;                     // 使能比较器CBIFG上升沿中断(CBIES=0)

  CBCTL1 |= CBON;                     // 打开比较器B

  __bis_SR_register(LPM4_bits+GIE);// 进入LPM4

}

// Comp_B中断服务程序- 反转P1.0口状态

#pragma vector=COMP_B_VECTOR

__interrupt void Comp_B_ISR (void)

{

  CBCTL1 ^= CBIES;                   // 切换中断触发方式

  CBINT &= ~CBIFG;                   // 清除中断标志位

  P1OUT ^= 0x01;                     // 反转P1.0口状态

}


3.比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端,内部参考电压发生器利用提醒电阻电路产生

#include 

/*

 *比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端,内部参考电压发生器利用提醒电阻电路产生

 *Vcc/2的参考电压,并且引至比较器-输入端,最终当CB0输入模拟信号电压高于Vcc/2时,CBOUT输出高电平,当CB0输入模拟信号低于Vcc/2时,CBOUT输出低电平

 */

void main(void)

{

  WDTCTL = WDTPW + WDTHOLD;     // 关闭看门狗

  P3DIR |= BIT0;

  P3SEL |= BIT0;                       // P3.0选择功能为比较器输出CBOUT

  CBCTL0 |= CBIPEN+CBIPSEL_0;   // 启用CB0,并将其引至正输入端

  CBCTL1 |= CBMRVS;           // 利用CBOUT选择VREF0或VREF1作为内部参考电压

  CBCTL1 |= CBPWRMD_2;           // 超低功耗电源模式

  CBCTL2 |= CBRSEL;               // 内部参考电压VREF引至负输入端

  CBCTL2 |= CBRS_1+CBREF04;     // 利用梯形电阻电路产生1/2VCC参考电压

  CBCTL3 |= BIT0;                 // 启用P6.0/CB0比较器功能

  CBCTL1 |= CBON;                 // 打开比较器B

  __delay_cycles(75);           // 延迟以待参考电压稳定

  __bis_SR_register(LPM4_bits); // 进入LPM4

}


4.比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端,内部参考电压发生器利用提醒电阻电路产生

#include 

/*

 *比较器B输入通道CB0接外部模拟输入信号,并且引至比较器+输入端,内部参考电压发生器利用提醒电阻电路产生

 *Vcc*3/4和Vcc/4的参考电压,通过CBOUT输出进行控制引至比较器-输入端,最终当CB0输入模拟信号电压高于Vcc*3/4时,CBOUT输出高电平,当CB0输入模拟信号低于Vcc/4时,CBOUT输出低电平

 *该程序在MSP430F5336当中跑不出来,可能是由于不支持高速模式

 */

void main(void)

{

  WDTCTL = WDTPW + WDTHOLD;     // 关闭看门狗

  P3DIR |= BIT0;

  P3SEL |= BIT0;                       // P3.0选择功能为比较器输出CBOUT

  CBCTL0 |= CBIPEN + CBIPSEL_0;   // 启用CB0,并将其引至正输入端

  CBCTL1 |= CBPWRMD_0;// 高速电源模式,当CBOUT为高时,内部参考电压选择VREF1,当CBOUT为低时,内部参考电压选择VREF0

  CBCTL2 |= CBRSEL;                 // 内部参考电压VREF引至负输入端

  CBCTL2 |= CBRS_1+CBREF13;       // VREF1设为1/4Vcc

  CBCTL2 |= CBREF04+CBREF03;       // VREF0设为3/4Vcc

  CBCTL3 |= BIT0;                   // 启用P6.0/CB0比较器功能

  CBCTL1 |= CBON;                   // 打开比较器B

  __delay_cycles(75);               // 延迟以待参考电压稳定

  __bis_SR_register(LPM4_bits);   // 进入LPM4

  }


以上就是捕捉比较器的内容。

关键字:MSP430G2553  MSP430F5336系列  比较器B 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479139.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:怎么用keil5实现MSP432E401Y点灯
下一篇:stm8s_iwdg(独立看门狗)

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

MSP430G2553使用CCS8.0编程注意点总结
本文总结了在利用MSP430G2553做实验时的一些通用错误及注意点,用的软件为CCS8.0,供大家借鉴,具体工程不再给出,若有相似问题或本文有错误,可留言,我尽量回复。文末附有MSP430的用户手册、数据手册、学习笔记及《从零开启大学生电子设计之路》电子版及相关例程的下载地址,我也会尽量持续总结并更新。【错误1】:在“UART_Global.h“中已经定义全局变量“extern unsigned int CHANGE_MODE;”,然而编译时仍然出现错误,错误提示为:error #10234-D: unresolved symbols remain。【解决】:经过在网上查找并对比相关例程发现,在“.h”文件中定义后,仍需在相应
发表于 2019-10-30
使用MSP430G2 LaunchPad开发板连接步进电机的方法
在本篇文章中,我们将介绍如何使用MSP430 LaunchPad开发板连接一个步进电机。 MSP-EXP430G2是德州仪器(TI)提供的开发工具,又名LaunchPad,用于学习和练习如何使用他们提供的微控制器。该开发板属于MSP430产品线,我们可以使用它对所有MSP430系列微控制器进行编程。如果您是MSP430的新手,请查看MSP430 LaunchPad的入门教程。所需的材料●    MSP430 LaunchPad开发板●    35BYJ46或28-BYJ48步进电机●    ULN2003驱动芯片●    连接导线● 
发表于 2019-10-23
使用MSP430G2 LaunchPad开发板连接步进电机的方法
使用MSP430G2 LaunchPad开发板驱动伺服电机的方法
在本篇文章中,我们将主要介绍一些有关伺服电机的基础知识以及如何将伺服电机与MSP430G2 LaunchPad开发板进行连接。 MSP-EXP430G2是德州仪器提供的开发工具,也称为LaunchPad,用于学习和实践如何使用其微控制器。该开发板属于MSP430产品线类别,我们可以对所有MSP430系列微控制器进行编程。伺服电机和PWM在详细讨论之前,首先我们应该了解伺服电机。伺服电机包含了直流电机、位置控制系统和转动机构。伺服电机在现代世界有很多应用,因此它们有不同的形状和尺寸。我们将在本篇文章中使用的是SG90伺服电机,它是最流行且最便宜的电机之一。 SG90是一款180度伺服器。所以用这个伺服我们可以将轴从0-180度定位
发表于 2019-10-23
使用MSP430G2 LaunchPad开发板驱动伺服电机的方法
使用MSP430G2单片机的PWM模块控制LED指示灯的亮度
本篇文章是MSP430G2 LaunchPad系列教程的一部分,我们正在学习使用德州仪器的MSP430G2 LaunchPad开发板。到目前为止,我们已经学习了开发板的基础知识,并介绍了如何读取模拟电压以及使用MSP430G2进行连接LCD等。现在我们继续了解MSP430G2单片机中的PWM模块。我们将通过改变电位器来控制LED的亮度,因此,将电位器连接到MSP430的模拟引脚,然后读取其模拟电压,因此建议在继续学习之前先了解ADC的文章。什么是PWM信号?脉宽调制(PWM)是控制电路中最常用的数字信号。该信号以预定的时间和速度设置为高电平(3.3v)和低电平(0v)。信号保持高电平的时间称为“开启时间”,信号保持低电平的时间称为
发表于 2019-10-22
使用MSP430G2单片机的PWM模块控制LED指示灯的亮度
使用MSP430G2 LaunchPad开发板连接LCD液晶显示屏的方法
任何+ 5V稳压电源,然后向LCD供电,在这种情况下,请确保将电源地连接到MSP开发板的地。一旦完成连接+ 5V引脚,其他引脚的连接就非常简单。现在我们的硬件已经准备就绪,让我们继续介绍软件部分。使用Energia开发环境编程用于LCD的MSP430本页末尾给出了将MSP430G2553与LCD显示器连接的完整程序。代码可以进行编译、上传和使用。在下面的段落中,我将解释程序是如何工作的。在我们继续解释之前,我们必须记下我们正在使用的引脚。如果你看一下上面的电路图和下面的MSP430引脚图,您可以得出结论,我们已经按照下表连接了LCD。LCD引脚名称连接到VSS地VDD+ 5V USB引脚RsMSP开发板的第2脚R / W
发表于 2019-10-22
使用MSP430G2 LaunchPad开发板连接LCD液晶显示屏的方法
MSP430F54系列UCS时钟
1:UCS(Unified Clock System)包含5个时钟源: XT1CLK:可以用于低频率的32.768KHZ或者4~32MHZ的频率。但不是每一个设备都支持高频率的,有些只支持32.768KHZ。 VLOCLK:内部低功耗,低频率的时钟,典型值为10KHZ。 REFOCLK:内部时钟,典型值32.768KHZ。 DCOCLK: Internal digitally-controlled oscillator (DCO) that can be stabilized by the FLL。 XT2CLK:高频时钟源,外部时钟,4 MHz到32 MHz。 2:我们可用的从UCS模块出来的3个时钟: ACLK:辅
发表于 2016-08-18
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved