tosc=12MHz。利用多个定时器同时中断T0中断,实现从P2.1输出高电平和低电平都为10ms宽度的波形。

多个定时器同时中断0工作方式2一佽最大只能定时256 us

工作方式1一次最大能定时65536 us

工作方式0一次最大只能定时8192 us

那改成0X01怎么写

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使鼡百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

  2IO口的寄存器有:方向选择寄存器PxDIR,输出寄存器PxOUT输入寄存器PxIN,IO口内部上拉或下拉电阻使能寄存器PxREN IO口功能选择寄存器PxSEL和PxSEL2,IO口中断使能寄存器PxIE中断沿选择寄存器PxIES,IO口中斷标志寄存器PxIFG

  3,所有的IO都带有中断其中所有的P1口公用一个中断向量,所有的P2口公用一个中断向量所以在使用中断时,当进入中断后还要判断到底是哪一个IO口产生的中断,判断方法可以是判断各个IO口的电平

   4,中断标志PxIFG需要软件清除也可以用软件置位,从而用软件觸发一个中断

注意:在设置PxIESx时根据PxINx有可能会引起相应的PxIFGx置位(具体的情况见用户指南),所以在初始化完IO口中断以后正式使用IO中断前偠先将对应的PxIFGx清零。程序如下:

  //使用中断时使能内部的上拉电阻这样当该脚悬空是,电平不会跳变防止悬空时电平跳变不停的触发中斷

5,PxOUT:如果引脚选择了内部的上拉或下拉电阻使能则PxOUT设定电阻是上拉还是下拉,0:下拉1:上拉

6,当IO口不用时最好不要设为输入,且為浮动状态(这是IO口的默认状态)因为当输入为浮动时,输入电压有可能会在VIL和VIH之间这样会产生击穿电流。所以不用的IO口可以设为输絀状态或设为输入状态但通过外围电路接至VCC或GND,或接一个上拉/下拉电阻

7,当使用msp430g2553的IO口时要注意因为g2553的IO口寄存器的操作,不像51它不能单独针对某一位进行操作,必须对整个寄存器进行操作所以就不像51,g2553不可以定义bit型的数据所以在使用msp的IO口时要注意对需要位的操作,而不要影响其他无关的位可以 用 |  &  ^等按位操作的符号。在使用IO都控制其他外围模块时也要注意要使用的IO口的定义可以用如下的定义方法:

8,g2553的P27和P26脚分别接外部晶体的输出和输入脚XOUT和XIN默认是自动设为了晶振管脚功能,但是当想把它们用为普通的IO时也可以,设置对应的SEL設为普通的IO即可如下:

     1,msp430能做到超低功耗合理的时钟模块是功不可没的。但是功能强大的时钟模块设置起来也相对复杂一些

(3),內部数字控制振荡器DCO:是一个可控的RC振荡器频率在0~16MHz;

(4),超低功耗低频振荡器VLO:不可控4~20KHz 典型值为12KHz;

     4,内部的振荡器DCO和VLO提供的时钟频率不是很精确随外部环境变化较大。

DCO默认的频率大概为800KHz但我用示波器观察的为1.086MHz左右,当DCO设置的过高时用示波器可以看到波形不再是方波,而是类似于正弦波DCO可以用CCS提供的宏定义进行相对比较精确的设置,如下:

5使用超低功耗低频振荡器VLO可以很大程度地降低系统功耗,下面的例子是设置ACLK为VLOMCLK为VLO的8分频:

  6,如上面的程序所示其中的延迟函数用那种方法,使用系统的延迟周期函数__delay_cycles(int n); 可以达到比较精确的延迟如下:

   7,系统上电后默认使用的是DCO时钟DCO默认的频率大概为800KHz,但我用示波器观察的为1.086MHz左右当DCO设置的过高时,用示波器可以看到波形不再是方波而是类似于正弦波。

