订单没有清洗会怎么样:MSP430的时钟系统FD

来源:百度文库 编辑:九乡新闻网 时间:2024/05/06 12:31:00
 引言:MSP430的教科书通读了一遍,只是对其有一个整体的朦胧感.于是昨天开始准备编些程序试下自己的水平.可对着空荡荡的代码区硬是一个字都写不下去.涉及到细节问题,基本就是无从下手.现把一些细节问题整理在这个专栏里面,以备后面查证.同时觉得自己欠缺的还是一个对总体框架的把握,看来是要多读一些东西了.
     
     正文:MSP430根据型号的不同最多可以选择使用3个振荡器。我们可以根据需要选择合适的振荡频率,并可以在不需要时随时关闭振荡器,以节省功耗。这3个振荡器分别为:
(1)DCO  数控RC振荡器。它在芯片内部,不用时可以关闭。DCO的振荡频率会受周围环境温度和MSP430工作电压的影响,且同一型号的芯片所产生的频率也不相同。但DCO的调节功能可以改善它的性能,他的调节分为以下3步:a:选择BCSCTL1.RSELx确定时钟的标称频率;b:选择DCOCTL.DCOx在标称频率基础上分段粗调;c:选择DCOCTL.MODx的值进行细调。

(2)LFXT1  接低频振荡器。典型为接32768HZ的时钟振荡器,直接连接在XIN与XOUT之间,此时振荡器不需要接负载电容。也可以接450KHZ~8MHZ的标准晶体振荡器,此时需要接负载电容.LXFT1产生的频率信号为ACLK.低速时钟需要上百毫秒的建立时间才能稳定下来.

(3)XT2  接450KHZ~8MHZ的标准晶体振荡器。外部标准晶体振荡器接在XT2IN和XT2OUT之间,此时需要接负载电容,不用时可以关闭。

    低频振荡器主要用来降低能量消耗,如使用电池供电的系统,高频振荡器用来对事件做出快速反应或者供CPU进行大量运算。

    MSP430的3种时钟信号:MCLK系统主时钟;SMCLK系统子时钟;ACLK辅助时钟。

(1)MCLK系统主时钟。除了CPU运算使用此时钟以外,外围模块也可以使用。MCLK可以选择任何一个振荡器所产生的时钟信号并进行1、2、4、8分频作为其信号源。

(2)SMCLK系统子时钟。供外围模块使用。并在使用前可以通过各模块的寄存器实现分频。SMCLK可以XT2CLK或者DCOCLK振荡器所产生的时钟信号并进行1、2、4、8分频作为其信号源。

(3)ACLK辅助时钟。供外围模块使用。并在使用前可以通过各模块的寄存器实现分频。但ACLK只能由LFXT1进行1、2、4、8分频作为信号源。可以作为后台时钟用来唤醒CPU.

(4)ACLK/N, ACK缓冲输出,他可以有ACL.1.2.4.8分频获得 ,且只能为外部所用.

    PUC复位后,MCLK和SMCLK的信号源为DCO,DCO的振荡频率为800KHZ。ACLK的信号源为LFXT1。

     MSP430内部含有晶体振荡器失效监测电路,监测LFXT1(工作在高频模式)和XT2输出的时钟信号。当时钟信号丢失50us时,监测电路捕捉到振荡器失效。如果MCLK信号来自LFXT1或者XT2,那么MSP430自动把MCLK的信号切换为DCO,这样可以保证程序继续运行。但MSP430不对工作在低频模式的LFXT1进行监测。

