MSP430 G2553 比较器Comparator_A+、数据流程图DFD、状态转换图STD

发布者:梦幻之光最新更新时间:2022-01-14 来源: eefocus关键字:MSP430  G2553  比较器  STD 手机看文章 扫描二维码
随时随地手机看文章

一、CA+构造

MSP430G2553带有一个比较器Comparator_A+(CA+),其构造框图如下图所示。

二、输入 & 输出

如上图所示,比较器有一个同向输入端(V+)和一个反向输入端(V-)。通过软件设置,V+端可以连接到CA0~CA2三个外部管脚之一,或者三个内部电压基准之一;V-端可以连接到CA1~CA7七个外部管脚之一,或者三个内部电压基准之一。内部电压基准可以是0.5*Vcc、0.25*Vcc,或者内部一个二极管的导通电压(约0.55V)。


输出信号可以连接至Timer的外部时钟输入,或者CAOUT对应的管脚;输出信号变化时,可触发CAIFG中断。


CAx、CAOUT对应的MSP430G2553管脚如下图所示。

三、相关设置寄存器

CA+主要寄存器有CACTL1、CACTL2、CAPD三个。其中CAPD用于断开与GPIO管脚相连的数字电路部分,以提高CA+的性能;实际上,当某个管脚被设置成CA+输入时,CAPD会自动置位,因此对于CAPD的操作一般不需关心(除非该管脚还同时用于输入某个数字信号)。


- CACTL2寄存器的P2CAx位段:选择输入信号对应的管脚。

- CACTL1寄存器的CAEx位:切换V+、V-输入信号。该功能用于当输入信号非常接近时,一般用不到。

- CACTL1寄存器的CAON位:关闭/开启CA+。

- CACTL1寄存器的CAREFx位段和CARSEL位:CAREFx位段用于选择CA+参考电压,可以为0.5*Vcc、0.25*Vcc或~0.55V;CARSEL位用于选择参考电压连接至V+还是V-端。注意当V+、V-都连接到外部管脚时,内部参考电压须关闭。

- CACTL2寄存器的CAF位:关闭/开启输入信号滤波。建议开启。

- CACTL2寄存器的CASHSHORT位:将输入信号短接。一般用不到。


四、一个有意思的例子

将电位器连接到P1.1,当P1.1的电压高于0.5*Vcc时,LED灯闪烁;否则LED灯熄灭。由于P1.1对应MSP430G2553芯片的RX,G2 Launchpad已经将其连接到了USB转串口芯片上,因此P1.1作为CA1使用时应将J3上的相关跳线断开。


 1 #include "io430.h"

 2 

 3 #define LED1 BIT0  //red

 4 

 5 #define TRUE 1

 6 #define FALSE 0

 7 

 8 #define LOW_INPUT 0

 9 #define HIGH_INPUT 1

10 

11 //global variable

12 char state = LOW_INPUT;

13 char flash = FALSE; //start with low input, no flash on LED

14 

15 void main(void)

16 {

17     // Stop watchdog timer to prevent time out reset

18     WDTCTL = WDTPW + WDTHOLD;

19     

20     // LED setup

21     P1OUT = 0;

22     P1DIR |= LED1;

23     

24     // DCO setup

25     BCSCTL1 = CALBC1_1MHZ; //running at 1MHz

26     DCOCTL = CALDCO_1MHZ;

27     

28     // ACLK setup

29     BCSCTL3 |= LFXT1S_2; //ACLK source: VLO, measured as 10kHz

30     BCSCTL1 |= DIVA_3; //ACLK = VLO divided by 8: 1.25kHz

31     

32     // Timer0_A setup

33     TA0CCR0 = 250 - 1; //timer overflow freq: 1250/250 = 5Hz(0.2s)

34     TA0CCTL0 = CCIE;//enable interrupt

35     TA0CTL = TASSEL_1 + MC_1 + TACLR;//ACLK, no div, up mode, clear timer

36     

37     // Comparator_A+ setup

38     CACTL1 = CAREF_2 + CARSEL + CAIE;//0.5 Vcc ref on V-, enable interrupt on rising

39     CACTL2 = P2CA4 + CAF; //input CA1 (P1.1, remove the jumper) on V+, filter on

40     CACTL1 |= CAON; //turn on comparator

41     

42     __enable_interrupt();

43     LPM3;

44     

45 }

