《MSP430系列超低功耗单片机原理与系统设计》课件第5章_第1页
《MSP430系列超低功耗单片机原理与系统设计》课件第5章_第2页
《MSP430系列超低功耗单片机原理与系统设计》课件第5章_第3页
《MSP430系列超低功耗单片机原理与系统设计》课件第5章_第4页
《MSP430系列超低功耗单片机原理与系统设计》课件第5章_第5页
已阅读5页,还剩732页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章MSP430系列单片机片内外围模块

5.1MSP430系列单片机的时钟模块与低功耗结构

5.2MSP430系列单片机的各种端口

5.3定时器

5.4硬件乘法器

5.5FLASH存储器模块

5.6比较器A5.7DMA控制器

5.8MSP430系列单片机的通用串行通信模块

5.9MSP430系列单片机的模/数转换模块

5.10MSP430系列单片机的数/模转换模块

5.11MSP430系列单片机液晶驱动模块

习题

5.1MSP430系列单片机的时钟模块与低功耗结构

5.1.1时钟模块

MSP430系列单片机的时钟模块由高速晶体振荡器、低速晶体振荡器、数字控制振荡器DCO、锁频环FLL以及锁频环增强版本FLL+等部分构成。不同系列单片机所包含的时钟模块不完全相同,但是各系列不同基础时钟模块均可输出ACLK(辅助时钟)、MCLK(主系统时钟)和SMCLK(子系统时钟)3种不同频率,如图5-1所示。

图5-1MSP430的时钟

1.时钟模块概述

时钟信号是定时操作的基本信号。在系统的时钟作用下,单片机内各部件可以有条不紊地自动工作。

在数字系统中,系统功耗与频率成正比,所以实际应用中常希望系统能够具有满足节能要求的低频系统时钟,也能够具有快速响应事件请求的高频系统时钟。MSP430单片机的系统时钟设计满足了这些不同的要求:

高频率,用于对系统硬件需求和外部事件快速响应。

低频率,用于降低电流消耗。

稳定的频率,以满足定时应用,如实时时钟RTC。

低Q值振荡器,用于保证开始及停止操作最小时间延迟。

各种时钟的频率应由设计者根据所需模块、处理速度等的实际需要以及对功耗的要求来综合考虑。MSP430采用了一个低频晶体振荡器,并将其倍频至标称的工作频率范围,即

MSP430通过锁频环FLL以及增强锁频环FLL+等部件,将晶振频率倍频至系统频率。数字控制振荡器DCO和锁相环FLL技术的结合可以实现快速启动。在晶体振荡器失效时,DCO可自动用于系统时钟。MSP430所有器件都有时钟模块,都可以实现超低功耗应用。

MSP430X1XX系列单片机基础时钟模块结构如图5-2所示,其中MSP430X11X与MSP430X12X内部没有XT2高频振荡器。

图5-2MSP430F13X/14X基础时钟模块结构

MSP430X1XX基础时钟模块有以下3个时钟输入源。

LFXT1CKL为低频时钟源,由32768Hz晶体、标准晶体或陶瓷谐振器以及外接450kHz~8MHz时钟源产生。

XT2CLK为高频时钟源,由标准晶体、陶瓷谐振器或外接450kHz~8MHz时钟源产生。

DCOCLK为片内数字控制RC振荡器,经常用作系统和外设的时钟信号。

DCOCLK可提供3种时钟信号:

ACLK(辅助时钟)。ACLK是LFXT1CLK信号经1、2、4、8分频后得到的。ACLK可由软件选作各外围模块的时钟信号,一般用于低速外设。

MCLK(系统主时钟)。MCLK可由软件选择来自LFXT1CLK、XT2CLK、DOCCLK三者之一,然后经1、2、4、8分频得到。MCLK主要用于CPU和系统。

SMCLK(子系统时钟)。SMCLK可由软件选择来自LFXT1CLK、XT2CLK和DOCCLK其中之一,然后经1、2、4、8分频得到。SMCLK主要用于高速外围模块。

根据不同的应用要求和系统条件,MSP430X14X、MSP430F15X、MSP430F4XX等系列器件可以通过端口引脚在外部使用ACLK、SMCLK和MCLK时钟信号。

系统频率和系统的工作电压密切相关。某些应用中可能需要较高的工作电压,所以也需要系统提供相应较高的频率,系统频率和系统工作电压之间的关系如图5-3所示。

图5-3频率和工作电压的关系

2.低速晶体振荡器

MSP430系列的每种产品中都含有低速晶体振荡器——LFXT1。LFXT1振荡器默认工作模式是32768Hz低频模式,32768Hz晶振通过XIN和XOUT两个引脚连接,所有保证工作稳定的元件和移相电容都集成在芯片中,这样可降低系统成本和系统功耗。LFXT1也可以通过外接450kHz~8MHz的高速晶体振荡器或陶瓷谐振器工作在高频模式,这时两个引脚还需外接电容,电容大小应根据晶体或振荡器特性来选择。

LFXT1的逻辑控制如图5-4所示。发生有效的上电清除信号PUC后,LFXT1振荡器开始工作。一次有效PUC信号可以将SR寄存器(状态寄存器)中的OSCOFF位复位,即允许LFXT1工作。如果LFXT1CLK信号没有用作SMCLK或MCLK信号,也可以通过软件置位OSCOFF,以禁止LFXT1工作。

图5-4LFXT1振荡器逻辑控制图

3.高速晶体振荡器

高速振荡器即第二振荡器XT2,主要存在于X13X,X14X,X15X,X16X,X43X,X44X等器件中,它的工作特性与LFXT1振荡器工作在高频模式时类似,时钟信号XT2CLK由它产生。XT2的逻辑控制如图5-5所示,如果XT2CLK信号没有用作时钟MCLK和SMCLK,可以通过置位控制位XT2OFF(BCSCTL1)关闭XT2。

图5-5XT2的逻辑控制图

4.DCO振荡器

MSP430的两个外部振荡器产生的时钟信号都可以经1、2、4、8分频后用做系统主时钟MCLK。如果振荡器失效,DCO振荡器会自动被选作MCLK的时钟源,因此由振荡器失效引起的NMI中断请求可以得到响应,甚至在CPU关闭的情况下也能得到处理。MSP430可以让任意被允许的中断请求在低功耗模式下得到服务,甚至在LPM4模式下。MCLK在中断服务时自动有效。

DCO振荡器是一个可数字控制的RC振荡器,它的频率随供电电压、环境温度的变化而变化,具有一定的不稳定性。DCO频率可以通过DCO控制寄存器中的控制位来增强振荡频率的稳定性。

