[MSP430学习笔记] MSP430单片机RTC操作-TimeA实现的实时时钟
MSP430_RTC模块学习
今天学习了MSP430F5系列单片机的RTC模块使用,现总结一下以防忘记。
F5系列单片机的RTC模块可以用作日历模式、可编程闹钟和可校准的时钟计数器。
RTCCTL1寄存器中的RTCMODE位决定RTC工作在日历模式还是计数器模式:RTCMODE 0 32位计数器模式1日历模式计数器模式:此时RTCMODE复位。
计数器的时钟源选择:时钟源可选自ACLK、SMCLK或者是经RT0PS和RT1PS对ACLK、SMCLK 的分频值。
RT0PS和RT1PS分别能输出ACLK和SMCLK的2、4、8、16、32、64、128、256分频。
如下图:另外,还可以看到RT1SSEL中的10、11选项练到了RT0PSDIV的输出。
它的作用是将RT0PS和RT1PS级联。
级联后的输出也可以作为32位计数器的时钟源。
4个独立的8位计数器级联成32位计数器,能提供计数时钟的8位、16位、24位、32位溢出间隔,由RTCCTL1寄存器的RTCTEV位选择其中一种触发条件。
置位RTCTEVIE,一个RTCTEV事件可以触发一个中断。
RT0PS和RT1PS可以被配置成两个8位的计数器,或者级联成一个16位的计数器。
通过设置各自的RT0PSHOLD和RT1PSHOLD位,RT0PS和RT1PS可以暂停功能,还原为独立的模块。
当RT0PS和RT1PS级联的时候,通过置位RT0PSHOLD可以导致RT0PS和RT1PS同时停止。
根据不同的配置,32 位的计数器可以有不同的方法被停止。
如果32位的计数器时钟源直接源于ACLK或者SMCLK,则可以通过置位RTCHOLD而被停止;如果它是源于RT1PS的输出,则可以通过置位RT1PSHOLD或者RTCHOLD而被停止;最后,如果它源于RT0PS和RT1PS的级联,则通过置位RT0PSHOLD、RT1PSHOLD或者RTCHOLD 而被停止。
个人理解:RTC的时钟要么来自ACLK,要么来自SMCLK,要么来自RT1PS对ACLK 或SMCLK的分频,要么来自RT0PS与RT1PS级联后对ACLK或SMCLK的分频。
【MSP430入门例程】:Timer A
MSP430F1系列定时器A结构图[1]TimerA模块结构组成在MSP430F1XX-TimerA的结构中,分别由TA基础模块、CCR0、CCR1、CCR2子模块。
TA基础模块:[1]TA基础子模块主要完成定时器时钟源的输入(时钟源的选择、分频)。
[2]TA定时器计数。
[3]定时器的工作模式设置。
CCR0、CCR1、CCR2子模块:CCRx全称为Capture Compare Register-捕获比较寄存器,这些子模块有着捕获和比较的功能。
捕获、比较信号的触发源可以从芯片的外部引脚、CPU的外围模块输入来。
同时CCRx子模块也有其输出信号OUT.x ,此OUT.x可以输出到芯片的外部引脚、或输入到CPU的外围模块中。
CCRx与TAR(Timer A Register - 简称:TAR )结合使可以实现特定的的功能。
常用TimerA可以实现功能:PWM信号输出功能:通过设置TA的工作模式,结合CCR0、CCR1或CCR2计数。
直从CCR0、CCR1或CCR2中子模块的OUT.x端输出。
Slope AD转换功能:利用定时器A与比较器A结合设计成斜边数模转换器。
实现软USART功能:利用CCR0子模块中的捕获输入功能,结合TAR实现通用串行异步通讯功能(USART)。
ADC12模块的采样信号:利用定时器的TAR或CCR0实现OUT.x输出得到ADC12模块所需要的采样触发信号。
其它应用...。
[2]TimerA 模块工作模式[TA工作模式]TA定时器的工作模式有4种,这4种模式由TACTL寄存器的MC1、MC0位控制:模式 MC1 MC0 功能说明停止0 0 TA为停止(上电状态)增计数0 1 TAR增计数至CCR0,然后回到0。
连续计数 1 0 TAR连续计数至FFFFH,然后回到0。
增/减计数 1 1 TAR增计数至CCR0,然后减计数至0。
[时钟输入]定时器A时钟源有4种选择,分别为外部时钟TACLK、辅助时钟ACLK、子系统时钟SMCLK及INCLK。
MSP430系统实时时钟RTC学习日志
MSP430系统实时时钟RTC学习日志读取实时时钟:1、RTCRDY 为0 时,不能取读取实时时钟RT0PS 源于ACLK,为了实时时钟日历的正确的运行,ACLK 必须是32768Hz。
(易出错)定时:一、每小时闹一次:每一小时的15 分钟闹一次:1、将RTCAMIN 设置成15;2、设置RTCAMIN 的AE 位和清除闹钟寄存器的其它所有AE 位3、AF 会在:00:14:59 到00:15:00、01:14:59 到01:15:00、02:14:59 到02:15:00 等等时刻被置位。
二、在每天04:00:00 时刻闹:1、RTCAHOUR 位置位成4;2、设置RTCHOUR 的AE 位和复位闹钟寄存器的所有其它AE 位3、AF 就会在03:59:59 到04:00:00 时刻被置位。
三、在每天06:30:00 时刻闹:1、将RTCAHOUR 设置成6,将RTCAMIN 设置成30。
2、设置RTCAHOUR 和RTCAMIN 的AE 位,即可使能闹钟3、AF 位将会在每一个06:29:59 到06:30:00 的过渡时刻被置位四、在每周二06:30:00 时刻闹:1、RTCADOW 位设置成2,RTCAHOUR 设置成6,RTCAMIN 将要被设置成30。
2、设置RTCADOW、RTCAHOUR 和RTCAMIN 的AE 位,闹钟即被使能。
3、AF 位将会在RTCDOW 位从1 到2 的过渡后和06:29:59 到06:30:00 的过渡时刻被置位。
五、在每月第五天的06:30:00 时刻闹:1、RTCADAY 位将要设置成5,RTCAHOUR 位将要被设置成6,RTCAMIN 位将要被设置成30。
2、设置RTCADAY 位、RTCAHOUR 位和RTCAMIN 位的AE 位,闹钟即被使能。
3、AF 位将要在06:29:59 到06:30:00 的过渡时刻和RTCADAY 等于5 的时刻被置位。
[MSP430学习笔记] MSP430单片机RTC操作-TimeA实现的实时时钟
二、程序执行效果:
观察MSP430F135核心实验板上的LED灯,每秒闪烁一次,实现RTC。如下图所示效果:
三、原理讲解:
详细介绍请看MSP430功能模块详解系列之——TimerA。
四、操作步骤:
P1DIR |= 0x20;// P1.5为输出口
TACTL |= MC0;// Timer_a为增量计数模式
_EINT();//开中断
for (;;)
{
_BIS_SR(LPM3_bits);//进入LPM3
}
}
#pragmavector=TIMERA0_VECTOR//Timer_A中断函数
__interruptvoidTimerA_ISR()
#include<msp430x13x.h>
voidmain(void)
{
WDTCTL = WDTPW + WDTHOLD;//停止看门狗
TACTL = TASSEL0 + TACLR;// ACLK,清TAR
CCTL0 = CCIE;// CCR0中断使能
CCR0 = 16384;//设定中断间隔,32768Hz晶振,0.5s
//硬件连接:
//
//调试器:MSP430FET全系列JTAG仿真器
//调试软件:IAR Embedded Workbench Version:3.41A编译
//******************************************************************************
{
P1OUT ^= 0x20;//通过异或取反P1.5
MSP430_定时器A的使用(含OUTMOD模式详解及运用)
第四讲定时器A的使用MSP430F413芯片中含有TimerA3模块,如图1-2所示。
其常用的外引线有三条:TACLK、TA1和TA2。
TACLK:定时器_A输入时钟(48脚),与P1.6和ACLK输出共用同一引脚。
TA1:定时器_A的第一通道输入、输出引脚(51脚)。
捕获方式:CCI1A输入;比较方式:OUT1输出。
TA2:定时器_A的第二通道输入、输出引脚(45脚)。
捕获方式:CCI2A输入;比较方式:OUT2输出。
1.定时器A功能及结构定时器A基本结构是一个十六位计数器,由时钟信号驱动工作,结构框图如图4-1所示。
图4-1 定时器A结构图定时器A具有多种功能,其特性如下:(1)输入时钟可以有三种选择,可以是慢时钟(ACLK)、快时钟(SMCLK与单片机主时钟同频)和外部时钟。
(2)能产生的定时中断、定时脉冲和PWM(脉宽调制)信号,没有软件带来的误差。
(3)不仅能捕获外部事件发生的时间,还可选择触发脉冲沿(由上升沿或下降沿触发)。
定时器A功能模块主要包括:(1)计数器部分:输入的时钟源具有4种选择,所选定的时钟源又可以1、2、4或8分频作为计数频率,Timer_A可以通过选择4种工作模式灵活的完成定时/计数功能。
(2)捕获/比较器:用于捕获事件发生的时间或产生时间间隔,捕获比较功能的引入主要是为了提高I/O 端口处理事务的能力和速度。
不同的MSP430单片机,Timer_A模块中所含有的捕获/比较器的数量不一样,每个捕获/比较器的结构完全相同,输入和输出都取决于各自所带控制寄存器的控制字,捕获/比较器相互之间完全独立工作。
(3)输出单元:具有可选的8种输出模式,用于产生用户需要的输出信号,支持PWM输出。
2.定时器工作模式(1)停止模式:停止模式用于定时器暂停,并不发生复位,所有寄存器现行的内容在停止模式结束后都可用。
当定时器暂停后重新计数时,计数器将从暂停时的值开始以暂停前的计数方向计数。
MSP430的实时时钟
IMPORTANT NOTICETexas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections, modifications, enhancements, improvements, and other changes to its products and services at any time and to discontinue any product or service without notice. Customers should obtain the latest relevant information before placing orders and should verify that such information is current and complete. All products are sold subject to TI’s terms and conditions of sale supplied at the time of order acknowledgment.TI warrants performance of its hardware products to the specifications applicable at the time of sale in accordance with TI’s standard warranty. Testing and other quality control techniques are used to the extent TI deems necessary to support this warranty. Except where mandated by government requirements, testing of all parameters of each product is not necessarily performed.TI assumes no liability for applications assistance or customer product design. Customers are responsible for their products and applications using TI components. To minimize the risks associated with customer products and applications, customers should provide adequate design and operating safeguards.TI does not warrant or represent that any license, either express or implied, is granted under any TI patent right, copyright, mask work right, or other TI intellectual property right relating to any combination, machine, or process in which TI products or services are used. Information published by TI regarding third–party products or services does not constitute a license from TI to use such products or services or a warranty or endorsement thereof. Use of such information may require a license from a third party under the patents or other intellectual property of the third party, or a license from TI under the patents or other intellectual property of TI.Reproduction of information in TI data books or data sheets is permissible only if reproduction is without alteration and is accompanied by all associated warranties, conditions, limitations, and notices. Reproduction of this information with alteration is an unfair and deceptive business practice. TI is not responsible or liable for such altered documentation.Resale of TI products or services with statements different from or beyond the parameters stated by TI for that product or service voids all express and any implied warranties for the associated TI product or service and is an unfair and deceptive business practice. TI is not responsible or liable for any such statements.Mailing Address:Texas InstrumentsPost Office Box 655303Dallas, Texas 75265Copyright 2002, Texas Instruments Incorporated。
个人学习总结:MSP430_TimerA
【8种输出模式】 OUTMOD_0:立即,直接输出OUT位 OUTMOD_1:CCRx置位;CCR0保持(all) OUTMOD_2:CCRx翻转;CCR0复位(all) OUTMOD_3:CCRx置位;CCR0复位 OUTMOD_4:CCRx翻转;CCR0保持(all) OUTMOD_5:CCRx复位;CCR0保持(all) OUTMOD_6:CCRx翻转;CCR0置位 OUTMOD_7:CCRx复位;CCR0置位 输出单元只工作于比较模式,捕获时不会产生输出。 输出单元0不能输出2,3,6,7模式 输出是自动而独立的,和中断使能、中断标志都无关。 产生TA中断的原则:只要计数归零就产生TA中断
SCS
捕获与 定时器同步
SCCI
锁定的 捕获信号
未使用
CAP
捕获/比较 选择位
捕获方式
捕获信号输入源
7.rw-(0) OUTMOD2
6.rw-(0) OUTMOD1 输出模式选择
5.rw-0 OUTMOD0
4.rw-(0)
3.rw-(0)
2.rw-(0)
1.rw-(0)
0.rw-(0)
CCIE
中断使能
ID1
ID0
MC1
MC0
未使用
TACLR
TAIE
TAIFG
选择分频因子
选择计数方式
TAR复位清零 TA中断使能 TA中断标志
【计数时钟源】 TASSEL_0:TACLK外部引脚P1.0/TACLK(12脚)信号 TASSEL_1:ACLK内部辅助时钟 TASSEL_2:SMCLK内部子系统时钟 TASSEL_3:INCLK外部P2.1/TAINCLK(21脚)时钟 【TIMER_A的再次分频】 ID_0:1分频 ID_1:2分频 ID_2:4分频 ID_3:8分频 【计数模式】 MC_0:暂停计数,计数停止,但内容不清零,将继续计数。 MC_1:0~CCR0增计数,到达CCR0后归零,重新计数。先CCR0中断,后TA中断。 MC_2:0~FFFFH连续计数,到达TAR最大值后归零,重新计数。归零时产生TA中断。 MC_3:0~CCR0~0增减计数,到达CCR0后开始减1(产生CCR0中断),减至0时重新 计数,并产生TA中断。 【TACLR置位】 1:TAR清零 2:ID1,ID0复位 3:计数方向为增方向( 比如正由CCR0~0减计数,TACLR后会变为从0~CCR0方向增计数) 产生TA中断的原则: 只要计数归零就产生TA中断
MSP430F5系列中文手册 RTC 实时时钟A
MSP430F5系列16位超低功耗单片机模块原理第14章RTC 实时时钟A版本: 1.0日期: 2008.9.原文: TI slau208.pdf (5xxfamily User's Guide)翻译: 周欣南京信息工程大学编辑: DC 微控技术论坛版主注:以下文章是翻译TI slau208.pdf 文件中的部分内容。
由于我们翻译水平有限,有整理过程中难免有所不足或错误;所以以下内容只供参考.一切以原文为准。
文章更新详情请密切留意微控技术论坛。
Page 1 of 14第14章实时时钟A实时时钟模块提供了具有日历模式、灵活可编程闹钟和校准的时钟计数器。
这一章节介绍了实时时钟A模块。
实时时钟模块A执行于MSP430X5XX器件中。
14.1 实时时钟介绍实时时钟模块提供了一个具有可以配置成一般目的计数器的日历时钟。
实时时钟特点有:l可配置成实时时钟模式或者一般目的的计数器l在日历模式中提供了秒钟,分钟,小时,星期,日期,月份和年份l具有中断能力l实时时钟模式里可选择BCD码或者二进制格式l实时时钟模式里具有可编程闹钟l实时时钟模式里具有时间偏差的逻辑校正实时时钟框图见图14-1。
注意:实时时钟初始化实时时钟模块的大多数寄存器没有初始条件。
在使用这个模块之前,用户必须通过软件对寄存器进行配置。
Page 2 of 14Page 3 of 14图14-1 实时时钟14.2 实时时钟操作实时时钟模块可以被配置成具有日历作用的实时时钟或者是一个具有RTCMODE 比特一般目的的32位计数器。
14.2.1 计数器模式当RTCMODE 被重置时,计数器模式被选择。
在这个模式中,通过软件可以得到一个32位的计数器。
从日历模式切换到计数器模式是通过重置计数值(RCTNT1,RCTNT2,RCTNT3,RCTNT4),和预换算计数器(RT0PS,RT1PS)。
时钟的增量计数器可源于ACLK、SMCLK或者是分频之后的ACLK或SMCLK。
S.D.Lu的MSP430入门学习笔记(9):定时器TimerA(4)捕获功能
S.D.Lu的MSP430入门学习笔记(9):定时器TimerA(4)捕获功能本篇笔记介绍如何使用TimerA的捕获模式校准DCO、测量方波信号的频率/周期、脉宽和占空比。
对DCO时钟进行校准对信号脉宽、占空比等参数的测量要求高频时钟。
但是MSP430G2452的不支持外部高频时钟,所以不能使用外部高频晶振作为时钟源。
内部数控时钟DCO就成了唯一选择。
虽然TI在出厂时对MSP430的DCO进行了校准,保存了1MHz、8MHz、12MHz、16MHz这几个频率的校准值,但是由于工作环境的不同,会因为温度等因素的影响而产生较大的偏差。
所以,在对时钟要求较高的设计中,最好对其进行再次校准。
对DCO进行校准的基本原理是用TimerA定时器的捕获/比较功能,进行两个频率的比较,然后根据比较结果调整DCO的输出,直到得到指定频率。
具体方法是,使用外部的32768Hz晶振作为基准时钟源,使用TimerA的捕获功能对DCO的频率进行测量,然后通过DCOx、MODx和RSELx位来调节DCO的频率,直到其输出等于想要的频率。
请看例程:本例中,P1.4用于输出SMCLK,即DCOCLK,程序运行时,可以用示波器观察P1.4口的信号,以确认当前的DCOCLK频率。
同时,在不同DCO频率下,可以观察到P1.0上的LED闪烁频率不同。
在21~24行选择任意一行,屏蔽其它3行,可以得到16MHz、12MHz、8MHz、1MHz不同的DCOCLK频率。
函数void Set_DCO(unsigned int Delta);的作用就是设定DCO输出指定频率。
应该注意的是,参数Delta的单位是4069Hz。
下面对该函数的代码进行分析。
37行,对LFXT1CLK进行8分频作为ACLK,因为本例中LFXT1使用外部32768Hz 晶振,所以ACLK=32768Hz/8=4096Hz,这就是Delta的单位。
38行,将CCR0单元设置为捕获上升沿模式,信号输入为CCI0B,即ACLK=4096Hz。
单片机MSP430 - Timer_A 定时器中断程序
单片机MSP430 - Timer_A 定时器中断程序一、利用定时器定时功能,实现定时器单个溢出中断,实现P3.0 方波输出#include “cc430x613x.h”void main(){WDTCTL = WDTPW + WDTHOLD; // 停止看门狗定时器P3DIR |= 0x04; // P3 口初始化,设置为输出模式TA0CCR0 = 32768; // 定义中断计数周期1s,时钟频率为32.768MHZ,32768 / 32768 = 1sTA0CCTL0 = CCIE; // TA0CCR0 捕获/比较中断寄存器中断使能TA0CTL = TASSEL_1 + MC_1 + TACLR; // TASSEL_1,ACLK 时钟源MC_1,增计数模式_BIS_SR(LPM3_bits + GIE); // 进入LPM3 低功耗模式,开启总中断}#pragma vector = TIMER0_A0_VECTOR__interrupt void Timer_A(void) // 定时器中断触发,P3 输出口异或,电平翻转{P3OUT – 0x04;二、利用定时器定时功能,实现定时器多个溢出,对应产生多个中断,实现P3.0 输出#include “cc430x613x.h”void main(){WDTCTL = WDTPW + WDTHOLD; // 停止看门狗定时器P3DIR |= 0x04; // P3 口初始化,设置为输出模式TA0CCR0 = 32768; // 定义中断计数周期1s,时钟频率为32.768MHZ,32768 / 32768 = 1sTA0CCTL0 = CCIE; // TA0CCR0 捕获/比较中断寄存器中断使能TA0CCR1 = 3276; // 定义中断溢出周期100msTA0CCTL1 = CCIE; // TA0CCR0 捕获/比较中断寄存器中断使能TA0CTL = TASSEL_1 + MC_1 + TACLR; // TASSEL_1,ACLK 时钟源MC_1,增计数模式_BIS_SR(LPM3_bits + GIE); // 进入LPM3 低功耗模式,开启总中断}#pragma vector = TIMER0_A0_VECTOR__interrupt void Timer_A(void) // 1s 溢出中断P3OUT = ~0x04;}#pragma vector = TIMER0_A1_VECTOR__interrupt void Timer_A1(void) // 100ms 溢出中断{switch(TA0IV){case 2:P3OUT = 0x04;break;case 4:break;case 10:break;}}tips:感谢大家的阅读,本文由我司收集整编。
S.D.Lu的MSP430入门学习笔记(6):定时器TimerA(1)总述
S.D.Lu的MSP430入门学习笔记(6):定时器TimerA(1)总述定时器_A是具有3个捕捉/比较寄存器的16位定时器/计数器。
定时器_A能支持多个捕捉/比较,PWM输出,和反相时序。
定时器_A还有广泛的中断功能。
中断可由计数器在溢出条件上产生也可以由每一个捕捉/比较寄存器产生。
定时器有四种运行模式,如表12-1所描述的:停止,增,连续,和增/减。
运行模式由MCx位选择。
向上模式如果定时器周期一定要和0FFFFh计数不同,那么就要用到向上模式了。
定时器重复计数增加至比较寄存器TACCR0的值,该值定义了周期。
当定时器的值等于TACCR0的值时,定时器重新从0开始计数。
当定时器计数到TACCR0的值时,TACCR0CCIFG中断标志被置位。
当定时器从TACCR0计数到0时,TAIFG中断标志位被置位。
图12-3显示了标志置位周期。
CCIFG会比TAIFG提前一个定时器时钟周期置位。
连续模式在连续模式中,定时器重复计数增加至0FFFFh并且从0重新开始,如图12-4所示。
捕捉/比较寄存器TACCR0和其他的捕捉/比较寄存器一样以相同的方式工作。
当定时器从0FFFFh开始计数到0时,TAIFG中断标志被置位。
图12-5显示了标志置位周期。
连续模式可以用于产生独立的时间间隔和输出频率。
当每个时间间隔完成时,就会产生一个中断。
在中断服务程序中,下一个时间间隔被添加到TACCRx寄存器中。
图12-6显示了两个独立的时间间隔t0和t1被添加到捕捉/比较寄存器。
在该应用中,时间间隔被硬件控,而不是软件,对中断延迟无影响。
使用所有的3个捕捉/比较寄存器可以产生高达3个独立的时间间隔或输出频率。
增加/减少模式增加/减少模式是在定时器周期不同于0FFFFH计数,且需要产生一个对称的脉冲时使用的。
定时器重复计数增加至比较寄存器TACCR0的值并且减少到0,如图12-7所示。
周期是TACCR0中值的两倍。
在上数/下数模式中,TACCR0CCIFG中断标志和TAIFG中断标志在一个周期中只置位一次,由1/2定时器周期隔开。
MSP430F5529(八)实时时钟RTC
MSP430F5529(八)实时时钟RTCMSP430F5529 (八)实时时钟RTC实时时钟模块提供了具有日历模式的时钟计数、灵活可编程的闹钟以及可校准的时钟计数器。
8.1RTC_A 简介实时时钟模块提供了一个可以配置成一般目的计数器的日历时钟。
RTC_A 的特点包括:(1). 可配置成带日历的实时时钟或者一般目的的计数器;(2). 在日历模式中提供了秒钟,分钟,小时,星期,日期,月份和年份;(3). 具有中断能力;(4). 实时时钟模式下可以配置为BCD 或者二进制模式;(5). 实时时钟模式下具有可编程的闹钟;(6). 实时时钟模式里具有时间偏差的逻辑校正;注意:实时时钟模块的大多数寄存器没有初始条件。
在使用这个模块之前,用户必须通过软件对寄存器进行配置。
8.2RTC_A 的寄存器说实话,RTC 这一章不太好写,东西太多又太碎,不好总结。
它一个人的寄存器,比前面加起来似乎还要多。
不过还好控制寄存器只有几个,大部分为数值寄存器。
(大家浏览下列寄存器时,注意和上面的结构图配合)贴这张图的目的仅仅在于告诉大家,16 位的寄存器大部分被分成两个8 位的寄存器了,操作的时候需要注意你的操作对象是8 位的还是16 位的。
在这里常用8 位寄存器来操作。
(以下如未特意声明,则全部为8 位寄存器)RTCCTL0 实时时钟控制寄存器0(r0 表示读为0)RTCTEIVE:实时时钟-时间事件中断使能0:禁止中断1:允许中断RTCAIE:实时时钟-闹钟中断使能,在计数器模式时被清除(RTCMODE=0)0:禁止中断1:允许中断RTCRDYIE:实时时钟读取准备中断使能0:禁止中断1:允许中断RTCTEVIFG:实时时钟-时间事件标志0:没有时间事件发生1:有时间事件发生RTCAIFG:实时时钟- 闹钟标志位,在计数器模式时被清除(RTCMODE=0)0:没有时间事件发生1:时间事件发生RTCRDYIFG:实时时钟读取准备标志位0:实时时钟不能被安全读取1:实时时钟能被安全读取RTCCTL1 实时时钟控制寄存器1(rw-(0)。
MSP430单片机定时器学习笔记
MSP430单片机定时器学习笔记
msp430 定时器学习笔记
_BIS_SR(LPM2_bits + GIE) //进入LPM3 低功耗模式和开总中断允许
中断
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A(void)
{
}
TACTL timerA 控制寄存器
TAR timerA 计数器
CCTL0 捕获/比较控制寄存器0
CCRO 捕获/比寄存器0(具有最高中断优先级别,单独使用一个中断向量) CCTL1 捕获/比较寄存器1
CCR1 捕获/比较寄存器1
CCTL2 捕获/比较寄存器2
CCR2 捕获/比较寄存器2
TAIV 中断向量寄存器
其中,定时器,CCR2,CCR1 三者共用一个中断向量
TimerA 输出模式:
输出模式0 输出模式:输出信号OUTx 由每个捕获/比较模块的控制寄存器CCTLx 中的OUTx 位定义,并在写入该寄存器后立即更新。
最终位OUTx 直通。
输出模式1 置位模式:输出信号在TAR 等于CCRx 时置位,并保持置位到。
MSP430定时器A
上次Cloud和大家一起学习完了MSP430的时钟配置,这一篇,我们来学习MSP430单片机的TimerA(定时/计数器A)。
MSP430单片机的TimerA具有非常强大的功能,相关的寄存器配置也相当复杂,Cloud花了好久才逐步理清学习思路,尤其是学习数据手册的相关描述。
在这里Cloud提醒大家,虽然现在网上有中文汉化版的数据手册,但Cloud阅读英文原版后对比发现还是英文原版对器件特性描述得更加清楚,而中文汉化版的省略掉了一些内容。
好吧,扯远了。
下面进入正题:一、MSP430的Timer结构首先让我们通过官方描述来初步了解一下MSP430单片机的Timer资源:定时器A是一个16位的定时/计数器。
定时器A支持多重捕获/比较,PWM输出和内部定时。
定时器还有扩展中断功能,中断可以由定时器溢出产生或由捕获/比较寄存器产生。
定时器A的特性包括:·四种运行模式的异步16位定时/计数器·可选择配置的时钟源·可配置的PWM输出·异步输入和输出锁存·对所有TA中断快速响应的中断向量寄存器MSP430G2553单片机共有两个TimerA,分别是Timer0A和Timer1A。
OK,零零总总说了这么多,大家一定带有很多的疑惑,比如什么叫“捕获/比较”等,这里Cloud先不作解释,会用才是王道。
我们呢先找来定时器A的结构图给大家初步了解一下定时器A的结构:我们先从上面部分开始解释。
中间红色的是一个16位的TimerA,TAR,这其实就是MSP430单片机内部的一个定时计数器了,类似于51中的TH0和TL0的合体。
既然可以拿来计时,那么肯定可以有时钟信号输入,让我们最左边黄色的框,是一个选择器,由上面的TASSEL来选择TACLK、ACLK、SMCLK、INCLK的其中一种时钟。
上次我们已经学习过ACLK和SMCLK,也知道如何配置这两个时钟了(这也是为什么先学习时钟的原因),另外两个是外部时钟源,其中TACLK可以由P1.0输入。
基于MSP430的定时器Timer
一、定时器 TImer_A 介绍 TImer_A 是一个具有多路捕获/比较寄存器的 16 位定时/计数器,主要有 TAxCTL,TAxR,TAxCCTLn,TAxIV,TAxEX0 几个寄存器。其中最主要 的是 TAxCTL 寄存器,它决定 TImer_A 的输入时钟信号,TImer_A 的工作模 式,Timer_A 的开启与停止,中断的申请等。中断可以来自定时器溢出或者 任意的捕获/比较寄存器 Timer_A 的特征包括: 具有 4 种工作模式的异步定时/计数器 可选择配置的时钟源 可配置的 PWM 输出功能 异步输入和同步锁存
在定时器工作在增计数模式或者增/减计数模式时,对 TAxCCR0 写 0 可以停止定时器。定时器可以通过对 TAxCCR0 写入一个非零值来重新启动 计数。在这种情况下,定时器从零开始计数。 4. 定时器模式控制 三、Timer_A 寄存器 1. Timer_A 控制寄存器(TAxCTL) 2. Timer_A 计数器(TAxR) 15~0 TAxR TAxR 位 15~0Timer_A 寄存器。TAxR 寄存器是 Timer_A 的计数器。
二、Timer_A 操作 1. 16 位定时/计数器 16 位定时/计数寄存器 TAxR,在每个时钟信号的上升沿做增一计数或减 一计数。TAxR 可以通过置位 TACLR 清除。Timer_A 机构图如下: 2. 时钟源的选择和分频 定时器时钟 TACLK 可以选择来自 ACLK、SMCLK 或者外部的
3. 捕获/比较控制寄存器(TAxCCTLn) 4. Timer_A 中断向量寄存器(TELx 位来选择。选定的时钟源可以直接到达定时 器,或者通过 IDx 位经过 2、4、8 分频后到达定时器,选定的时钟源可以通 过 IDEXx 进行 2、3、4、5、6、7 或者 8 分频。当 TACLR 置位时,定时 器时钟源分频器被复位。 3. 启动定时器 在 MC 》 {0} 同时时钟源被激活的情况下,定时器开始计数
MSP430_定时器Timer_A的讲解
MSP430_定时器Timer_A的讲解电子设计大赛准备之msp430单片机定时器Timer_ATimer_A定时器:注:MSP430有两个16位定时器Timer_A和Timer_B.二者基本相同。
主要有TACTL,TAR,CCTL0,CCR0,CCTL1,CCR1,CCTL2,CCR2,TAIV 几个寄存器。
其中最主要的是TACTL寄存器,它决定Timer_A的输入时钟信号,Timer_A的工作模式,Timer_A的开启与停止,中断的申请等。
定时器A大致可分为四个功能模块:计数器、比较/捕获寄存器0、比较/捕获寄存器1、比较/捕获寄存器2.计数器是主体,它是一个开启和关闭的定时器,如果开启它就是一直在循环计数,只会有一个溢出中断,也就是当计数由0xffff到0时会产生一个中断。
那怎么实现定时功能呢?这就要靠三个比较/捕获寄存器了以后用CCRx表示。
CCR0比较特殊,通过他可以改变计数器的最大计数值,也就是当计数器计数到CCR0的值时自动会将计数器清零。
但这需要设置相应的工作模式,模式列表如下:0——停止模式,用于定时器的暂停1——增计数模式,计数器计数到CCR0,再清零计数2——连续计数模式,计数器增计数到0xffff,再清零计数3——增/减计数模式,增计数到CCR0,再减计数到0当计数器计数到CCR0时,CCR0单元会产生一个中断。
同样当计数器计数到CCR1和CCR2时,两个单元也都会个产生一个中断。
这样我们可以通过定时器A得到三个定时时间了。
看程序中的定时器初始化模块。
CCTLx是相应比较/捕获寄存器的控制寄存器。
它可对比较/捕获寄存器进行设置,在这里只用到比较功能,也就是当计数到CCRx时产生中断,由于CCTLx 默认的是比较功能,所以一般也就只用到CCIE这个控制字,就是开启相应比较器的中断。
CCRx就是相应比较器的值。
下面介绍几个Timer_A的重要寄存器:TACTL寄存器:15~109876543210未用SSEL1 SSEL0 ID1 ID0 MC1 MC0 未用CLR TAIE TALFGSSEL_1 SSEL_0 是时钟源的选择0——TACLK,使用外部引脚信号作为输入1——ACLK,辅助时钟2——SMCLK,子系统主时钟 3——INCLK,外部输入时钟对TACTL进行模式设置的同时也开启了定时器,要停止只需把MC_0赋值给TACTL就可以。
MSP430学习笔记(1)看门狗
MSP430学习笔记(1)看门狗
1.MSP430 系列有丰富的定时器资源:看门狗定时器(WDT)、基本定时器(Basic Timer1)、定时器A(Timer_A)和定时器B(Timer_B)、实时时钟(RTC)等。
a)看门狗定时器:基本定时,当程序发生错误时执行一个受控的
系统重启动
b)基本定时器:基本定时,支持软件和各个外围模块工作在低频率、低功耗
条件下
c)实时时钟:基本定时,日历功能
d)定时器A:基本定时,支持同时进行的多种时序控制、多个捕获/比较功能和多种输出波形(PWM),可以硬件方式支持串行通信
e)定时器B:基本定时,功能基本同定时器A,但比定时器A 灵活,功能更
强大
2.看门狗定时器:
a)WDT 寄存器
a)计数单元WDTCNT:16 位增计数,由MSP430 所选定的时钟电路产生的固定周期脉冲信号对计数器进行加数,从开始进行到计数溢出为止。
WDTCNT 不能直接通过软件存取,必须通过看门狗定时器的控制寄存器WDTCTL 来控制。
b) 控制寄存器WDTCL
WDTCTL 由两部分组成:高8 位用作口令,低8 位是对WDT 操作的控制
命令。
要写入操作WDT 的控制命令必须先写入正确的口令。
口令为
5AH,错误将导。
基于MSP430单片机的实时时钟设计
基于MSP430单片机的实时时钟设计基于MSP430单片机的实时时钟设计是一个简单而有趣的项目,可以将当前的时间以数码管的形式显示出来。
本文将介绍如何使用MSP430单片机和数码管来实现实时时钟,包括时钟芯片、显示部分的接线和编程等方面。
首先,我们需要准备的材料和工具有:1. MSP430单片机开发板(例如MSP-EXP430G2 LaunchPad)2.DS1302实时时钟芯片3.4位共阳数码管(例如TM1640)4.杜邦线若干5.面包板6.12MHz晶振7.调试器和编程软件(例如MSP-FET430UIF和MSP430-GCC)接下来,我们开始进行实时时钟的设计。
1.硬件连接:a.将MSP430单片机开发板连接到计算机,并打开编程软件。
b.将DS1302实时时钟芯片插入面包板,并根据其引脚定义连接到MSP430单片机的端口。
c.将4位共阳数码管插入面包板,并根据其引脚定义连接到MSP430单片机的端口。
2.编程设计:a.在编程软件中创建一个新的项目,选择MSP430单片机的适当型号,并设置时钟频率为12MHz。
b.导入DS1302和TM1640的相关库文件,并进行必要的初始化设置。
c.配置MSP430单片机的端口,使其与DS1302和TM1640的引脚连接匹配。
d.编写程序代码,实现实时时钟的功能,包括获取当前时间、将时间转换为数码管的显示格式以及控制数码管进行显示。
3.调试和测试:a.将MSP430单片机从计算机中断开,并将其与电源连接,确保其正常运行。
b.观察数码管是否正确显示当前时间,包括小时、分钟和秒数。
c.如果有错误或不完善的地方,重新调试和修改程序代码,直到实时时钟正常工作。
通过上述步骤,我们可以成功地设计一个基于MSP430单片机的实时时钟(数码管显示)。
这个项目可以作为学习和实践嵌入式系统和单片机编程的绝佳机会,同时也可以作为一个有用和有趣的作品展示给别人。
这个设计还可以进一步扩展和改进,例如添加日期显示功能、设置闹钟功能等。
关于(单片机)msp430的时钟资料
关于(单⽚机)msp430的时钟资料msp430f5419/38学习笔记之时钟系统(2011-11-30 10:41:30)分类: msp430标签:msp430f541xmsp430f543xucs时钟系统注:msp5419/38中,如果你使⽤SMCLK做TIMER_A的时钟,那么进⼊低功耗3或低功耗4是不会把SMCLK关掉的,这点5系列和其他系列的不⼀样。
UCS模块是⼀个低成本超低功耗系统,通过选择使⽤3个内部时钟信号,⽤户可以得到性能和功耗的最佳平衡点。
UCS可以由软件配置其⼯作模式,如配置成:不需要任何外部器件、使⽤ 1或 2个外部晶振等。
⼀、时钟系统UCS模块具有5个时钟源:XT1CLK:低频/⾼频振荡器,既可以与低频 32768HZ钟振、标准晶振、外部振荡器,⼜可以与外部4M-32MHZ时钟源⼀起使⽤,XT1CLK可以作为FLL模块内部的参考时钟。
有些芯⽚XT1CLK只允许使⽤外部的低频晶振,具体可参考数据⼿册;XT2CLK:可选⾼频振荡器,可与标准晶振,振荡器或者 4MHZ~32MHZ外部时钟源⼀起使⽤;VLOCLK:内部低功耗、低频振荡器,频率典型值为10KHZ;REFOCLK:内部低频振荡器,典型值为 32768HZ,可作为 FLL基准时钟源;DCOCLK:可以通过 FLL来稳定的内部数字控制振荡器(DCO);DCOCLK经过 FLL分频后可得DCOCLKDIV。
UCS模块可以提供3种时钟信号:ACLK:辅时钟;MCLK:系统主时钟;SMCLK:⼦系统主时钟。
⼆、UCS操作PUC之后,UCS的默认配置模式如下:XT1CLK 选择LF模式下的XT1作为时钟源,ACLK 选择 XT1CLK 作为时钟源;MCLK 选择DCOCLKDIV作为时钟源;SMCLK 选择DCOCLKDIV作为时钟源;FLL操作使能,FLL基准时钟(FLLREFCLK)选择XT1CLK;XIN 和 XOUT作普通IO ⼝使⽤,禁⽌了 XT1 功能,直到 I/O ⼝重新配置为 XT1 模式;如果有 XT2IN 和XT2OUT,则⼀并配置为普通 IO ⼝,禁⽌ XT2 功能。
MSP430的TimerA练习实例[入门必学]
MSP430的TimerA练习实例[入门必学]微控设计网原创作品作者:DC版主MC430F11实验参考图片增计数模式工作示意图关于TA的详细原理,请到学习专区中查看我整理的TA资料。
此例程已在MC430F11实验板上验证过//利用MC430F11开发板实验的TimerA 增计数模式学习实验. //作者:微控设计网 DC版主#include <msp430x11x1.h>void main(void){WDTCTL = WDTPW + WDTHOLD; // 停止P1DIR |= BIT0+BIT2+BIT3; // P1.0,P1.2,P1.3为输出CCTL0 = CCIE; // CCR0中断允许CCR0 = 8000; // 为CCR0写入初值CCTL1 = CCIE; // 类同上...CCR1 = 6000;CCTL2 = CCIE; // 类同上...CCR2 = 4000;TACTL = TASSEL_1 + MC_1; // 设置TA工作模式// 时钟源=ACLK,工作在增计数模式_EINT(); //开总中断LPM0; //进入低功耗模式0}//**************************************************************************** // Timer A0 中断服务程序, A0是指CCR0#pragma vector=TIMERA0_VECTOR__interrupt void Timer_A0 (void){P1OUT ^= BIT0; // MC430F11板上的D1 LED闪烁}//**************************************************************************** // Timer A3 中断服务程序, A3是指CCR1,CCR2,TAR#pragma vector=TIMERA1_VECTOR__interrupt void Timer_A3(void){switch( TAIV ){case 2: P1OUT ^= BIT2; // CCR1break; // MC430F11板上的D2 LED闪烁case 4: P1OUT ^= BIT3; // CCR2break; // MC430F11板上的D3 LED闪烁case 10: // TARbreak;}}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P1OUT ^= 0x20;//通过异或取反P1.5
}
(3)按照IAR MSP430项目编译与JTAG仿真调试所讲述方法进行项目编译与JTAG调试运行,即可看到程序运行效果。
作者:时间:2007
//硬件连接:
//
//调试器:MSP430FET全系列JTAG仿真器
//调试软件:IAR Embedded Workbench Version:3.41A编译
//******************************************************************************
详细介绍请看MSP430功能模块详解系列之——TimerA。
四、操作步骤:
(1)按照IAR MSP430项目建立与JTAG仿真设置所讲述方法建立名称为M13x TimeA RTC的项目。
(2)将如下程序拷贝粘贴到main.c文件中。
//*******************************************************************************
MSP430单片机实践篇---MSP430单片机RTC操作-TimeA实现的实时时钟
一、学习要点:MSP430单片机中断编程;RTC(实时时钟)的实现;MSP430单片机低功耗控制(休眠)
二、程序执行效果:
观察MSP430F135核心实验板上的LED灯,每秒闪烁一次,实现RTC。如下图所示效果:
三、原理讲解:
// D13x Demo -利用Timer_A及中断实现RTC,观察LED灯的闪烁频率
//
//描述:利用Timer_A及中断实现RTC;通过P1异或来取反P1.5;
//系统处于休眠状态LPM3,中断时唤醒执行P1.5切换
// ACLK= n/a, MCLK= SMCLK= default DCO ~ 800k
P1DIR |= 0x20;// P1.5为输出口
TACTL |= MC0;// Timer_a为增量计数模式
_EINT();//开中断
for (;;)
{
_BIS_SR(LPM3_bits);//进入LPM3
}
}
#pragmavector=TIMERA0_VECTOR//Timer_A中断函数
__interruptvoidTimerA_ISR()
//
// MSP430F13x
// -------------------
// /|\| XIN|-
// | | | 32kHz
// --|RST XOUT|-
// | |
// | P1.5|-->LED
//
//时间:2007年10月
//
//
//硬件电路:MSP430F135核心实验板-I型
#include<msp430x13x.h>
voidmain(ຫໍສະໝຸດ oid){WDTCTL = WDTPW + WDTHOLD;//停止看门狗
TACTL = TASSEL0 + TACLR;// ACLK,清TAR
CCTL0 = CCIE;// CCR0中断使能
CCR0 = 16384;//设定中断间隔,32768Hz晶振,0.5s