0

HCS12 上的定时器输出比较中断有问题。问题似乎是我正在将计算值写入输出比较寄存器而不是立即数,即......

OCval = x + y ; ldd OC1, OCval ; // 我需要做什么

ldd OC1, #3000 ; // 什么工作

使用计算值,定时器中断是不稳定的,这在我的应用程序中是不可接受的。该问题已被牢牢地归结为在单个周期内访问定时器和 OC 寄存器的记录要求,除了立即写入之外的任何操作都违反了这一点。我还注意到网络上的所有示例代码都使用即时操作。

只是想知道是否有软件解决方法。我需要让计数器自由运行(即没有重置),因为还有其他输出与必须保持运行的立即写入进行比较。只需要计算我的两个中断。

软件修复会很好,因为我能看到的唯一其他选项涉及额外的硬件来处理动态时序,很混乱。TIA

4

1 回答 1

0

这有点试探性,但早期的测试令人鼓舞。我已经将有问题的中断从主定时器移到了模减计数器,它也提供了时钟中断。文档指出,设置计数寄存器遵循相同的单周期写入规则,但是我对主计时器的广泛测试表明,在计数器使用新设置运行一段时间之前,问题不太可能发生。新方法的优点是,在初始设置时间值时,一个值只需写入一次,这与需要每秒执行多次重写的主计时器不同。

如果有帮助,我会在写入之前停止计数器,然后重新启动它。

于 2017-08-03T04:16:34.453 回答