当DCO信号没有用作SMCLK和MCLK时钟信号时,可以用状态寄存器SR中的控制位SCG0关闭直流发生器,直流发生器消耗的电流定义了DCOCLK的基本频率。DCO的控制逻辑如图5-6所示。

图5-6DCO的控制逻辑

在信号复位(PUC)之后,由DCOCLK作MCLK的时钟信号,根据需要可将MCLK的时钟源另外设置为LFXT1或者XT2,设置顺序如下:

①复位OSCOFF;

②清除OFIFG;

③延时等待至少50μs;

④再次检查OFIFG,如果仍然置位,则重复①~④步骤,直到OFIFG=0为止。

程序如下:

;SelectLFXT1(HFmode)forMCLK

BIC#OSCOFF,SR;Turnonosc.

BIS.B#XTS,BCSCTL1;HFmode

L1BIC.B#OFIFG,&IFG1;ClearOFIFG

MOV#OFFH,R15;Delay

L2 DECR15

JNZL2

BIT.B#OFIFG,&IFG1 ;Re-testOFIFG

JNZL1 ;Repeattestifneeded

BIS.B#SELM1+SELM0,&BCSCTL2 ;SelectLFXT1CLK

5.基本时钟模块失效操作

基本时钟模块具有振荡器失效检测功能。振荡器失效检测器是能够监控LFXT1CLK(在HF模式)和XT2CLK的一个模拟电路。当任意一个时钟信号在大约50μs内不出现时,可以检测出振荡器失效。当检测到振荡器失效并且在MCLK来源于LFXT1(在HF模式)或XT2时,DCO振荡器会自动被选作MCLK的时钟源,因此在振荡器失效的情况下,代码可以继续执行。

6.基本时钟模块寄存器

这里以MSP430F1XX系列为例,介绍时钟模块的3个控制寄存器,如表5-1所示。

表5-1MSP430F1XX时钟模块寄存器

(1) DCOCTL:DCO控制寄存器,用户可以通过灵活设置DCOCTL得到所需频率。各位定义如下:

DCO.0~DCO.2:定义8种频率之一,可分段调节DCOCLK频率,相邻两种频率相差10%。而频率由注入直流发生器的电流定义。

MOD.0~MOD.4:定义在32个DCO周期中插入的fDCO+1周期个数,而在余下的DCO周期中为fDCO周期,控制切换DCO和DCO+1选择的两种频率。如果DCO常数为7,则已选择最高频率,此时不能用MOD.0~MOD.4进行调整。

(2) BCSCTL1:基本时钟系统控制寄存器1。其各位定义如下:

XT2OFF:控制XT2振荡器的开启与关闭。

0XT2振荡器开启;

1XT2振荡器关闭(默认XT2关闭)。XTS:控制LFXT1工作模式,选择需结合实际晶体振荡器连接情况。

0LFXT1工作在低频模式(默认低频模式);

1LFXT1工作在高频模式(必须连接有相应高频时钟源)。

DIVA.0DIVA.1:控制ACLK分频。

XT5V:此位需为0。Rsel.0,Rsel.1,Rsel.2:

三位控制某个内部电阻以决定标称频率。

图5-7DCO频率的调整

(3) BCSCTL2:基本时钟系统控制寄存器2。各位定义如下:

SELM.0,SELM.1:选择MCLK时钟源。

DIVM.0,DIVM.1:选择MCLK分频。

SELS:选择SMCLK时钟源。

0时钟源为DCOCLK(默认时钟源);

1片内有XT2的,时钟源为XT2CLK,片内无XT2的,时钟源为LFXT1CLK。

DIVS.0,DIVS.1:选择SMCLK分频。

DCOR:选择DCO电阻。

0内部电阻;

1外部电阻。

7.MSP430F4XX系列时钟模块

MSP430F4XX系列的时钟模块中使用了增强型锁频环技术FLL+,时钟模块同样有DCO、LFXT1振荡器和LFXT2振荡器(41/42系列没有LFXT2振荡器),硬件可自动调整DCO频率,支持时钟配置的超低功耗应用,可以在低频振荡器的驱动下得到较高的稳定频率。

如图5-8所示,MSP430F4XX的时钟模块的3个时钟源(LFXT1CLK、

XT2CLK、DCOCLK)可提供4种时钟信号:

ACLK(辅助时钟):ACLK来自LFXT1CLK信号,ACLK可由软件选作各外围模块的时钟信号,一般用于低速外设。

ACLK/n:ACLK经1、2、4、8分频后由引脚P1.5输出,仅供外部电路使用。这可保证MSP430F4XX和MSP430X1XX系列的时钟系统相兼容。

MCLK(系统主时钟):MCLK可由软件选择来自LFXT1CLK、XT2CLK(器件具有XT2CLK)和DCOCLK三者之一,然后经1、2、4、8分频得到。MCLK主要用于CPU和

系统。

图5-8MSP430F4XX时钟模块

SMCLK(子系统时钟):可由软件选择来自XT2CLK(器件具有XT2CLK)和DCOCLK,SMCLK主要用于高速外围模块。

MSP430系列FLL+时钟系统支持以下情况:

快速响应硬件要求或者外部事情请求,设为高频率(DCO/FLL+XT1)。

降低电流消耗,设为低频率(LF)。

定时应用时采用稳定的外部时钟源。

允许最短延迟时间启动

—— 停止操作(DCO)。

1) FLL+运行模式

当RC振荡器受温度和压力的影响而使频率发生偏移时,FLL+通过比较ACLK和DCOCLK/(N+1)的大小,由频率积分器产生一个10位的频率偏差,积分器根据这个偏差控制调整DCOCLK的频率,形成一个调整反馈环。DCO频率积分器的输出可以在SCFI0和SCFI1中读出。计数器在每个ACLK周期进行+1或-1调整。频率积分器的10位是由硬件自动调节的,其中5位由DCO的频率周期选择,5位由调制器控制。在每32个DCOCLK时钟周期中,周期累加的变化可以通过调制器混合相邻两个DCOCLK周期来克服,如图5-9所示。如果寄存器SCFQCTL1中的控制位M置位,调制器被禁止,临近的DCO周期不被混合。当状态寄存器(SR)的控制位SCG0=1时,FLL+停止操作。

图5-9调制器操作

锁相环技术使DCOCLK的频率非常稳定,FLL+和DCO结合具有快速启动和数控信号的特点:

快速启动时,MSP430F4XX的DCO振荡器的响应时间小于6μs,可支持长睡眠周期和突发事件的相应。

