MSP430 G2553 比较器Comparator_A+、数据流程图DFD、状态转换图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灯熄灭。

 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) 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如下图所示。

时间: 2024-10-20 14:43:12

MSP430 G2553 比较器Comparator_A+、数据流程图DFD、状态转换图STD的相关文章

MSP430 G2553 Launchpad实现电容测量

一.基本原理 对于Source-Free RC电路,其电容放电的特性可以描述为: 其中V0是电容的初始电压,t是放电时间,R是串接的电阻阻值,C是电容值,v(t)是t时刻电容上的电压.因此,若已知V0.R.以及t1时刻的电压Vt1,便可求得C: 二.如何控制和测量 如上图所示,大致步骤为:1)由GPIO通过电阻R给电容C充电至Vcc:2)该GPIO输出0,电容C通过R进行放电,同时Timer开始计时.CA+开启:3)当电容电压放电至参考电压(此处是0.25Vcc)时,比较器CA+输出端出现电平变

数据流图、数据流程图、程序流程图的区别与联系

数据流图 (Data Flow Diagram) 简称:DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能.数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法.它通过信息系统对数据"流"的图形表示,显示了从系统输入和输出的信息.数据将如何通过系统前进.以及数据将存储在哪里.它的主要元素有:数据存储(File/Database).输入输出接口(Input.Output,就是数据的源点和终点).处理过程(流程.进程Proc

数据流图与数据流程图的区别

数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能.数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法. 数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型.在结构化开发方法中,数据流图是需求分析阶段产生的结果. 数据流程图(Data Flow Diagram,DFD/Data Flow

数据流图和数据流程图的区别

数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能.数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法.数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型.在结构化开发方法中,数据流图是需求分析阶段产生的结果. 数据流程图包括:a.指明数据存在的数据符号,这些数据符号也可指明该数据所使用

数据流图和数据流程图

一.数据流图 1.数据流图(Data Flow Diagram):简称DFD, 它从数据传递和加工角度,以图形方式来表达系统的逻辑功能.数据在系统内部的逻辑流向和逻辑变换过程, 是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法. 2.数据流程图包括: a.指明数据存在的数据符号,这些数据符号也可指明该数据所使用的媒体: b.指明对数据执行的处理的处理符号,这些符号也可指明该处理所用到的机器功能: c.指明几个处理和(或)数据媒体之间的数据流的流线符号: d.便于读.写数据流程图

绘制数据流程图简单创意方法介绍

流程图的分类有很多,不同的流程图类型适用的不同行业或者是场合是不同的,我们要针对变化的因素绘制出不变的流程图,以下将为大家讲述绘制数据流程图简单创意操作方法介绍,整个过程将会围绕数据流程图的画法进行展开讲述. ** 绘制工具:迅捷画图 绘制方法** 在绘制之前我们需要选择合适自己的绘制工具,这样可以给工作带来很大的方便,迅捷画图是一款绘制思维导图,流程图的在线网站,利用专业的绘制软件进行绘制使用,操作起来会很简单. 1.首先需要我们打开百度浏览器,在搜索框输入迅捷画图,在搜索结果中点击进行使用即

Nginx下HTML页面POST请求静态JSON数据返回405状态

在浏览器访问HTML页面,发现一些静态JSON数据没有显示,F12查看,如下图所示: 可以看到请求方式为POST 将请求链接复制在浏览器地址栏访问,可以正常请求到数据 F12查看,可以看到请求方式为GET,状态码为200 可知问题为:Nginx下HTML页面POST请求静态JSON数据返回405状态,但用GET请求则正常返回数据. 百度后,有说,Apache.IIS.Nginx等绝大多数Web服务器,都不允许静态文件响应POST请求. 下面进行测试: 系统为CentOS7.5,Nginx(版本:

TCP的三次握手以及TCP状态转换图详解

今天来讨论一下TCP的三次握手以及TCP的状态转换图.首先发一个三次握手的流程图如下: 圖 2.4-3.三向交握之封包连接模式A:封包发起当用戶端想要对服务器端发起连接时,就必須要送出一個要求连线的封包,此时用戶端必须随机取用一個大于1024 以上的端口來做为程序通信的通道.然后在 TCP 的表头当中,必须带有 SYN 的主动连线(SYN=1),並并且记下发送给服务器端的序列号(Sequence number = 10001) .B:封包接收与确认封包发送当服务器端收到这个包,并且确定要接受这个

TCP三次握手、四次挥手及状态转换图

TCP/IP通信的三次握手如下: TCP是主机对主机层的传输控制协议,提供可靠的连接服务: 位码即tcp标志位,有6种标示:SYN(synchronous建立联机) .ACK(acknowledgement 确认) .PSH(push传送). FIN(finish结束) .RST(reset重置) .URG(urgent紧急).Sequence number(顺序号码) .Acknowledge number(确认号码). 三次握手: 第一次握手:客户端发送syn包(syn=x)的数据包到服务器