嵌入HCS12:计数器计时器和计算输出比较值

时间:2017-08-03 01:42:22

标签: timer embedded interrupt 68hc12

我遇到了HCS12上的定时器输出比较中断的问题。问题似乎是我将计算的值写入输出比较寄存器而不是immediates,即......

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

ldd OC1,#3000; //什么有效?

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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