数控信号。DCO振荡器启动时有相同的设置,这就使正常运行时不需要很长的锁定周期。

2)

FLL+失效控制

MSP430的硬件电路能够检测振荡器是否失效。一般当振荡器丢失在约100个振荡周期时设置振荡器失效标志OscFault。OscFault标志令振荡器失效中断标志OFIFG置位,FLL+振荡器失效逻辑如图5-10所示。

图5-10FLL+振荡器逻辑

FLL+振荡器有以下4种失效情况:

XT2OF:XT2振荡器失效。

XT1OF:LFXT1振荡器在高频模式(HF)下失效。

LFOF:LFXT1振荡器在低频模式(LF)下失效。

DCOF:DCO振荡器失效。

FLL+振荡器失效会影响特殊功能振荡器的OFIFG和OFIE两个控制位。只要振荡器失效,振荡失效信号就会使OFIFG标志置位,如果OFIE也置位,振荡失效中断将请求一个非屏蔽中断,非屏蔽中断被响应后,OFIE自动复位。OFIE的初始状态是复位的,即使有振荡失效情况发生也不会有振荡失效请求中断。其中,振荡器失效中断允许位(OFIE)位于中断允许寄存器IE1的1位;振荡器失效中标志位(OFIFG)位于中断寄存器IFG1的1位。

振荡器只可由单独的允许位OFIE屏蔽,即使通用中断允许GIE复位也不能禁止。用户在使用过程中,通常在PUC后必须编制一段程序来识别或设置振荡器状态,以防止因振荡故障信号有效而将OFIFG永久置位。由于PUC将OFIE复位,因此,这时不会发生中断请求。当从振荡器故障来的中断请求被接受时,中断允许位OFIE自动复位以阻止继续到来的中断请求,直到软件做出适当的响应使振荡器故障信号失效,在到达这一状态后,OFIE可以按模块中断一般规则重新置位。振荡器故障事件不受通用中断允许位的影响。

中断标志OFIFG也用于在中断服务程序的开始识别中断源。OFIFG的置位与NMI事件无关,它的作用是支配性的。

当中断请求被接受得到服务时,中断标志OFIFG仍保持置位。这是强制性的,因为它是与NMI中断一起构成多源中断,并要指示软件处理振荡器故障事件。首先服务OFIFG的条件使得这一事件的优先级比NMI事件更高。

3) MSP430F4XX时钟模块寄存器

MSP430F4XX时钟模块寄存器如表5-2所示,这些控制寄存器都是字节形式的,必须以字节指令来访问。

表5-2MSP430F4XX时钟模块寄存器

(1) SCFQCTL:系统时钟控制寄存器。各位定义如下:

M:调制器使能控制位。

0调制器使能;

1调制器禁止。

N:DCOCLK倍数选择位。若DCO+=0,则FDCOCLK=(N+1)×fcrystal;若DCO+=1,则FDCOCLK=D×(N+1)×fcrystal。在PUC信号后,如果ACLK = 32768Hz,SCFQCTL的值默认为31,DCO+=0,SMCLK和MCLK为:32 × fcrystal=1.048576MHz。

(2) SCFI0:系统频率积分寄存器0。各位定义如下:

MODx(LSBx):是10位DCOCLK频率调整参数的最后两位,含义见SCFI1寄存器部分。这10位DCOCLK频率调整参数由FLL+硬件自动完成。

FLLDx:FFL+环分频系数D,DCOCLK在FLL+反馈环中被分频。

00不分频;

012分频;

104分频;

118分频。

表5-3频率的可调整范围

DCOCLK的频率由软件来确定,如果状态寄存器中的控制位SCG1复位,则DCOCLK有效,如果SCG1置位,则DCOCLK停止。控制位FN_8、FN_4、FN_3、FN_2可以调整DCOCLK的范围。如果根据目标频率需要对FN_X位进行改变,可增加D或者设置DCO+,以下几个步骤可以确保频率不会超出系统所允许的最高频率。

保证FLL+锁定位(SCG0在状态寄存器中)并把它置位,关闭反馈环控制。

把新数值装入调整寄存器SCFQCTL(调整位M,乘数N)。

将DCO控制位置位,调整器高位置位:SCFI1=0FH,使得芯片以尽可能低的频率工作。

选择DCO+控制位为1或者0。

将控制寄存器SCFI0装入新的数值。

还原或设置FLL+控制位。

(3) SCFI1:系统频率积分寄存器1。各位定义如下:

DCOx:DCOCLK频率周期控制,这5位控制DCOCLK频率周期的29种组合(最高4种相同),每一个组合比前一个高10%。

MODx:调制器控制位的高3位,低2位在寄存器SCFI0中,这3位控制32种可能的周期混合方式。

(4) FLL_CTL0:FLL+控制寄存器0。各位定义如下:

DCO+:DCO用作MCLK或SMCLK前是否需要预分频选择位。

0不分频;

1分频。XTS_FLL:LFXT1模式选择位。

0低频模式;

1高频模式。

OscCap:振荡器电容选择位。

001pF;

016pF;

108pF;

1110pF。

XT2OF:XT2振荡器失效标志位(MSP430F41/42中没有XT2)。

0没有失效;

1失效。

XT1OF:LFXT1振荡器在高频模式(HF)下失效标志位。

0没有失效;

1失效。

LFOF:LFXT1振荡器在低频模式(LF)下失效标志位。

0没有失效;

1失效。

DCOF:DCO振荡器失效标志位。

0没有失效;

1失效。

(5) FLL_CTL1:FLL+控制寄存器1。各位定义如下:

SMCLKOFF:时钟信号SMCLK关闭控制位。

0打开SMCLK;

1

关闭SMCLK。

XT2OFF:XT2振荡器关闭控制位。如果XT2没有被用做MCLK(SELM≠2或CPUOFF=1)或SMCLK(SELS=0或者SMCLKOFF=1),则关闭XT2。

0打开XT2;

1关闭XT2。

SELMx:MCLK时钟源选择位。

00DCOCLK;

01DCOCLK;

10XT2CLK;

11LFXT1CLK。

SELS:SMCLK时钟源选择位。

0DCOCLK;

1XT2CLK。

FLL_DIV:LFXT1频率的分频因子选择位。

00不分频;

012分频;

104分频;

118分频。

8.基础时钟模块应用举例

例5.1

设MCLK=XT2,SMCLK=DCOCLK,将MCLK由P5.4口输出。

程序如下:

#include"msp430x14x.h"

voidmain(void)