46 

47 #pragma vector = TIMER0_A0_VECTOR

48 __interrupt void CCR0_ISR(void)

49 {

50     //TA0CCR0 flag clearing is automatic

51     if(flash == FALSE)

52     {

53         P1OUT &= ~LED1; //led off

54     }

55     else

56     {

57         P1OUT ^= LED1; //toggle LED

58     }

59 }

60 

61 #pragma vector = COMPARATORA_VECTOR

62 __interrupt void COMPA_ISR(void)

63 {

64     switch(state)

65     {

66     case LOW_INPUT:

67         if((CACTL2 & CAOUT) == 0x01)

68         {

69             state = HIGH_INPUT;

70             CACTL1 |= CAIES; //value high, so watch for falling edge

71             flash = TRUE; //let led flash      

72         }

73         break;

74     case HIGH_INPUT:

75         if((CACTL2 & CAOUT) == 0x00)

76         {

77             state = LOW_INPUT;

78             CACTL1 &= ~CAIES; //value low, so watch for rising edge

79             flash = FALSE; //turn LED off      

80         }

81         break;      

82     }

83 }


这个例子有意思的地方在于,展示了数据流程图(Data Flow Diagram, DFD)和状态转换图(State Transition Diagram, STD)这两个重要的概念。两个中断程序分别处理来自Timer0_A和CA+的中断,形成两个“process”,它们有自身独有的变量/参数,同时还共享了flash(LED是否闪烁)这一变量。此外,CA+的中断程序包含HIGH_INPUT和LOW_INPUT两种状态,是一个非常简单的状态机。


程序的DFD和CA+中断程序的STD如下图所示。


关键字:MSP430  G2553  比较器  STD 引用地址:MSP430 G2553 比较器Comparator_A+、数据流程图DFD、状态转换图STD

上一篇:MSP430 G2553 Launchpad实现电容测量
下一篇:msp430低功耗LPM

推荐阅读最新更新时间:2024-11-17 02:14

