7382|12

75

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

【求助】32K外部晶振不焊接ACLK时钟源仍能工作? [复制链接]

我用的是MSPf2121,前不久在修理一些坏板子的时候发现,板子上的外部晶振取下来后,用ACLK作时钟源的TimeA中断事件仍然被触发,通过仿真后发现确实进入TimerA中断函数中,并且IFG1中的OFIFG位也未被置1,请问这种现象如何解释?我的相关部分代码如下:
//初始化时调用函数,初始化DCO为8MHZ
void InitClk()
{
/*等待电压稳定*/
DelayN(30);

IE1 |= OFIE; /*Ena××e osc fault int (NMI)*/
BCS1_Fren_Addr=(uchar*)CALBC1_8MHZ_;
BCSCTL1 = *BCS1_Fren_Addr;
DCO_Fren_Addr=(uchar*)CALDCO_8MHZ_;
DCOCTL = *DCO_Fren_Addr;
}
//中断函数检测OSC 错误
#pragma vector=NMI_VECTOR
__interrupt void OscFault(void)
{
volatile uint uiCnt;
#ifdef ALARMLED
LedR_1;
#endif
do /* Loop until flag is clear*/
{
IFG1 &= ~OFIFG; /* Clear fault flag*/
for (uiCnt = 0xFFFF; uiCnt; uiCnt--); /* Delay for crystal to start*/
}
while (IFG1 & OFIFG); /* Test LF oscillator fault flag*/
IE1 |= OFIE; /* Re-ena××e osc fault int*/
#ifdef ALARMLED
LedR_0;
#endif
}
//TimerA初始化函数
void InitTimer()
{
uint uiResultInteger;
TACTL = TASSEL0 + TACLR + ID0; /*TimerAClock=ACLK ,divided by 2,clear TAR*/
TACTL |= MC0;
uiResultInteger = rand();
uiResultInteger &= 0x00ff;
CCR0 = (uiResultInteger + uiWorkFrequence)<<3; /*woke interval = (CCR0)*0.061ms */
CCTL0 |= CCIE; /*CCR0 interrupt ena××e*/
}

最新回复

在USER'S GUIDE 中,看看ACLK前的SELx有没有那个选项吧,149是貌似不行的  详情 回复 发表于 2012-7-17 08:42

点评

求同  详情 回复 发表于 2012-7-10 18:19
 
点赞 关注

回复
举报

91

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
自己顶一个,看user's guide上说MCLK的时钟源如果选择外部XT2,XT2失效后会自动切换到DCO,那是不是ACLK也会有LFXT1切换为其他的时钟源呢?
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
补充一点,我在初始化后进入了LPM3模式,按道理说这时即使TimerA的时钟源切换到DCO,也不应该工作,可是我通过仿真发现TimaA的TAR计数仍然在增长。
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
我将P2.0用作ACLK输出,发现仍然有大概频率为6.5K左右的方波输出,哪位高人帮忙解答一下啊?
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

5
 
晶振失效时,DCO接替.

TTimerA3中断函数据中,
////////TimerA初始化函数
void InitTimer()
{
uint uiResultInteger;
TACTL = TASSEL0 + TACLR + ID0; /*TimerAClock=ACLK ,divided by 2,clear TAR*/
TACTL |= MC0;
uiResultInteger = rand();
uiResultInteger &= 0x00ff;
CCR0 = (uiResultInteger + uiWorkFrequence)<<3; /*woke interval = (CCR0)*0.061ms */
CCTL0 |= CCIE; /*CCR0 interrupt ena××e*/
}///////////////////////


"TACTL = TASSEL0 + TACLR + ID0; "没有将TA的时钟源选为你想要的ACLK,TACTL仍为0,实际选了TACLK.
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
TACTL = TASSEL0 + TACLR + ID0; "没有将TA的时钟源选为你想要的ACLK,TACTL仍为0,实际选了TACLK.
不可能啊,TASSEL0 = 0x100,该位置一就是选择时钟源为ACLK。
而且user's guide上说的只有MCLK选择外部XT2失效时才自动替换为DCO,而ACLK的时钟源只有LFXT1和VLOCLK,但F2121没有VLOCLK,因此他只可能有一个来源,即外部的32K晶振
不知道对不?
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

7
 
TACTL = TASSEL0 + TACLR + ID0中,各量都为0(查看头文件中的定义)
因此TACTL不等于0x100,

TA有计数是因TACLK为TA的时钟源并且TACLK引脚上串入干扰,才计数.
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

8
 
21x1的头文件定义:
#define TASSEL1 (0x0200) /* Timer A clock source select 0 */
#define TASSEL0 (0x0100) /* Timer A clock source select 1 */
#define TACLR (0x0004) /* Timer A counter clear */
#define ID0 (0x0040) /* Timer A clock input divider 0 */
TACTL的第8、9位加起来为0b01
2xxx user's guide里面
TASSELx Bits
9-8
Timer_A clock source select
00 TACLK
01 ACLK
10 SMCLK
11 INCLK

说明我选择的时钟源是ACLK啊,你是不是将TASSEL0看成 TASSEL_0了?
而且按你的说法,我选择的是TACLK,可是为什么焊上晶振的板子上TimerA的输出是16.768KHz(通过示波器观察)呢,而不是串扰进去的信号呢?
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

9
 
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

10
 

回复 楼主 200fly 的帖子

求同
 
 
 

回复

327

帖子

0

TA的资源

纯净的硅(高级)

11
 
ACLK的源只有VLO或者外部低频晶振两种选择。
ACLK: Auxiliary clock. ACLK is software selectable as LFXT1CLK or VLOCLK. ACLK is divided by 1, 2, 4, or 8. ACLK is software selectable for individual peripheral modules
在晶振出错时failsafe到DCO的是WDT看门狗的时钟源。
10.2.5 Watchdog Timer+ Clock Fail-Safe Operation
The WDT+ module provides a fail-safe clocking feature assuring the clock to the WDT+ cannot be disabled while in watchdog mode. This means the low-power modes may be affected by the choice for the WDT+ clock. For example, if ACLK is the WDT+ clock source, LPM4 will not be available, because the WDT+ will prevent ACLK from being disabled. Also, if ACLK or SMCLK fail while sourcing the WDT+, the WDT+ clock source is automatically switched to MCLK. In this case, if MCLK is sourced from a crystal, and the crystal has failed, the fail-safe feature will activate the DCO and use it as the source for MCLK. When the WDT+ module is used in interval timer mode, there is no fail-safe feature for the clock source.
 
个人签名Python全文搜索引擎:<url>http://code.google.com/p/ming-search/</url>
 
 

回复

36

帖子

0

TA的资源

一粒金砂(中级)

12
 
如果外部的晶振一个都没接,ACLK频率为多少
还有定时器启动终段一定要在低功耗模式吗??
能不能给个在一般的模式下定时器还能工作,而且在中断至外的时候cpu还能执行其他程序的程序
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(中级)

13
 
在USER'S GUIDE 中,看看ACLK前的SELx有没有那个选项吧,149是貌似不行的
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

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