{

unsignedinti;

WDTCTL=WDTPW+WDTHOLD;//停止WDT

P5DIR|=0x10;

//P5.4输出

P5SEL=0x10;//P5.4用作MCLK输出

BCSCTL1&=~XT2OFF;//XT2有效

do

{

IFG1&=~OFIFG;

//清除振荡器失效标志

For(i=0xFF;i>0;i=--); //稳定时间

}

while(IFG1&OFIFG)!=0);//如果振荡器失效标志存在

BCSCTL2|=SELM1;

//MCLK=XT2

for(;;)

}

例5.2

设ACLK=LFXT1= 32768Hz,MCLK=(n+1)×2×ACLK,将MCLK和ACLK分别通过P1.1和P1.5输出。

程序如下:

//测得p1.5ACLK=32.768K 辅助时钟

//测得P1.1MCLK=7.995M 系统主时钟

#include"msp430x44x.h"

voidmain(void)

{

WDTCTL=WDTPW+WDTHOLD; //停止看门狗

SCFI0|=FN_4;

SCFQCTL=121;//(121+1)×32768×2=7.99MHz

FLL_CTL0=DCOPLUS+XCAP18PF;

P1DIR=0x22;//P1.1和P1.5输出

P1SEL=0x22;//P1.1和P1.5输出

MCLK和

ACLK

while(1);

}

例5.3

设ACLK=LFXT1=32768Hz,MCLK选SCFQCTL默认值31,SMCLK选择XT2CLK。

//测得p1.5ACLK=32.768k 辅助时钟

//测得P1.4SMCLK=4M 子系统时钟

//测得P1.1MCLK=1.048M 系统主时钟

#include"msp430x44x.h"

voidmain(void)