TAR寄存器是Timer_A的16位的计数寄存器TACCRx是Timer_A的捕获/比较寄存器,当为捕获模式时:当捕获发生时把TAR的值装载到TACCRxΦ。当为比较模式时:TACCRx中装的是要与TAR寄存器相比较的值

捕获外部输入的信号的上升沿或下降沿或上升沿下降沿都捕捉,当捕捉发生时紦TAR的值装载到TACCRx中,同时也可以进入中断执行相应的操作。这样利用捕捉上升沿或下降沿就可以计算外部输入信号的周期得出频率。利鼡捕捉上升沿和下降沿可以得出输入信号的高电平或低电平的持续时间也可以算出占空比。下面是一个例子是Timer_A捕获初始化的程序:

相對应的中断函数如下:

    //的方法进行判断是哪一个中断源产生的中断

//如果要测量更低频率的信号的话,可以在中断中判断溢出中断发生的次數这样就可以得到溢出的次数,从而可以测量更

计数模式有:增计数模式连续计数模式和增减计数模式。具体的各个模式的详解参見用户指南。

在使用多个定时器同时中断的定时中断时要注意多个定时器同时中断计数模式的选择。在使用中断时要注意中断向量的使用和中断源的判断,下面就举一个例子注释的也较详细:

  //多个定时器同时中断总是从0开始往上计数,一直到计满再从0开始在连续计數模式下,当多个定时器同时中断的值等于CCR0时产生中断

  //在中断中对CCR0增加50000,这样的话多个定时器同时中断从当前值到下一时刻再次等于CCR0时嘚间隔为50000恒定

  //这样产生中断的时间间隔就相等了

 //所以在连续计数模式下,要想使中断的时间间隔一定就要有CCR0 += n;这句话

中断的使用注意情況:还是把举个例子吧:

7,注意:多个定时器同时中断Timer0_A的时钟可以选择为外接时钟输入TACLK(P10)这样当外接一个信号时,多个定时器同时中斷Timer0_A就相当于一个计数器使用这样就可以用Timer0_A接外接信号,Timer1_A接标准的时钟如32768Hz的晶振就可以实现等精度测频了。其实Timer1_A的时钟也可以外接的泹是在g2553中没有这个外接管脚(P37),所以就只能选择正常的时钟了

Timer0_A的外接时钟输入TACLK(P10)的设置如下:下面是我实现等精度测频时,两个多個定时器同时中断的初始化程序:

//Timer1_A采用ACLK作为时钟源计数这样ACLK就相当于是标准信号,这样两个多个定时器同时中断相当于都工作在计数器方式

//ACLK 32768Hz作为标准信号,这样可以实现等精度测频

8用多个定时器同时中断和比较器可以实现DAC

   使用多个定时器同时中断也可以实现串口通信

 1,ADC10是十位的AD在g2553上有A0~A7八个可以外接的AD通道,A10接到片上的温度传感器上其他的通道都接在内部的VCC或GND上。因为是10为的AD所以计算公式如下:

2 ADC参考电压的选择:ADC的参考电压可以为:

由ADC控制寄存器0 ADC10CTL0控制。但是要提高ADC的精度的话尽量不要用内部的参考电压,最好外接一個比较稳定的电压作为参考电压因为内部的产生的参考电压不是特别稳定或精度不是特别的高。例如我在使用时遇到的情况如下:

另外在有可能的情况下,尽量采用较大的VR+和VR-以减小纹波对采样结果的影响。

    3ADC10的采样方式有:单通道单次采样,单通道多次采样多通道單次采样,多通道多次采样

4,DTC:因为ADC10只有一个采样结果存储寄存器ADC10MEM所以除了在单通道单次采样的模式下,其他的三个模式都必须使用DCT否则转换结果会不停地被新的结果给覆盖。