MSP430定时器的PWM输出
定时器是单片机常用的其本设备,用来产生精确计时或是其他功能;msp430的定时器不仅可以完成精确定时,还能产生PWM波形输出,和捕获时刻值(上升沿或是下降沿到来的时候)。这里完成一个比较通用的PWM波形产生程序。 硬件介绍:MSP430系列单片机的TimerA结构复杂,功能强大,适合应用于工业控制,如数字化电机控制,电表和手持式仪表的理想配置。它给开发人员提供了较多灵活的选择余地。当PWM 不需要修改占空比和时间时,TimerA 能自动输出PWM,而不需利用中断维持PWM输出。 MSP430F16x和MSP430F14x单片机内部均含有两个定时器,TA和TB;TA有三个模块,CCR0-CCR2;TB含有CC
[单片机]
<font color='red'>MSP430</font>定时器的PWM输出
msp430之__delay_cycles精确延时的说明及改正
在这里, 我来讨论一下关于MSP430单片机使用__delay_cycles延时的问题. IAR for MSP430编译器提供了一个编译器内联的精确延时函数(并非真正的 函数)以提供用户精确延时使用, 该函数原型是: __intrinsic void __delay_cycles(unsigned long __cycles); 该内部函数实现__cycles个CPU周期的延时,但对于该参数的设置,我要陈述一下: __cycles需要我们传递的是CPU运行的周期个数 网上普遍的用法是: #define CPU_CLOCK 8000000 #define delay_us(us) __delay_cycl
[单片机]
MSP430输入输出I/O口详解
MSP430系列中,不同单片机的IO 口数量不同。体积最小的MSP430F20xx系列只有10 个IO,适合在超小型设备中应用;功能最丰富的MSP430FG46xx系列多达80 个IO 口,足够应付外部设备繁多的复杂应用。在MSP430FE425 单片机中,共有14 个IO 口,属于IO 口较少的系列。但由于需要大量引脚的设备,如LCD、多通道模拟量输入等都有专用引脚,不占用IO 口。因此在大部分设计中IO 数量还是够用的。 l IO 口寄存器和大部分单片机类似,MSP430 单片机也将8 个IO 口编为一组。例如P1.0~P1.7都属于P1 口。每组IO 口都有4 个控制寄存器,其中P1 和P2 口还额外具有3 个中断寄存器
[单片机]
MSP430F149单片机能输出多少路PWM波?
在使用430的PWM波的时候,我一直有一个困惑,那就是它到底能输出几路PWM波?我想别的朋友可能也有相同的困惑,在我查找了好多资料之后最终搞懂了,下面分享一下学习经验。 首先,MSP430F149有两个16位的定时器Timer_A和Timer_B,其中TA有3个捕获比较单元,TB有7个捕获比较单元,产生PWM波需要将定时器配置在比较模式下,刚开始我以为既然TA有三个捕获比较模块,那么就应该有三个PWM波,结果怎么配置都无法产生TA1,后来在我仔细查看User's Guide才弄懂了,下面先上图: 上图说道:每个捕获、比较模块的输出可以产生PWM信号,每个输出根据EQU0和EQUX可以配置为8种模式。 我们知道
[单片机]
<font color='red'>MSP430</font>F149单片机能输出多少路PWM波?
基于MSP430F2274单片机的倒车雷达设计
随着人们对汽车辅助驾驶系统智能化要求的提高和汽车电子系统的网络化发展,新型的倒车雷达应能够连续测距并显示障碍物距离,并具有通信功能,能够把数据发送到汽车总线上去。以往的倒车雷达设计使用的元器件较多,功能也较简单。本文介绍的基于新型高性能超低功耗单片机MSP430F2274的倒车雷达可以弥补以往产品的不足。 系统总体设计 系统采用超声波测距原理。超声波测距仪器一般由发射器、接收器和信号处理器三部分组成。工作时,超声波发射器发出超声波脉冲,超声波接收器接收遇到障碍物反射回来的反射波,准确测量超声波从发射到遇到障碍物反射返回的时间,根据超声波的传播速度,可以计算出障碍物距离。作为一种非接触式的检测方式,超声波具有空气传播衰减小、反
[单片机]
基于<font color='red'>MSP430</font>F2274单片机的倒车雷达设计
MSP430 SD卡SPI读写操作(1) —— SD卡命令
本节介绍SD卡常用命令,包括SD卡的初始化、读、写等操作的命令及其响应的介绍。 首先附上SD相关文档下载地址: https://www.sdcard.org 快速导航: 一、SD卡介绍 二、SD卡寄存器 三、SPI模式命令格式 四、SPI模式命令响应 五、常用SD命令 一、SD卡介绍 MMC:是MultiMediaCard的缩写,即多媒体卡。 SD:是Secure Digital Memory Card的缩写,即安全数码卡。SD卡又可细分为SDSC (Standard Capacity SD Memory Card, 0 - 2GB)、SDHC (High Capacity SD Memory Card, 2 - 32GB)和S
[单片机]
msp430 程序升级
第一篇 在项目开发中,至关重要的是保证产品运行的可靠,如果遇到异常,能否恢复很重要,而不是像砖头一样,程序死在某个地方。固件升级的原理就是重写向量表,在引导区更新app区的flash,然后跳转app区。实际开发中就会有以下问题: 1.如果MCU复位,比如POR,PDR,WDT等复位,都会使sp指针指向复位地址。那么MCU从引导区执行,如果APP区程序有效,应该如何控制程序跳转到APP区。 2.如果APP区或者引导区接受新固件,在更新APP区flash时,如果此时MCU发生掉电,当再次上电后,MCU该如何执行。或许有人说,我们有外部的EEP或者外部的FLASH,会使用状态和标志去记录当时MCU操作flash的状态,当然这些状态和
[单片机]
MSP430单片机在电源控制中的应用
MSP430系列单片机是美国TI公司生产的新一代16位单片机,是一种超低功耗的混合信号处理器(MixedSignal Processor),它具有低电压、超低功耗、强大的处理能力、系统工作稳定、丰富的片内外设、方便开发等优点,具有很高的性价比,在工程控制等领域有着极其广泛的应用范围。开关Boost稳压电源利用开关器件控制、无源磁性元件及电容元件的能量存储特性,从输入电压源获取分离的能量,暂时把能量以磁场的形式存储在电感器中,或以电场的形式存储在电容器中,然后将能量转换到负载。对DC—DC主回路采用Boost升压斩波电路。 2 系统结构和总设计方案     本开关稳压电源是以 MSP430F449 为主控制器件,它是TI公司生产
[电源管理]
<font color='red'>MSP430</font>单片机在电源控制中的应用

