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.

MSP430 g2553如何让timer经过一段长时间才进入中断

g2553的timer都是16bit的,请问如果想实现经过较长时间才进入中断的功能,比如每5分钟进一次中断,能用这种16bit的timer实现么?如何实现呢?是否需要组合成一个32bit的timer才能实现?

  • 不能,你只能用一个软件变量来记录TIMER的中断次数,从而达到MIN级别的定时处理。

  • 非常感谢你的回答。

    但是我现在的问题是,打开这个timer之后(即使把timer的周期设为最大65535),就有可能导致另一个timer发送pwm信号在接收端无法正确解析,关掉第一个timer之后,pwm的解析就正常了。所以我怀疑是第一个timer频繁进入中断导致pwm信号的时序出现问题。如果timer无法达到min级别的定时处理,这样的问题该如何解决呢?

  • 您好,

    如果你需要长时间的定时。

    可以使用一个Timer,然后你使用1个或者多个变量,或者long型或者int型。

    定时器每次计数中断之后变量加一,累加到一定时间,软件确认是否达到定时。

    希望我的回答可以帮到您。

  • hi, Xue,

    用前面几位提到的软件方式是比较可行的。

    要达到TimerA最大的定时中断时间,可以从两方面入手

    1)最低的Timer的时钟源频率,要把预分频系数都设置到最大(/64)。     TimerA CLK =  ACLK  / 8  /8= VLO CLK /64 = 187.5hz 

    2) 设置timer到最大的溢出时间 (工作在continuous mode,溢出时间 = 65535 * Timer时钟源周期)

    结合1)和2),基本可以做到 分钟级。

    但是VLO非常不准,所以作为时钟源会有很大误差。

    Regards,

    Jason

  • 好回答~学习了

  • Xue,

    两个Timer应该是互相独立运行的。不应该有干扰。

    “所以我怀疑是第一个timer频繁进入中断导致pwm信号的时序出现问题”

    ---这个很有可能是Timer的中断标志没有被清除造成的反复重入,注意要在Timer的中断服务子程序中手动清除timer 中断标志位。


    Regards,

    jason

  • 这确实是个好方法,非常感谢

  • 好的,我会试试,谢谢