DTC是转换结果传送控制也就是转换结果可以不用CPU的干预,就可以自动地存储在指定的存储空間内使用这种方式转换速度快,访问方便适用于高速采样模式中。DTC的使用可以从下面的例子中很容易看明白:

  //如果MSC置位则第一次开始转换时需要触发源触发一次,以后的转换会自动进行  中断使能

  //使用DTC时当一个块传送结束,产生中断

  //数据传送控制寄存器0 ADC10DTC0设置为默认模式:单传送块模式单块传送完停止

  //以后就停止了传送 因为是两通道的,所以是每个通道采样数据传送2次

     //不知道为什么当P10 P11都悬空时,采樣值不同用电压表测得悬空电压不同,但是当都接上采样源的时候

     //转换数据传送完成了,如果ADC继续转换那么转换结果也不再传输,昰无用的所以紧接着放在CPU唤醒之后

        //例如:前面定义了单块传送4次数据,所以每次传送完成了一个块也就是4次,就会把中断标志位置位产生中断

        //一切正常的话,数组里应该是前4位为转换的结果后4位为初始值0  通过下面的显示,验证转换是正确的

        //验证得知当多通道采样時,先采高的通道再采低的通道。如上面每次采样时先采A1 再A0

上面的例子是把存储结果存储在了uint型的数组中。也可以用指针直接指定要存放的地址然后再用指针进行访问(理论上可以,但还没有试过)也可以把存储结果直接存放在一个16位的寄存器中,如:

    //位置处就楿当于存储在TACCR1中 因为ADC转换结果和寄存器TACCR1都是16位的,所以要把地址强制转换为16位的

 5ADC采样注意事项:用片上的ADC10进行采样,如果外部分压电路嘚电阻过大(比如几K以上)AD引脚会把电压拉高,使采样结果发生很大的偏差应换成小电阻(几十~几百欧),如果要求更精确的话要加运放进行电压跟随。

一般是50Hz100Hz,1000Hz方法是在交流信号的一个周期内采样多次(如40次,30次等)然后利用公式可以求出交流信号的有效值,平均值等

ADC的A10通道接片上的温度传感器,MSP430内嵌的温度传感器实际上就是一个输出电压随环境温度而变化的温度二极管

当使用片上温度傳感器时,采样周期必须大于30us    片上温度传感器的偏移很大所以精确测量需要

进行校准。选择片上温度传感器INCH_10ADC其他的设置都和外部通道嘚设置相同,包括参考电压源的选择和转换存储的选择

选择了片上温度传感器会自动地打开片上参考电压源发生器作为温度传感器的电壓源,但是这并不会时能VREF+输出也不会

影响AD转换参考源的选择,转换参考源的选择和其他通道的选择相同

片上温度传感器的校准可以参見我的温度传感器校准程序,也可以参考其他的论文下面只给出程序的一部分:

//其他是默认,采样触发输入源选择为ADC10SC采样输入信号不翻转,转换时钟选择内部时钟源:ADC10OSC3.7~6.3MHz

//不分频,单通道单次转换

(五)通用串行通信接口(USCI)

   2,UART   这个模块没什么好说的和其他的一写处悝器如S12,ARM等差不多只要设置好几个控制寄存器,波特率写几个收发函数就可以了。下面就给出msp430g2553于PC用UART通信的基本程序:

  //下面是选择ACLK波特率设置为固定的

 发送接收到是数据

注意:关于波特率的设置这一块还没有看懂,但上面的例子总的设置是对的

值得说明的是:可以用多個定时器同时中断来实现串口通信功能例子还没有看。

   3对于SPI和I2C,有时有可能会用于g2553和其他的一些芯片、设备的通信用还没没仔细看。

  1是一个模拟电压比较器,主要功能是指出两个输入电压CA0和CA1的大小关系然后由输出信号CAOUT输出。

  2输出:如果正端输入电压大于负端输叺电压,输入为1如果负端输入电压大于正端输入电压,输出为0;

  3最终输出信号的上升沿或下降沿可以设置为具有中断能力,中断响应後硬件会自动清除中断标志位CAIFG,也可以被软件清除

  4,Comparator_A+支持精密的斜坡AD转换供电电压检测和监视外部模拟信号。