{

unsignedinti;

WDTCTL=WDTPW+WDTHOLD;//停止看门狗

5.1.2低功耗结构

1.低功耗控制

当系统时钟发生器基本功能建立以后,CPU中状态寄存器SR中的SCG1、SCG2、OSCOFF和CPUOFF位就是重要的低功耗控制位。各控制位的作用如下:

SCG1:当SCG1复位时,使能SMCLK;SCG1置位则禁止SMCLK。

SCG0:当SCG0复位时,直流发生器被激活,只有SCG0被置位且DCOCLK信号没有用作MCLK或SMCLK,直流发生器才能被禁止。当电流关闭(SCG0=0)时,DCO的启动有些延迟,延迟时间在μs范围内(具体看器件参数)。

OSCOFF:当OSCOFF复位时,LFXT1晶体振荡器被激活,只有当OSCOFF被置位且不用于MCLK或SMCLK时,LFXT1晶体振荡器才能被禁止。当使用振荡器关闭选项OSCOFF时,需要考虑晶体振荡器的启动设置时间。

CPUOFF:当OSCOFF复位时,用于CPU的时钟信号MCLK被激活;当CPUOFF置位时,MCLK停止。

2.系统工作模式

MSP430系列单片机有6种不同的工作模式,包括1种活动模式和5种低功耗模式。MSP430工作模式是通过控制位SCG0、SCG1、OSCOFF、CPUOFF来设置实现的,如表5-4所示。在各种工作模式下,时钟系统所产生的3种时钟活动状态也是各不相同的。

表5-4各种工作模式、各控制位及时钟的活动状态

图5-11MSP430工作模式状态图

图5-12各种工作模式下MSP430的耗电情况

3.超低功耗的运行与管理

MSP430工作模式通过模块的智能化运行管理和CPU的状态组合来支持超低功耗各种要求。MSP430的低功耗特性既可以保持工作状态,又可以根据要求工作。系统的这些低功耗特性是靠系统对中断的响应来实现的。

MSP430系列单片机各个模块运行完全是独立的,定时器、I/O、A/D转换、看门狗、液晶显示器等都可以在主CPU休眠的状态下独立运行。当需要主CPU工作时,任何一个模块都可以通过中断唤醒CPU,从而使系统以最低功耗运行。这一点是MSP430系列单片机最突出的优点,也是与其他单片机的最大区别。

在通常情况下,根据需要可使用软件将CPU设定到某一种低功耗工作模式下,在需要时再使用中断将CPU从休眠状态中唤醒,完成工作之后又可以进入相应的休眠状态,CPU只工作于突发状态。

根据运行需要,MSP430可以通过中断事件从各种低功耗模式转化到活动模式,又可以从活动模式进入相应的低功耗方式(LPM0,LPM3或LPM4)。基于一般的低功耗原则,对于MSP430系列单片机在设计中还应该注意以下几点。

最大化LPM3的时间,用32768Hz晶振作为ACLK时钟,DCO用于CPU激活后的突发短暂运行。

用接口模块代替软件驱动功能。

避免频繁的子程序和函数调用。

尽可能直接用电池供电。

尽量用快速查表代替冗长的软件计算。在软件计算中使用单周期的CPU寄存器。

将不用的FETI输入端接到VSS。

JTAG端口TMS、TCK和TDI不要连接到VSS。

CMOS输入端不能有浮空节点,将所有的输入端接适当电平。

不论对于内核还是对于外围模块,选择尽可能低的运行频率,如果不影响功能应设计自动关机。

用中断控制程序运行。

系统响应中断的过程如下。

(1)硬件自动中断服务。

PC入栈。

SR入栈。

中断向量赋给PC。

GIE,CPUOFF,OSCOFF和SCG1清除。

IFG标志位清除(单源中断标志)。

(2)执行中断处理子程序。

(3)执行RETI指令(中断返回)。

SR出栈(恢复原来的标志)。

PC出栈。

系统响应中断时的堆栈情况如图5-13。

通过对系统响应的中断过程分析,可以更加深刻地认识MSP430系列单片机的低功耗特性。

中断将CPU从休眠状态中唤醒。在中断处理过程中可以自动对控制位GIE、CPUOFF、OSCOFF和SCG1清除,从而使CPU进入活动模式。

系统低功耗模式的保持。中断响应时可以将SR入栈保存,即保存了系统某种低功耗状态;中断响应结束时,可以通过RETI指令将SR出栈,这样就恢复了系统进入中断前的低功耗状态;可以让系统继续保持这种低功耗状态,直到下一次中断事件的出现,系统进入活动模式开始处理中断。

图5-13系统响应中断时的堆栈

系统根据需求可以在各种低功耗模式之间切换。SR寄存器内容能够决定系统的工作模式。由系统响应中断过程可见,SR在中断初期被入栈保存,在中断结束时恢复出栈,继续控制系统的工作模式,所以可以在中断处理子程序过程中,根据中断结束之后要进入的工作模式,对SR内容进行相应的设置,这样当前事件处理完毕,执行RETI指令时,系统就能按照出栈的SR内容进入另一种工作模式。

例如:系统初始化完毕之后工作于低功耗模式0,中断事件触发到活动模式,中断处理结束后进入到低功耗模式3,只有程序代码中单位时间到之后,才能触发一个极短暂的运行。

5.2MSP430系列单片机的各种端口

5.2.1MSP430端口概述目前MSP430所有系列单片机的总线都不对外开放,所以端口就成为用户可以利用的重要资源。MSP430的端口可以直接用于输入/输出,以实现多功能复用,还可以为MSP430系统扩展设备提供必要的逻辑控制信号。常见的键盘接口电路可以直接用端口进行模拟,用查询或中断方式控制。MSP430端口主要具有以下特点。

1.端口类型丰富

目前产品中有端口P1、P2、P3、P4、P5、P6、P7、P8、P9、P10S和COM。产品因型号不同可包含上述全部或部分端口,如表5-5所示。其中MSP430X3XX系列中有P0口和三态输出端口TP0,P0口与其它端口稍有不同,后面会具体给出说明。

表5-5MSP430的端口

2.端口功能

MSP430各端口功能如表5-6所示。

表5-6MSP430端口功能

3.端口寄存器

MSP430中不同的端口含有的控制寄存器不同,其中P1和P2具有7个寄存器,P3、P4、P5、P6具有4个寄存器。每个I/O位都可以通过编程寄存器进行独立设置,允许任意组合输入、输出和中断。每个端口都可以按字节输入、输出,也可以按位进行操作。其中,P0、P1和P2还可作外部中断的输入口使用。

4.端口数据输出特性

微处理器输入端口的漏电流对系统的耗电影响很大。MSP430单片机输入端口的漏电流最大为50nA,远低于其它系列单片机(一般为1~10μA)。不管是灌电流还是拉电流,每个端口的输出晶体管都能限制输出电流(最大约6mA),保证系统安全。以P1.0为例,端口低电平和高电平输出特性如图5-14和图5-15所示。

图5-14低电平输出特性

图5-15高电平输出特性

5.2.2端口P0、P1和P2

端口P0、P1和P2具有输入/输出功能和中断功能,每个信号都可作为一个中断源和外部模块功能(除P0外)。这些功能可以通过它们各自的控制寄存器的设置来实现。目前,只有MSP430X3XX中有P0口。

P0口有6个寄存器用于引脚控制,P1和P2口有7个寄存器用于引脚控制。由于模块寄存器位于低端地址,须用字节指令以绝对寻址模式访问。下面Px代表P0、P1或P2。

(1)

PxDIR:输入/输出方向寄存器。

该寄存器中相互独立的8位分别定义了8个引脚的输入/输出方向。8位在PUC后都被复位。当使用输入/输出功能时,要先定义端口的方向,以使引脚的输入/输出满足设计者的要求。当作为输入时,只能读,作为输出时则可读可写。

0I/O引脚被切换成输入模式;

1I/O引脚被切换成输出模式。

例如:

BIS.B#020H,&P0DIR

;P0.5输出

BIS.B#001H,&P1DIR

;P1.0输出

MOV.B#0FCH,&P2DIR

;P2低2位输入

(2)PxIN:输入寄存器。

输入寄存器是扫描I/O引脚信号的只读寄存器,通过对端口输入寄存器进行读操作,可以知道I/O端口的输入情况,用户不能对它写入,只能读出。读出时,必须设定该引脚的方向为输入。如果对该寄存器写入,会在写操作有效期间增加电流损耗。

例如:

TST.B#01H,&P1IN ;测试P1的最低位的值

(3)PxOUT:输出寄存器。

该寄存器为I/O端口的输出缓冲寄存器。输出缓存可用所有包含目的操作数的指令修改,以达到改变I/O端口状态的目的。在读取时,输出缓存的内容与引脚定义方向无关。改变方向寄存器的内容,输出缓存的内容不受影响。

例如:

BIS.B#002h,&P0OUT ;P0.1输出1

BIC.B#002h,&P1OUT ;P1.1输出0

XOR.B#002h,&P2OUT ;P2.1输出求反

(4)PxIFG:中断标志寄存器。

该寄存器有8个标志位,标志相应引脚是否有待处理中断的信息,即相应引脚是否有中断请求。如果Px口的某个引脚允许中断,则当该引脚电平发生满足中断触发沿电平要求时,PxIFG的相应位就会置位,说明该引脚上有中断请求产生。寄存器各位定义如下:

PxIFG.x:中断标志位。

0没有中断请求;

1有中断请求。

其中,P0口的低2位标志位在SFR的IFG1(IFG1.2和IFG1.3)中。要想得到有效的中断请求,外部中断事件的时间不能低于1.5倍的MCLK时间,以保证中断请求被接受,且使相应的中断标志位置位。其中,P0口的中断标志位P0IFG.0和

P0IFG.1是单源中断,在服务时会自动复位,而P0IFG.2~P0IFG.7共用一个中断向量,P1~P6口的中断标志PxIFG.0~PxIFG.7共用了一个中断向量,均属于多源中断。当任一事件引起的中断进行服务时,PxIFG.0~PxIFG.7不会自动复位。必须用软件来判定是对哪一个事件服务,并将相应的标志复位。

(5)PxIES:中断触发沿选择寄存器。

该寄存器只有跳变才能引起中断请求,而静态电平则不能。若要允许Px口的某个引脚中断,还需要定义该引脚的中断触发方式。该寄存器的8位分别定义了Px的8个引脚的中断触发沿。

0对应引脚由低到高的电平跳变(上升沿)使相应标志位置位;

1对应引脚由高到低的电平跳变(下降沿)使相应标志位置位。

例如:

MOV.B#0FH,&P2IES;P2低4位下降沿触发中断

(6)PxIE:中断使能寄存器。

该寄存器Px口的各引脚都有一位用以控制该引脚是否允许中断。其中P0口的低2位中断使能控制位P0IE.0和P0IE.1在SFRIE1(IE1.2和IE1.3)中。该寄存器的各位定义如下:

PxIE.x:中断使能控制位。

0禁止该位中断;

1允许该位中断。例如:

MOV.B#0FH,&P2IE;P2低4位允许中断

(7)

PxSEL:功能选择寄存器。

P1和P2两个端口还具有其它片内外设备功能(P0口无此寄存器),为减少引脚,这些功能与芯片外的联系通过复用P1和P2引脚的方式来实现。P1SEL和P2SEL用来选择引脚的I/O端口功能与外围设备模块功能。

0选择引脚为I/O端口;

1选择引脚为外围模块功能。

例如:

BIS.B#020H,&P1SEL;p1.5定义为外围模块功能

BIS.B#002H,&P2SEL;p2.1定义为外围模块功能

5.2.3端口P3~P10

MSP430X13/14/15/16X及MSP430X4XX等系列中含有P3、P4、P5和P6端口,MSP430X22X中部分器件有P7端口,其中部分MSP430X4XX系列中具有P7、P8、P9、P10口,P7—P8与P9—P10可以合起来作16位寻址,P7—P8定义为PA口,P9—P10定义为PB口。如P7—P8可以通过向P7SEL和P8SEL写入字节来设置,也可以通过PASEL写入一个字来设置。这几个端口没有中断能力,其余功能同P0、P1和P2一样,能实现输入/输出功能和外围模块功能。每个端口有4个寄存器:端口方向选择寄存器(PxDIR)、输入寄存器(PxIN)、输出寄存器(PxOUT)和功能选择寄存器(PxSEL)。用户可以通过这4个寄存器实现对它们的操作,具体定义和用法同P1和P2口。

5.2.4端口TP0

在MSP430X3XX系列器件中,有三态输出端口TP0。它是一个6位的端口,由以下两个寄存器控制,分别使用低6位。

(1)

TPD:端口数据寄存器。

该寄存器中TPD.0~TPD.5的内容为引脚TP0.0~TP0.5的输出值。

(2)

TPE:端口允许寄存器。

该寄存器中TPE.0~TPE.5分别控制TP0.0~TP0.5的三态特性,当TPE的相应位置位时,TPD的内容可以由引脚TP0输出。当TPE复位时,三态输出为高阻状态。

5.2.5端口

COM和S

端口COM和S出现在MSP430FX4XX等有液晶驱动模块的器件中,COM端口为液晶片的公共端,S端口为液晶片的段码端。液晶片输出端也可编程配置为数字输出端口。详细使用方法参见本书第5章第10节液晶驱动模块部分。

5.2.6端口应用举例

例5.4使P1.0输出高电平。

程序代码如下:

#include"msp430x44x.h"

voidmain(void)

{

while(1)

{

P1DIR|=0X01;

P1OUT|=0X01;//clearalltheledsdisplay

}

}

5.3定

MSP430系列定时器资源丰富,有看门狗定时器(WDT)、基本定时器(BasicTimer1)、8位定时器/计数器(8bitTimer/Counter)、定时器A(Timer_A)和定时器B(Timer_B)等。定时器可用来实现定时控制、延迟、频率测量、脉宽测量和信号产生、信号检测等,定时器A(Timer_A)还可以作为串行接口的可编程波特率发生器,在多任务的系统中也可用来作为中断信号实现程序的切换。MSP430系列各定时器模块功能如表5-7所示,不同的器件所含有的定时器的个数和种类不同,在使用时应加以注意。

表5-7各种定时器功能

5.3.1看门狗定时器

看门狗定时器(WDT)是MSP430系列单片机中用于系统监测和内部定时使用的一种模块,当程序发生故障时能使受控系统重新启动,也可作为一般内部定时器使用。看门狗的主要特点如下。

WDT是一个16位计数器。

需要口令才能对其操作。

有看门狗和定时器两种模式。

有8种可选的定时时间。

1.WDT结构

看门狗定时器实质上是一个定时器,其主要功能是当程序发生故障时能使受控系统重新启动。如果WDT超过WDT所定时的时间,则发生系统复位。当系统不需要看门狗功能时,也可将它当普通的定时器使用,当到达WDT所定时的时间时能产生中断。此外,WDT还可以完全停止活动以支持超低功耗应用。看门狗定时器原理如图5-16所示。

图5-16看门狗定时器原理

在工业现场,由于供电电源,空间电磁干扰或其它原因往往会引起强烈的噪声干扰。这些干扰作用于数字器件,极易使其产生误动作,引起微控制器发生“程序跑飞”事故。若不进行有效处理,程序就不能回到正常工作状态,从而失去应有的控制功能。MSP430的看门狗定时器正是为了解决这类问题而设计的,尤其是在具有循环结构的程序任务中更为有效。当WDT超过WDT所定时的时间时,能发生复位操作。如果通过编制程序使WDT定时时间稍大于程序执行一遍所用的时间,并且程序执行过程中加入对看门狗定时器清零的指令,使计数器重新计数,则当程序正常运行时,就会在WDT定时时间到达之前执行WDT清零指令,不会产生WDT溢出。如果由于干扰使程序跑飞,则不会在WDT定时时间到达之前执行WDT清零指令,WDT就会溢出,从而产生系统复位,CPU需要重新运行用户程序,这样程序就可以又恢复正常运行状态。

2.WDT寄存器

WDT的寄存器是由控制寄存器WDTCTL和计数单元WDTCNT组成的,它的中断允许和中断标志位在SFR中。

1)计数单元WDTCNT