推荐帖子

几种常见传感器总结
本帖最后由paulhyde于2014-9-1503:34编辑几种常见传感器总结1、红外对管:红外对管是根据红外辐射式传感器原理制作的一种红外对射式传感器。与一般红外传感器一样,红外对管也由三部分构成:光学系统(发射管)、探测器(接收管)、信号调理及输出电路。红外探测器是利用红外辐射与物质相互作用所呈现的物理效应来探测红外辐射的。在此接收管通过对发射管所发出的红外线做出反应实现,实现信号的采集,再通过后续信号处理电路完成信号的采集和输出。1.jpg(3.94
guoguizhi123 电子竞赛
利用运算放大器实现的混频器
混频器常常用一个二极管桥式电路(diodebridge)或一个Gilbert单元(Gilbertcell)来实现。这两类混频器都使用了一个本地振荡器(LO)来跳转射频输入的极性。  当LO为正时,RF输入被混频转换为中频(IF)输出时极性不改变。当LO为负时,RF输入转换为IF时极性改变。于是,通过LO“跳转”了RF信号的极性。这种效应相当于以乘以+1或-1(损耗忽略不计)。  混频器还可利用运算放大器来实现(图1)。这种运放混频器采用一种平方波LO来跳转RF输入的极性。U1b、D1、D2
maker RF/无线
STM32 CubeMx 软件有更新啦 加入对F1系列的支持(附下载地址)
本帖最后由bobde163于2015-1-2413:11编辑 今天还是随手点开CubeMX软件去检查更新,先是检查版本号,发现F4系列的固件包已经更新到1.4.0版了再一检测固件包的更新,往下拉,竟然发现加入了F1系列的固件包下载,等了许久,使用量最多的F1系列终于有了,目前不知道官网上有没有下载的地方,大家自己去看吧,不过使用软件更新应该是可以的,只是速度会比较慢而已。STM32CubeMX4.6.0版程序下载地址:http://pan.baidu.
bobde163 嵌入式系统
MSP430 UART 波特率运算
各位专家~小弟在研究UART在波特率的转换上有点搞不太懂以下是书上的范例程式码int_usart(){U0CTL|=SWRST;U0CTL|=CHAR;U0TCTL|=SSEL1;//SELECTSMCLK=1MHzUOBR0=0Xa0;U0BR1=0X01;UMCTL0=0Xc0;//波特率19200ME1|=UTXE0+URXE0;....}其中不太懂UOBR0=0Xa0;U0BR1=0X01;UMCTL0=0Xc0;
irving800621 微控制器 MCU
请问如何在PB5.0中查看源代码(用右键的方式)
我在PB5.0下要修改代码,但是有的函数在其他文件里(例如在根目录下),我想看一下某个函数的实现体,我在函数上点击右键选择GoToDefinitionof函数名,但是出现对话框说要去project中的setting中设置,我弄了半天发现好像只能一个一个project的设置成yes(GenerateBrowseInformation中),重新编译了好像也没效果,还是看不了其他函数实现体,我应该怎么设置呢,才能对任意一个函数用右键的方式(GoToDefinitionof函
yy0216 嵌入式系统
STM32F769I-DISCO评测【3】--STM32F769开发环境建立
本节我们介绍STM32F769开发环境,对于ARM内核的芯片开发来说,我觉得还是还用ARM公司的工具比较好些,下面先介绍ARM公司的开发工具MDK5。1、MDK5简介MDK源自德国的KEIL公司,是RealViewMDK的简称。在全球MDK被超过10万的嵌入式开发工程师使用。目前最新版本为:MDK5.22,本次我们使用的就是该版本,该版本使用uVision5IDE集成开发环境,是目前针对ARM处理器,尤其是CortexM内核处理器的最佳开发工具
qwerghf stm32/stm8
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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