MSP430常见问题之看门狗及定时器类

发布者:RadiantDreams最新更新时间:2020-06-14 来源: eefocus关键字:MSP430  看门狗  定时器 手机看文章 扫描二维码
随时随地手机看文章

Q1. 定时器两个中断TAIE 和CCIE,有什么区别?两个中断的中断向量一样吗?

A1:TAIE 和CCIE指的是不同事件。TAIE指TAR 计数器溢出,从65535 到0 的变化,由TAIFG 引起的。CCIE指捕获到相应信号(捕获模式下);定时时间到(比较模式下)。由CCIFG引起的。两个中断的中断向量不一样,TAIFG 一般进TIMERA1_VECTOR;CCIFG 的话要看用的是哪个定时器如果是CCR0 的话就进TIMERA0_VECTOR,如果是CCR1,CCR2……则进TIMERA1_VECTOR。(中断向量的写法因器件不同而有所不同)


Q2 用F149 的定时器B 的捕捉功能, 遇到问题,在等待捕捉时,读取TBR 的值总是随机数。

A2:TBR 是一直再跑的,看TBCCRx。因为捕获事件发生时,硬件会自动把TBR 的值保存到TBCCRx 中。


Q3:想输出PWM,在中断响应后能改变PWM的频率吗?

A3:调整相应的定时器配置,PWM的频率和占空比都是可以改变的,不过周期频率一般都是由CCR0据顶的。


Q4:timerA 不能进入中断检查的一般思路?

A4:不能进入中断一般检查思路:

1:是否开所属模块中断和总中断

2:所属模块所用时钟是否有效

3:触发条件成立没?标志位是否置位。


Q5. MSP430F149关于时钟的问题

问题:时钟采用8MHz,那么执行for(i=0;i<980;i++);会花费多少ms?是不是1ms?另外,若是采用ADC12自带的时钟,在RC振荡器在5MHz,且不分频,执行一次采集(采样和转换)会花费多长时间?

A5:执行for(i=0;i<980;i++);这个得去看汇编看消耗了几个机器周期这样是看不出来的。当然一般的做法是把程序运行在仿真状态下,在执行执行for(i=0;i<980;i++)之前记下此时的CYCLECOUNTER(VIEW-->register)该语句执行完毕之后记下这时的CYCLECOUNTER,2者相减,在乘以MCLK的周期。若是采用ADC12自带的时钟,在RC振荡器在5MHz,且不分频:ADC12采样是12个ADC12CLK 外加一个ADC12CLK 用来把结果存到ADC12MEM。所以时间t=13*1/5M 秒。


 


Q6:430F149,中TACTL 中SCCI 是什么功能?

A6:Latched capture signal (read)处于捕获模式时,接入的信号状态0/1。


Q7:程序执行完成后,进入LPM3 模式,大约过3 秒钟之后,又再进入正常模式,即从LPM3退出,再一次从头开始执行程序,执行完成后,再一次进入LPM3 模式。如此往复循环下去。请问这个能不能通过定时器A来实现?

A7:能。

1、在主程序中完成初始化后进入LPM3 模式。

2、在LPM3 模式下,ACLK必须工作,并且TA选择ACLK为时钟源。

3、当TA 中断时,CPU 在进入TA中断服务前,会自动唤醒。

4、在TA 中断服务中调用要被周期性执行的程序。

5、从TA 中断服务返回后,CPU 又会自动恢复到中断发生前的LPM3 模式(即,主程序会永远停留在进入LPM3

模式的那条语句中程序)。


Q8:中断向量和中断标志寄存器的区别?

A8:IICIFG 是中断标志,指示是否产生中断。IICIV是中断向量,是中断代码的入口地址。MCU 首先查询是否有中断标志产生,如果有,再查询中断向量,转去执行中断服务程序。


Q249. 关于TIMERA 计数问题

用TIMERA 对外来脉冲计数,脉冲输入TACLK,读到的值总是不准,不知道各位有什么高招?TIMERA 益出有什