WDTCNT是一个16位增计数器,由MSP430所选定的时钟电路产生的固定周期脉冲信号对计数器进行加法计数。如果计数器事先被预置的初始状态不同,那么从开始计数到计数溢出为止所用的时间就不同。WDTCNT不能直接通过软件存取,必须通过看门狗定时器的控制寄存器WDTCTL(地址为0120H)进行访问。

2)控制寄存器WDTCTL

WDTCTL由两部分组成,其中高8位被用作口令,低8位是对WDT操作的控制命令。要写入操作WDT的控制命令,必须先正确写入高字节看门狗口令,口令为5AH,如果口令写错将导致系统复位。在读WDTCTL时不需要口令,可直接读取地址120H中的内容,读出数据低字节为WDTCTL的值,高字节始终为69H。WDTCTL除了有看门狗定时器的控制位之外,还有两个位用于设置NMI引脚功能。下面是WDTCTL寄存器各位的定义。

IS0,IS1:看门狗定时器的定时输出选择位。其中T是WDTCNT的输入时钟源周期。IS1IS0输出周期

00T×215

01T×213

10T×29

11T×26SSEL:WDTCNT的时钟源选择位。

0SMCLK

1ACLK

WDT定时时间是由IS0、IS1及SSEL确定的,因此通过软件对计数器设置不同的初始值,就可以实现不同时间的定时。WDT最多只能定时8种和时钟源相关的时间,表5-8列出了晶振为32768Hz,SMCLK=1MHz条件下,WDT可选的定时时间。

