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.

TimerA的捕获如果时钟不同步会导致什么结果来着?



记性差,糊涂了,问一下

手册中:

The capture signal can be asynchronous to the timer clock and cause a race condition. Setting the SCS
bit will synchronize the capture with the next timer clock. Setting the SCS bit to synchronize the capture
signal with the timer clock is recommended. This is illustrated in Figure 12-10.

竞争会出现什么结果?

  • Fuchong Wang, Synchronous capture模式下,捕获会合下一个Timer时钟信号同步,即在下一个Timer时钟信号时,才会置 the capture/compare interrupt flag (CCIFG) bit为1。若此时timer在stop mode, 则不会立即set CCIFG bit。此时如果capture event signal 比timer时钟快的话,可能会错过 overflow condition notification through COV bit。

    在Asynchronous capture模式下,capture event与Timer时钟异步,二者是独立的。即使此时timer是stop mode,一旦capture event发生,CCIFG bit就会置1. race condition 就是指这种紊乱情况的发生。

    关于Synchronous capture (SCS = 1)和Asynchronous capture (SCS = 0)的详细测试代码和分析,参见下列链接:

    http://processors.wiki.ti.com/index.php/MSP430_Timer_Compare

  • 谢谢Lina Lian

    现在好像看到您在社区的回复较多,我想大家应该对此会很感谢的

    这里还有一个问题,就是在异步模式下,那么TACCRx可能会读到什么样的值呢?如果捕获触发正好发生在定时器时钟脉冲边沿的时候呢?

    这种情况往往使用:就是利用CCISx选择GND和VCC来实现读取TAR值,那么这种情况下如果MCLK和定时器不是一种时钟源(例如定时器是ACLK),又是在使用异步模式情况下,那么会不会出现这种情况呢?

  • 在异步模式下,capture event与Timer时钟异步,二者是独立的。故当capture event事件发生时,CCIFG bit置1,TACCRx会把此时的TAR值记录下来。无论捕获发生在哪里都一样,即使没有定时器时钟沿也一样。


  • 您好,您前一个回答中,主要是讲的ccifg以及COV和同步异步之间的关系,特别是COV不注意阅读或者记忆力不强的人很可能不注意。不过我还是请教您一个问题,就是COV如果不软件清除是不是就不会再接受新的捕捉?我这个人比较喜欢算小,虽然我曾在一个应用中为保险软件清除了COV(不管可能不可能发生),但是对手册中(G2系列)的那个状态图不是很看得明白,请指点一下。

    不过按照指导手册中的图表,好像说竞争是指触发信号和定时器计数之间的竞争,当然我指的都是timerA,其它类型的也许不存在,因为没有用到,我就没花时间去查阅。

    手册中的图表我就不发了,我就发一本书中的截图:

    另外,在社区好像没法给您发邮件。好像现在大多数你们公司的都看不到联系邮件了,发起不了对话。

  • Fuchong Wang,

    即使COV置位了,那么此时存在CCRx中的值也是最新的捕获值,前一次的捕获值已经被覆盖了。COV就是用来告诉你这件事情的。

    我认为这个中文翻译,翻译的不正确啊。原文为:The capture signal can be asynchronous to the timer clock and cause a race condition. 我着实不认为这个race condition应该翻译成时间竞争啊。

    关于社区发邮件这件事情,一般我们都订阅了邮件,你直接回复了帖子,我们能收到邮件的。O(∩_∩)O~

  • 那么原文该怎么翻译呢,其中“and”一词着实令我捉摸不透,“捕捉信号可以与定时器时钟同步,and导致一个竞争的情况”,真不能理解。您能再说得详细些吗?

  • 我个人认为,这里的race condition不应该翻译成竞争情况,应该翻译成紊乱情况。详细解释如前面帖子介绍。就是“在Asynchronous capture模式下,capture event与Timer时钟异步,二者是独立的。即使此时timer是stop mode,一旦capture event发生,CCIFG bit就会置1. race condition 就是指这种紊乱情况的发生。

  • 明白了,谢谢您的解答