么好办法可以连续计数?

A10:

1、应该是漏计了,输入频率不是很高,最高也就是20KHZ。

2、TIMERA 我用的是连续计数到0XFFFF 后中断的方式,在溢出中断里累计中断次数。然后应用程序里面用溢

出次数*65535+TAR 值,就是连续计数值。


Q11:知道定时器可输出自定义占空比的PWM波,找了些参考程序看,大概是这样的

TACTL=TASSEL0+TACLR+MC0;

CCTL0=CCIE;

CCR0=360;

CCR1=327;

CCTL1=OUTMOD_2;

P2SEL |= BIT5;

这样是不是直接从P2.5端口输出PWM波,芯片不能工作在低功耗下啊?怎么样让芯片工作在低功耗,等有波形翻转时产生中断啊?

A11:OUTMOD_7 我推荐那样比较好计算指定占空比时CCR1 与CCR0 的值,这种情况下芯片可以工作在低功耗模式下只要你保证在该模式中你的TA 时钟源仍然开启就行,至于波形翻转这些都是硬件完成,无需CPU干预。


Q12:想用TA 的CCR0 定时中断,增记数模式,但我看书上的CCIFG0的设置只有在CCR0与TAR 的值相等时才置位,下一个周期马上又复位了。要是此时正在运行一条指令,那岂不是错过了进入中断了吗?

A12:CCIFG0 应该是响应了中断服务程序后才复位的或者用指令清除,不会错过的.。


Q13:MSP430 中断所需的最小输入脉宽是多少?

A13:最小中断脉宽必须大于1.5 主时钟周期(MCLK),以确保中断有效。有关问题请参阅器件特定的数据表。


Q14:430 在低功耗模式下, 是哪几个模式(LPM0,LPM1,LPM2,LPM3,LPM4) 下,还支持看门狗。LPM3,LPM4支持看门狗吗。

A14:在只有在LPM4 模式下,看门狗才关掉,其他模式下只要选择了看门狗模式,时钟会一直跑。


Q15:在某种模式下把看门狗使能,那么功耗将增加多少?

A15:这个定时器模块不会引起额外的功耗(lpm3 模式下,不论是否开启看门狗,系统耗电会低于1uA)。


Q16系统复位后,如何判断是看门狗引起的复位呢,还是上电引起的复位呢?能不能通过看门狗中断标记来判

断?是不是看门狗做定时器时才能使能看门狗中断控制位?

A16:看门狗引起复位会在标志寄存器中的WDTIFG 为1,而上电复位为0。


Q17:一般使用如下指令进行看门狗停止:WDTCTL = WDTPW + WDTHOLD; //关闭看门狗。那么看门狗打开是否可以采用指令:WDTCTL &= ~(WDTPW + WDTHOLD); //打开看门狗?

A17:需要理解WDTPW、WDTHOLD 的具体意思。这些都在头文件中的宏定义。WDTPW为寄存器访问密钥,如果写入错误的密钥,会产生复位;WDTHOLD为看门狗时钟关闭;寄存器WDTTMSEL选择看门狗是工作在定时器模式还是在看门狗模式,所以要打开看门狗应该WDTCTL = WDTPW + WDTTMSEL;具体定时时间可以看头文件,头文件中都有注释。


Q18在程序中间采用如下指令:WDTCTL = WDTPW + WDTCNTCL;//清开门狗,防止在程序正常运行中复位。是否正确?

A18:错误,程序一样会复位。WDTCNTL为清除计数器,WDTHOLD 为关闭计数器,两个寄存器的概念不一样,使用时需要注意。


Q19:用F149的定时器B 的捕捉功能, 遇到问题,在等待捕捉时,读取TBR 的值总是随机数,我用软件在线调试观察的。

A19:别读TBR。读TBCCRx 就OK了,捕获到信号时TBR的值自动复制到TBCCRX的值。