表5-8WDT的定时时间

NMIES:中断的边沿触发方式选择位。

0上升沿触发NMI中断;

1下降沿触发NMI中断。

HOLD:看门狗定时器工作停止位,降低功耗。

0WDT功能激活;

1时钟禁止输入,计数停止。

3.WDT的工作模式

1)看门狗模式

当WDTCTL的TMSEL=0时,WDT工作在看门狗模式。在该模式下,一旦WDT到达定时时间或写入错误的口令都会触发PUC信号,WDTCNT和WDTCTL两寄存器内容将被全部清除,WDT功能被激活,并自动进入看门狗模式。用户在通过软件设置看门狗模式时,一般都需要进行如下操作。

进行WDT的初始化,设置合适的时间(通过SSEL、IS0、IS1位来选定)。

周期性地对WDTCNT清零,以防止WDT溢出,保证WDT的正确使用。

如果系统不用看门狗功能,应在程序开始处禁止看门狗功能,程序如下。

MOV#WDTPW+WDTCNTCL,&WDTCTL;

2)定时器模式

当TMSEL=1时,选择定时器模式。在设置好中断条件后,WDT将按设定的时间周期产生中断请求,在响应中断后,中断标志位将自动清除。

在定时模式下,要注意定时时间改变应伴随计数器清除,并在一条指令中完成。如果先后分别进行清除和定时时间选择,或改变定时时间而不同时清除WDTCNT,将导致不可预料的系统立即复位或中断。另外,在正常工作时,改变时钟源也可能导致WDTCNT额外的计数时钟,如:

MOV#WDTPW+WDTTMSEL+WDTCNTCL+WDTSSEL,&WDTCTL ;定时1000ms

MOV#WDTPW+WDTTMSEL+WDTCNTCL+WDTIS0,&WDTCTL ;定时8.19ms

3)低功耗模式

当系统不需要WDT工作时,可以设置HOLD=1来关闭WDT,以减少功耗。

4)看门狗定时器的中断控制功能

在看门狗模式下中断是不可屏蔽的,由受控程序非正常运行引发。定时器模式下中断是可屏蔽的,由选定时间到达而引发。前者的优先级高于后者,两者的中断向量地址不同,使用时请参见相关芯片数据手册。看门狗定时器用到SFR地址的两位。

中断标志WDTIFG位于IFG1.0,初始状态为复位。

中断标志WDTIE位于IE1.0,初始状态为复位。

与中断功能相关的WDTCTL的控制位NMI和NMIES,NMIIE位于IE1.4,MNIFG位于IFG1.4。

4.看门狗定时器应用举例

例5.6

使用看门狗的定时功能定时产生一个方波,由P5.1输出。

程序如下:

#include<msp430x44x.h>

voidmain(void)

{

WDTCTL=WDT_ADLY_250;//设置看门狗定时时间为250ms

IE1|=WDTIE;//WDT使能

P5DIR|=0x02;//设置P5.1为输出

_EINT();//中断允许

for(;;)

{

_BIS_SR(LPM3_bits); //进入LPM3

_NOP(); //验证,可用C-SPY观察

}

}

//看门狗中断服务子程序

#pragmavector=WDT_VECTOR

__interruptvoidwatchdog_timer(void)

{

P5OUT^=0x02; //P5.1输出取反

}5.3.2基本定时器

基本定时器(BasicTimer1)是MSP430X3XX和MSP430X4XX系列器件中的模块,BasicTimer1经常应用在低功耗系统中,支持软件和各种外围模块工作在低频率、低功耗条件下。BasicTimer1非常适合于周期性地产生中断,更新LCD或启动一个新的测量周期。

1.BasicTimer1的结构

MSP430X44X系列BasicTimer1的结构如图5-17所示,BasicTimer1通过对SMCLK或ACLK进行分频,向其它外围模块提供低频控制信号。

图5-17BasicTimer1的结构图

2.BasicTimer1的寄存器

通过控制寄存器BTCTL的设置可以对计数单元BTCNT1和BTCNT2进行软件控制。当芯片上电、复位(/NMI引脚)、看门狗溢出或看门狗密钥非法出现时,该寄存器各位保持原状。用户程序通常在BasicTimer1初始化期间来设定操作条件。

1) BTCTL控制寄存器

BTCTL控制寄存器控制BasicTimer1的运行,由各位的值来选择频率源、中断频率及LCD控制电路的帧频率。BTCTL各位定义如下:

SSEL,DIV:BTCNT2的输入频率CLK2选择位,BasicTimer1总是按输入的时钟作增计数。SSEL用来选择辅助时钟ACLK或系统主时钟MCLK,DIV决定是否对选定的时钟信号分频。MSP430F4xx的BTCNT2的输入频率如表5-9所示。

表5-9BTCNT2的输入频率

HOLD:计数器停止控制位。

0BTCNT1和BTCNT2运行中;

1BTCNT2停止工作,如果DIV也置位,BTCNT1停止工作。

BasicTimer1的寄存器可以利用HOLD位禁止模块的所有功能,并把功耗降低到最低程度,即只有漏电流。当计数器被允许或禁止时不会发生额外计数,系统对控制寄存器BTCTL的访问会影响计数,它可以用通常的方式进行读写操作。

FRFQ1,FRFQ0:fLCD频率选择位,可选择4个BTCNT1的输出之一作为fLCD信号,该位控制LCD更新频率如表5-10所示。与片上外设LCD驱动模块一起工作的设备使用fLCD信号产生COM公共端和SEG行驱动的时序信号。表5-10fLCD信号频率

表5-11BTCNT2的定时中断频率

2)计数单元BTCNT1和BTCNT2

BasicTimer1除了定时控制外,还有BTCNT1和BTCNT2两个重要计数单元。这两个单元都可用字节方式进行读写,相关特性如表5-12所示。

表5-12BTCNT1和BTCNT2

BTCNT1对ACLK分频。LCD驱动的帧频率从计数器高4位输出中选择。最高位输出可以作为BTCNT2的时钟输入。

BTCNT2对可选输入时钟ACLK、SMCLK或ACLK/256分频。中断周期可以BTCTL中的IP0~IP2位中选择8个输出之一。

BasicTimer1可以工作在16位定时器/计数器模式,此时CLK2来源于BTCNT1最高位输出。所以当作16位计数器时,只能选择ACLK作为BTCNT1和BTCNT2的时钟源。

3.BasicTimer1的中断

BasicTimer1中断允许位BTIE在IE2中(IE2.7)。中断标志位BTIFG在IFG2(IFG2.7)中,该标志位响应中断后自动复位。