关于MSP430的定时器A
16位TIMER_A的主要功能模块包括:  。一个可连续增计数至预定值并返回0的计数器,也可是其停止.。软件可选择的时钟源.

 。 选定的时钟源可作1,2,4和8分频.

 。5个捕获/比较寄存器.每个都有独立的捕获事件,即硬件和软件控制的2个捕获信号.

 。5个输出模块,支持脉宽调制需要.

    定时器操作:  模式控制          模式                具体操作

    MC1   MC0        (TATCL寄存器4~5位)

    0        0          停止              定时器暂停

    0        1          增计数           定时器增计数到等于比较寄存器0的值

    1        0          连续              定时器连续增计数

    1        1          增/减计数        定时器增计数到等于比较寄存器0的值,然后减计数到0

  输入分频控制位(TACTL6~7)

      ID1   ID2         分频              说明  

      0     0           PASS            输入信号直通定时器

      0     1             /2              输入信号2分频

      1     0             /4              输入信号8分频

  定时器的时钟源:

     SSEL2 SSEL1 SSEL0 输入信号      说明

      0       0       0       TACLK      用特定的外部引脚信号

      0       0       1        ACL        用辅助时钟ACLK

      0        1      0        MCLK      用系统时钟MCLK

      0        1      1        INCLK     见器件说明

      1       X       X        ----       保留

     捕获模式:    位于控制字CCTLX中的模式位CAPX的置位将选择捕获模式。 捕获模式用于时间时间的精确定位,她可以用在速度计算或时间测量中.若在选定的输入引脚上发生选定脉冲触发沿.则定时器计数的值将被复制到捕获寄存器CCRX中.完成捕获后。控制字CCTLX中的中断标志CCIFGX置位;。如果通用中断允许位GIE和相应的中断标志位CCIEX置位,则产生中断请求.复位表示在下一次捕获完成前捕获数据已被读取.如果捕获数据还未读取时第二次捕获数据已锁存,则寄存器CCTLX中的溢出位COVX置位,检查这一位可以使程序从失去同步状态中恢复.需要用软件来复位COVX.

 CCRX_Int_hand     ...                  ;中断处理

     ...

     ...

 MOV   &CCRX,RAM_Buffer

 BIT    #COV,&CCTLX             ;BIT指令对各标志位的影响:N最高位为时置位,Z结果为0时置位,

          ;C结果非零时置位;V复位

 JNZ  Overflow_Hand              ;JNZ非0跳转,溢出出错处理,否则正常处理

     ....

     ....

    RETI

Overflow_Hand                BIC    #COV,&CCTLX
 ;复位捕捉溢出标志,恢复同步

     ....

     ....

    RETI

       定时器暂停时捕获应该停止.顺序应是先停止捕获功能,再停止定时器计数.捕获功能重新开始时,顺序应先开始捕获功能,再开始定时器计数.          

     比较模式: 如果控制字CCTLX中CAPX复位,则选择比较模式.这时所有的捕获硬件停止工作.如果定时器计数值等于比较寄存器X中的值,那么。位于控制字CCTLX中的中断标志CCIFX置位.。如果GIE和CCIEX置位,则产生中断请求.。EQUX信号输出到输出单元OUTX中.根据选定输出模式,信号可以是置位、复位、或将输出OUTX翻转(如果OUTMODX>0)当定时器值大于或者等于CCR0的值时,EUQ0信号为真;当定时器值等于相应的CCR1~CCR4的值时,EQU1~EQU4信号为真.

     输出单元:输出单元支持PWM或者DAC应用

  OUTMODX    模式        说明

   000       输出模式    OUTX位的数据即OUTX信号

   001       置位        比较信号EQUX使OUTX信号置位

   010    PWM翻转/置位   比较信号EQUX使OUTX信号翻转,EQU0使OUTX信号复位

   011   PWM置位/复位    比较信号EQUX使OUTX信号置位,EQU0使OUTX信号复位

   100       翻转        比较信号EQUX使OUTX翻转

   101       复位        比较信号EQUX使OUTX复位

   110     PWM翻转/复位  比较信号EQUX使OUTX信号翻转,EQU0使OUTX信号置位

   111     PWM复位/置位  比较信号EQUX使OUTX信号复位,EQU0使OUTX信号置位

   输出从现有的电平开始,而与选定的模式无关.1.增计数模式:当定时器增计数到CCRX以及由CCR0计数到0时,OUTX信号根据选定的输出模式发生变化.2.连续计数模式:当定时器计数到CCRX和计数到CCR0时,OUTX信号根据选定的输出模式发生变化.3.增/减计数模式:当定时器增计数到CCRX和减计数到CCRX时,OUTX信号根据选定的输出模式发生改变.

       暂告一段落,感觉感觉现在的自己超级笨,这么一点东西就折腾半天,而且具体怎么用还不是很清楚,真是惭愧~看来还是要有针对性的实验以下或者看看别人的历程会有效果。稍后把例程呈上