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常见问题之工作模式和功耗类
Q1:1,MSP430进入LP 模式后,CPU 停止运行,那么,进入中断执行退出后,由于SR的恢复,导致还处于LP 模式,是否意味着,CPU 在退出中断后立即停止了呢?2,也就是说,进入LP 模式后, ...
- [ZigBee] 12、ZigBee之看门狗定时器——饿了就咬人的GOOD DOG
引言:硬件中的看门狗,不是门卫的意思,而是一只很凶的狗!如果你不按时喂它,它就会让系统重启!这反而是我们想要的功能~ 1.看门狗概述 看门狗定时器(WDT,Watch Dog Timer)是单片机的一 ...
- S3C3440看门狗驱动程序
S3C3440看门狗驱动程序 http://www.cnblogs.com/lfsblack/archive/2012/09/13/2684079.html 看门狗是当CPU进入错误状态后,无法恢复的 ...
- MSP430的看门狗常见用法以及中断函数的书写方法
今天下午看了一下MSP430的看门狗的基本用法 看门狗是为了防止程序跑飞而设定的,但是由于看门狗是一个类似于定时器,因此可以把他当作定时器来使用 示例代码:用看门狗定时器使一个led闪烁 #inclu ...
- MSP430常见问题之开发工具类
Q1:我自己做了一块MSP430F149的试验板,以前用下载线进行调试没有出现过问题,但是,最近我每次make后用下载线调试时,总是弹出一个窗口,给我提示:Could not find target ...
- 给NIOS II CPU增加看门狗定时器并使用
给NIOS II CPU增加看门狗定时器并使用 配置看门狗定时器: 设置计时溢出时间为1秒 计数器位宽为32位 勾选No Start/Stop control bits 勾选Fixed perio ...
- MSP430常见问题之复位系统类
Q1:请问msp430 怎么手动复位啊?是不是连到RST/NMI 上?但是这个脚不是和JTAG 连吗?我看到一些资料上说复位的话还要上拉电阻或者复位电路.A1:JTAG 功能只在下载程序时候使用,正常 ...
- MSP430看门狗
其实430的看门狗,与51的大同小异,都是为了防止程序跑飞而出现不可预知的错误而专门设定的,所以说,看门狗的应用,是项目马上要进行实际应用中必须要进行的一环,也是电子工程师必须掌握的一环,下面介绍一下 ...
- S5PV210时钟,看门狗定时器
晶振:时钟源(操作主要有两个,倍频,分频) A8的时钟源: 时钟域,每个时钟域(不同的最高频率和最低频率)管理着不同的电路模块: 不同的时钟域对应不同电路模块表 时钟电路:懂得看时钟电路(时钟源选择开 ...
随机推荐
- html5 标签
按字母顺序排列的标签列表 4: 指示在 HTML 4.01 中定义了该元素 5: 指示在 HTML 5 中定义了该元素 标签 描述 4 5 <!--...--> 定义注释. 4 5 < ...
- Windows下cmd的替代软件——PowerCmd
Powercmd 是一款运行在windows下的cmd增强软件(A Better Command Prompt Replacement Tool),当前最新的版本为2.2. 官方提供试用版,貌似没有功 ...
- 问题-XE8报Object factory for class{xx-xx-xx-xx-xx} is missing. To register it, you can drop component[TFDGUIxWaitCursor] into your project.
问题现象:XE8开发数据访问程序时放入了FDPhysMSSQLDriverLink1.FDConnection1.FDConnection1.FDQuery1.DBGrid1,设计期没法,运行期报&q ...
- HDU 5813 Elegant Construction (贪心)
Elegant Construction 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5813 Description Being an ACMer ...
- 宏_CRTIMP分析
CRTIMP是C run time implement的简写,C运行库的实现的意思. 作为用户代码,不应该使用这个东西. 该参数决定 运行时 到底用 动态链接库 还是静态链接 #ifndef _CRT ...
- hdu 2824 The Euler function
The Euler function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- C#自定义控件的开发:Pin和Connector
C#自定义控件的开发:Pin和Connector 2009-08-03 14:46 wonsoft hi.baidu 我要评论(0) 字号:T | T 本文介绍了如何使用智能设备扩展C#自定义控件. ...
- Display:Block
根据CSS规范的规定,每一个网页元素都有一个display属性,用于确定该元素的类型,每一个元素都有默认的display属性值,比如div元素,它的默认display属性值为“block”,成为“块级 ...
- Vue2.0表单校验组件vee-validate的使用
vee-validate使用教程 *本文适合有一定Vue2.0基础的同学参考,根据项目的实际情况来使用,关于Vue的使用不做多余解释.本人也是一边学习一边使用,如果错误之处敬请批评指出* 一.安装 n ...
- shape中的属性大全
首先,看看事例代码 <shape> <!-- 实心 --> <solid android:color="#ff9999"/> <!-- 渐 ...