中断标志和中断允许遵循一般的模块中断原则。除了受各自的中断允许控制外,中断请求还受控于通用中断标志GIE。PUC使中断允许标志BTIE复位。当BasicTimer有中断请求时,中断标志BTIFG置位;当中断请求被接受时,中断标志BTIFG复位。该中断可用于系统的控制,它是单源中断。

4.基本定时器应用举例

例5.7

使用基本定时器的定时功能,产生一个频率为4Hz的方波信号,由P5.1输出,其中ACLK=LFXT1=32768Hz,MCLK=1.048576MHz。

程序如下:

#include<msp430x44x.h>

voidmain(void)

{

WDTCTL=WDTPW+WDTHOLD;//停止看门狗

IE2|=BTIE;

//基本定时器开中断

5.3.316位定时器A

TI推出的所有MSP430系列FLASH型单片机都含有定时器A(Timer_A)。Timer_A是由一个16位定时器和多路捕获/比较通道组成的,各通道都可单独控制,为开发人员提供较多灵活的选择余地。MSP430的型号不同,Timer_A模块中的捕获/比较器数量也不同,MSP430系列单片机的Timer_A有以下特性:

具有16位计数器,4种工作模式。

具有多种可选的计数器时钟源。

具有3个或者5个可配置的捕获/比较寄存器。

支持多时序控制、多个捕获/比较功能及多种输出波形(PWM)。

具有异步输入、输出锁存功能。

没有自动重载时间常数功能,但产生的定时脉冲或PWM(脉宽调制)信号没有软件带来的误差。

能捕获外部事件发生的时间,锁定其发生时的高低电平。

具有完善的中断服务功能。

具有8种输出方式选择,3个可配置输出单元。

1.Timer_A结构

Timer_A由三部分组成,如图5-18所示。

1)计数器部分

计数器部分用来完成时钟源的选择与分频、模式控制及计数等功能。输入的时钟源具有4种选择,所选定的时钟源又可以1、2、4或8分频作为计数频率,Timer_A可以通过选择4种工作模式灵活地完成定时/计数功能。

2)捕获/比较器

捕获/比较器用于捕获事件发生的时间或产生时间间隔,捕获比较功能的引入主要是为了提高I/O端口处理事务的能力和速度。不同的MSP430单片机,Timer_A模块中所含有的捕获/比较器的数量不一样,但每个捕获/比较器的结构完全相同,输入和输出都取决于各自所带的控制寄存器的控制字,捕获/比较器相互之间工作完全相互独立。

3)输出单元

输出单元用于产生用户所需要的输出信号。Timer_A具有可选的8种输出模式,支持PWM输出。

图5-18Timer_A的结构原理图

2.Timer_A寄存器

MSP430系列单片机不同系列包含有不同数目的捕获/比较器,含有3个捕获/比较器。Timer_A的寄存器(比如MSP430X13X)如表5-13所示。用户对Timer_A的所有操作都是通过操作该模块的寄存器完成的。

表5-13Timer_A的寄存器

(1)TACTL:控制寄存器。

定时器控制寄存器TACTL中包含定时器及其操作的控制位。POR信号后TACTL的所有位都自动复位,但在PUC信号后不受影响,TACTL各位的定义如下:

表5-14Timer_A时钟源

ID1,ID0:输入分频选择位。

00不分频;

012分频;

104分频;

118分频。

由SSEL0和SSEL1两位选择时钟源,然后再由ID0和ID1选择分频系数将输入信号分频,分频后的信号才用于计数器计数。

MC1,MC0:计数模式控制选择位。

00停止模式;

11增计数模式;

10连续计数模式;

11增/减计数模式。

TACLR:定时器清除位,该位由硬件自动复位,其读出值始终为0。

0Timer_A计数器TAR内容不清零;

1Timer_A计数器TAR内容清零。

定时器和分频器在POR或TACLR位置位时复位。TACLR由硬件自动复位,其读出始终为0。定时器在下一个有效输入沿开始工作。如果不是被清除模式控制位暂停,则定时器以增计数模式开始工作。

TAIE:定时器中断允许位。

0禁止定时器中断;

1允许定时器中断。

TAIFG:定时器标志位,不同工作模式下,该位有不同的置位条件。

0无中断请求;

1有中断请求。

(2)TAR:16位计数器。

该单元就是执行计数的单元,是计数器的主体,其内容可读可写。若要修改Timer_A,推荐修改顺序如下:

①修改控制寄存器和停止定时器。

启动定时器工作。

当计数时钟不是MCLK时,写入应该在计数器停止计数时进行,以免因与CPU不同步而引起时钟竞争。输入时钟和软件所用的系统时钟异步也可能引起时间竞争,使定时器响应出错,所以用TACTL控制寄存器中的控制位来改变定时器工作,尤其是修改输入选择位,输入分频器和定时器清除位时,定时器应停止,例如:

MOV#01C6H,&TACTL ;ACLK/4,定时器停止,定时器复位

BIS#10H,&TACTL ;开始增计数模式

(3)

TACCTLx:捕获/比较控制寄存器。

Timer_A有多个捕获/比较模块,每个模块都有自己的控制字CCTLx,这里x为捕获/比较模块序号。该寄存器在POR信号后全部复位,但在PUC信号后不影响。该寄存器中各位的定义如下:

CM1CM0:选择捕获方式。

00禁止捕获模式;

01上升沿捕获;

10下降沿捕获;

11上升沿与下降沿都捕获。

CCIS1CCIS0:捕获模式中,捕获事件的输入源选择位。

00CCIxA;

01CCIxB;

10GND;

11VCC。

SCS:捕获信号与定时器时钟同步选择位。

0异步捕获;

1同步捕获。

异步捕获模式允许在请求时立即将CCIFG置位且捕获定时器值,适用与捕获信号的周期远大于定时器时钟周期的情况。但是,如果定时器时钟和捕获信号发生时间竞争,则捕获寄存器可能出错。实际中经常使用同步捕获模式,而且捕获总是有效的。

SCCI:同步比较/捕获输入,比较相等信号EQUx将选定的捕获/比较输入信号CCIx(CCIxA,CCIxB,VCC和GND)进行锁存,可由SCCIx读出。

CAP:工作模式选择位。

0比较模式;

1捕获模式。

如果通过捕获/比较寄存器CCTLx中的CAP使工作模式从比较模式变为捕获模式,那么不应同时进行捕获,否则,在捕获/比较寄存器中的值是不可预料的,操作顺序一般如下:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论