Q20我想输出PWM,在中断响应后能改变PWM的频率吗?

A20:调整相应的定时器配置,PWM 的频率和占空比都是可以改变的。CCR0 的值改变周期,CCR1(和输出对应的寄存器)改变占空比。


Q21使用MSP430 产生PWM 波形,一般抖动问题如何解决?

A21:提高时钟精度。


Q22中断向量和中断标志寄存器的区别?

A22:IFG 是中断标志,指示是否产生中断。IV 是中断向量,是中断代码的入口地址。MCU 首先查询是否有中断标志产生,如果有,再查询中断向量,转去执行中断服务程序。


Q23使用了Timer_B的单元1 和单元2测量频率,计数过程中发生的溢出中断,如何判断这个溢出中断是哪个单元产生的?

A23:TIMER_B 使用两个中断向量TBCCR0 中断向量CCIFG 和TBIV 中断向量。TBIV包含所有其他的CCIFG 和TBIFG。


Q24用430 单片机进行连续的数据采集,每次持续时间得几十秒,但是还要用单片机实现实时时钟功能,期间每秒都得进Timer 中断计时。这样势必会影响数据的连续采集。这种矛盾该怎么解决呢?

A24:数据采集启动后,有一定的时间才能完成AD 转换.这段时间内,CPU要么空转,要么进行时钟处理.因此我认为CPU干这两件工作完全胜任,只要:

1. 提高CPU 时钟到8MHz。

2. 用中断方式进行AD 及时钟处理,中断程序要高效小巧。

3.数据采集从微观上讲,并不是连续不停进行的(这是模拟电路的带宽及数据稳定所决定的),因此合理选择单位时间内AD 转换的次数。

4.要连续采集几十秒数据,单位时间内AD 转换的次数应与系统的数据存储空间大小一并考虑。


Q25一个TA 或TB 最多只能产生两个中断吗。要不是的话,中断向量表该怎么处理??

A25:应该说是两个中断向量地址,不能说产生两个中断。TA、TB 总4 个中断向量地址,TA、TB 各有两个,如TIMER_A 的比较模式采用CCR0、CCR1、CCR2 就可以产生三个中断,但中断入口只有两个,CCR0 占用一个,CCR1、CCR2、TAIFG 占用一个,通过中断标志来判断是那个中断源引起的中断。

关键字:MSP430  看门狗  定时器 引用地址:MSP430常见问题之看门狗及定时器类

上一篇:MSP430 中断优先级
下一篇:MSP430最基本的IO配置

推荐阅读最新更新时间:2024-11-06 19:07

