暂停SAMD21 TCC计数器

时间:2019-01-14 13:13:04

标签: atmel samd21

Atmel SAMD21 TCC外设提供了一个STOP命令,该命令使计数器暂停。可以使用RETRIGGER命令恢复计数器。

发出STOP指令后,TCC进入故障状态,在该状态下,输出将变为三态或驱动为配置寄存器中指定的状态。大概该机制旨在支持固定的故障安全输出状态。

在我的情况下,我希望输出引脚冻结在STOP命令时的状态。我能看到的唯一方法是每次更新输出时都要更新配置的故障输出状态寄存器-需要中断处理,这会破坏许多TCC输出波形扩展架构的目的,而且是我宁愿避免处理负荷。还有其他一些复杂问题,例如考虑停滞时间机制以及硬件/软件竞赛。

因此,我一直在寻找不涉及STOP命令的方法来实现此目的-但我看不到任何其他停止计数器的方法。无法门控外设时钟输入,并且由于它也运行TCC1,因此在GCLK中将其禁用是无法排除的。 (而且谁知道这还会带来什么其他影响。)取反ENABLE位,尽管过大,但也使输出处于三态也就不足为奇了。以其他各种方式修改配置通常需要写入启用保护的寄存器,因此需要先禁用外设。

(我还没有调查过的一个想法是从事件系统驱动计数器,而是控制事件的生成/门控。)

那么:有什么方法可以在保持输出引脚状态的同时暂停外设的当前状态?

1 个答案:

答案 0 :(得分:0)

我能想到的就是异步“ COUNT”事件,听起来像 是计数器时钟的门。

(页码摘自03/2016手册)

31.6.4.3。事件,第712页; 在异步事件的活动状态期间进行计数(递增或递减,取决于计数器方向)。在这种情况下,只要事件处于活动状态,计数器就会在预分频时钟的每个周期递增或递减。

31.8.9。事件控制,第734页; EVCTRL寄存器, 位2:0 – EVACT0 [2:0]:定时器/计数器事件输入0动作 0x5 COUNT(异步)依靠异步事件的活动状态

缺点是软件事件必须是同步的。