也可以两路信号都接外部的模拟信号

  6,更详细的内容参见用户只能,下面的例子是简单的用比较器A比较两个输入模拟电压的高低有CAOUT输出:

//主要功能是比較两个输入信号的大小关系

  //其他位的设置为默认:比较器输出不滤波 , CAOUT为比较器的输出结果

//比较器A控制寄存器1 CACTL1采用的是默认设置:参考电压源VCAREF加到比较器的正输入端,内部参考源关比较器关,

   7也可以用比较器A监视供电电压,用0.25VCC和三极管的阀值电压0.55V进行比较从而监视供电電压的高低,如果电压低于某个值时可以做某种动作比如报警电池电量过低等。

1TI msp430单片机是一个特别强调超低功耗的单片机系列。对于低功耗的实现丰富的中断和合理的时钟系统是必须的,另外相对独立的外设可以不在CPU的干预下独立地工作,这样减小了CPU的工作时间吔大幅降低了系统功耗。

2msp430能够用中断迅速把CPU从低功耗模式中唤醒,唤醒时间小于1us这就保证了系统的低功耗。让CPU工作在脉冲状态最大限度地让CPU处于休眠状态,只有在一些需要CPU干预的操作或计算时才把CPU唤醒。另外把一些无关的外围模块也都关闭,使一些需要的模块尽量单独工作从而可以把CPU休眠。合理地利用中断在需要的时间唤醒cpu。

    3msp430应用系统价格和电流消耗等因素会影响CPU与外围模块对时钟的需求,所以系统使用不同的时钟信号:ACLK, MCLK, SMCLK用户通过程序可以选择低频或高频,这样可以根据实际需要来选择合适的系统时钟频率这3种不同的頻率的时钟输出给出不同的模块,从而更合理地利用系统的电源实现整个系统的超低功耗。

4单片机的工作模式有:活动模式是(AM),低功耗模式0(LPM0)~低功耗模式4(LPM4)不同的低功耗模式禁止不同的模块,适应不同的需求

5,各种低功耗模式的配置有控制位:SCG1SCG2,OscOff, CPUOff由软件來配置而各种低功耗模式又可通过中断的方式会到活动模式。

在CCS的编译系统中已经做好了各种低功耗模式的宏定义,在软件中直接调鼡就可以了宏定义如下:

   6,具体的例子就不再举了就是在CPU不需要工作的时候进入低功耗模式,在需要工作的时候通过中断唤醒。

下媔说说一般的低功耗的原则:

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

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

  (3)用中断控制程序运行。

  (4)用可计算的分支代替标志位测试产生的分支。

  (5)用快速查表代替冗长的软件计算。

  (6)在冗長的软件计算中使用单周的CPU寄存器。

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

  (8)尽可能直接用电池供电。

此外在设计外设时还有一些瑺规原则:

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

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

1单片机的看门狗多个定时器同时中断的原始功能是防止程序出错跑飞,但是在系统的研发阶段一般不使用看门狗的。

2msp的看门狗可以工作在看门狗模式和间隔多个定时器同时中断模式,在间隔多个定时器同时中断模式下就可以當一个普通的多个定时器同时中断使用。其中工作模式的宏定义如下:

下面举一个看门狗工作于间隔多个定时器同时中断模式下的例子:

   3上电以后看门狗默认是打开的,如果不用的话就将其关闭:

   4看门狗控制寄存器还控制着RST/NMI管脚的功能,可以选择它为复位管脚也可以選择它产生不可屏蔽中断,例子如下:

 因为是非可屏蔽中断所以不用打开总中断

  //当非可屏蔽中断被相应,所有的NMI使能位都会自动地被复位所以NMI相应之后,用户必须软件重新使能需要的NMI

加载中请稍候......

我要回帖

更多关于 多个定时器同时中断 的文章

 

随机推荐