MSP430单片机16 位定时器Timer_A 操作
/**********(一)定时器A 比较模式*************/ int main( void ) { WDTCTL=WDTPW+WDTHOLD; //关看门狗 BCSCTL1 =CALBC1_1M Hz ; //设定DCO 为1MHZ DCOCTL =CALBC1_1MHZ; P1DIR |=BIT0; //LED 使能 TACTL=TASSEL1+TACLR; //定时器A 时钟源为SMCLK,并清TAR CCTL0 |=CCIE; //CCR0 中断使能 CCR0 =50000; //计数值为50000 个SMCLK 周期 TACTL |=MC1; //启动定时器A 为连续计数模式 _BIS_SR(GIE+CP
[单片机]
STM32F030 systick滴答定时器
void Delay_Init(void) { SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);//systick时钟= HCLK/8 fac_us = SystemCoreClock/8000000; fac_ms = fac_us*1000; } void Delay_Us(uint32_t nus) { uint32_t temp; SysTick- LOAD = nus*fac_us; //时间加载 SysTick- VAL = 0x00; //清除计数器 S
[单片机]
MSP430 时钟设置(一)
1、在MSP430单片机中一共有三个时钟源: 一个LFXT1CLK,为低速/高速晶振源,通常接32.768khz,也可以接(400khz~8Mhz); 一个为XT2CLK,外接标准高速晶振,通常是接8Mhz,也可以接(400khz~8Mhz); 还有一个叫DCOCLK,为内部晶振,有RC震荡回路构成。 2、在MSP430单片机内部一共有三个时钟系统: 一个为ACLK,通常由LFXT1CLK作为时钟源,可以通过软件控制改时钟的分频系数树; 一个为MCLK(Main CLK)一听就知道是主时钟单元,为系统内核提供时钟,它可以通过软件从三个时钟源选择; 还有一个为SMCLK,称作辅助主时钟,也是可以由软件选择时钟源。
[单片机]
(ARM11 S3C6410)关于裸机串口与定时器
调试MCU经常需要用串口。 裸机前后台系统,基本就是基于定时器中断。 init.s 启动代码 Mode_USR EQU 0x10 Mode_FIQ EQU 0x11 Mode_IRQ EQU 0x12 Mode_SVC EQU 0x13 Mode_ABT EQU 0x17 Mode_UND EQU 0x1B Mode_SYS EQU 0x1F UND_Stack_Size EQU 0x00000400 SVC_Stack_Size EQU 0x00001000 ABT_Stack_Size EQU 0x00000400 FIQ_Sta
[单片机]
MSP430G2553单片机驱动TLC5540
#include msp430g2553.h #include stdio.h typedef unsigned char INT8U; typedef unsigned int INT16U; #define ADC_CTRL_DIR_PORT (P2DIR) #define ADC_CTRL_OUT_PORT (P2OUT) #define ADC_DATA_DIR_PORT (P1DIR) #define ADC_DATA_IN_PORT (P1IN) #define ADC_OE_BIT (BIT0) #define ADC_CLK_BIT (BIT1) #define ADC
[单片机]
MSP430 5xx/6xx 以REFO或XT1为时钟源的DCO编程实例
当MSP430 5xx/6xx 系列外部接入32768Hz的低频晶振时,满足不了需要高速运行的应用。所以需要通过MCU内部的DCO(数字控制振荡器)和FLL(锁相环)将低速时钟32768Hz进行倍频,达到需要的目标频率。 DCO是一个集成的数字控制振荡器。DCO频率可以通过软件使用UCSCTL1.DCORSEL、UCSCTL0.DCO和UCSCTL0.MOD位进行调整。DCO频率可由FLL选择性地稳定到FLLREFCLK/n的多个倍频。FLL可以接受由UCSCTL3.SELREF位选择的不同参考时钟源。参考时钟源包括XT1CLK、REFOCLK或XT2CLK(如果可用)。n的值由UCSCTL3.FLLREFDIV位(n=1、2
[单片机]
<font color='red'>MSP430</font> 5xx/6xx 以REFO或XT1为时钟源的DCO编程实例
sed1335的msp430程序
MSP430子程序(液晶控制器子程序) //------------------------------------------------------------ // Control SED1335 // TIme 2003.01.15 // Copyright 重庆东电 // FuncTIon show //------------------------------------------------------------ #define WC_ADD XBYTE #define WD_ADD XBYTE #define RD_ADD XBYTE #define RB_ADD XBYTE void IN
[单片机]
MSP430 大型数组 上电不启动
现象:程序烧录板子后,单片机不启动,卡死。注释掉部分字节数组后,才能运行。 分析: 这是IAR编译的方法,导致看门狗溢出了。MSP430单片机一上电看门狗就已经启动,但是在进入main()函数之前,软件会先初始化用到的一些数据,比如数组。如果数定义的比较大,初始化时间比较长,那就有可能导致看门狗溢出了,单片机复位,然后重启,再初始化,再溢出,再复位..程序永远也进不去主函数。 解决方法: 使用低级初始化函数:int __low_level_init(void) 。该函数会自动把低级初始化函数放在程序的最开始处,在此可以关闭看门狗,等低级初始化函数执行完之后,才会进行数据初始化,最后再进入main()函数。 vo
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved