This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430G2553:ACK 问题

Guru**** 2539500 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/906018/msp430g2553-ack-problem

器件型号:MSP430G2553

大家好、

我对 MSP430非常陌生。

 我创建了一个小型程序:

int main (空)

WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器


P2OUT = 0x00;

P2DIR |= 0x02;

CCTL0=CCIE;
TACCR0 = 62500;
TACTL=tassel_2| ID_3 |MC_1 |TAIE;


enable_interrupt ();

while (1){


返回0;

#pragma vector=TIMER0_A0_VECTOR

_interrupt void Timer_A (void){
P2OUT ^= 0x02;
TACTL &=~TAIFG;

如果我使用 SMCLK、程序工作正常、但当我想使用 ACLK (Tassel_1)时、程序不工作。 我发现可能需要更改为 ACK= VCO、因此我放置以下内容:

BCSCTL3 |= LFXT1S_2;

输入后、它开始工作几秒钟、但此后它通过"ISR 陷阱"跳转到无限状态。 我通过以下方式解决了这个问题:

IFG1 &=~OFIFG;  

但经过几秒钟后、它仍然会进入无限状态。 很少见的情况是、如果我在中断中放置一个断点、它在我单击以运行时一直工作正常。  这是否是时间问题?

谢谢、此致、

维克多

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    >TACTL=tassel_2| ID_3 |MC_1 |TAIE;

    在此处删除 TAIE。  为了使用它、您需要提供一个额外的 ISR (TIMER0_A1_Vector)。 [参考 F2用户指南(SLAU144J)第12.2.6节]

    您不需要它、因为您已经有 CCTL0:CCIFG、这几乎是同时发生的。 因为它们几乎同时发生。 您成功(意外)使用了更快的时钟。 当您减慢时钟速度时、分频时间会变长、因此您过早清除 TAIFG。

    请尝试:

    >TACTL=tassel_2| ID_3 |MC_1;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Bruce、您好!

    感谢你的帮助。 它的工作原理。 但我还有另一个小问题。 如果我查看用户指南、  

    BCSCTL3 |= LFXT1S_2等于 VCO (12kHz? 如果我不崇拜)和  

    BCSCTL3 |= LFXT1S_0等于32KHz 时钟。  

    使用32K 时钟、并将以下内容输入:

    TACTL=tassel_1| ID_0 |MC_1  

    TACCR0 =32000;(如果我的凝结不正确、频率为1Hz)

    LED 在1秒内闪烁超过6次、此时应每1秒闪烁一次。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您尚未介绍您的平台。 如果您使用的是 Launchpad (G2或 G2ET)、但尚未进行任何焊接、则没有32kHz 时钟。 另一方面、内置了 VLOCLK (12kHz +/- 60%)。

    tassel=2请求 SMCLK、SMCLK (基于您之前的代码)从 DCO 以模糊的1MHz 速度运行。 因此、当 Id=3 (/8)时、我预计1MHz/8/32000=~4 ISR 调用/秒 每个 ISR 调用都是 LED 周期的一半、因此我希望以~2Hz 的频率闪烁。 听起来是对的吗? 通过增加 CCR0、您可以获得高达~1Hz 的频率。