我使用两个容差更小的不同器件间接测量了两个 LAUNCHXL (79D 和77S)上的外部10MHz 振荡器。 两个振荡器都略高于其规格、但只要它们在整个时间内相对一致、这是可以的。 我所好奇的是对这一点进行补偿、这样我仍然可以有一个非常精确的 CPU 计时器来驱动一切-因为 LaunchPad 直接连接到我用于测量振荡器频率的器件。
这是基本问题。 其中一个 LAUNCHXL 的运行 频率为199,993,099.01Hz (SYSCLK)、因此如果我需要1Hz 计时器、它将是(199993099-1)的 PRD、这将在一年内产生1ms 的误差(显然参考时钟甚至不是这样精确、 但这是一个示例)。 但是、由于我需要一个10、000Hz 的计时器、所需的 div 将为19、999.31、四舍五入到(19999-1)-这将以更快的速度累加误差:每64.5秒损失1ms。 不可怕,但我想进一步降低,因为它将一次运行1-2小时。
我想的是使用第二个计时器(Timer1)定期复位第一个计时器(timer0)。 因此、如果我使用减速计时器来添加或减去/重置 timer0的值-可能是一个固定但预先计算的值、或者使用64位 IPC 计数器来精确跟踪它。
我只是想知道这是否可行。 如果 Timer1 ISR 只是在 timer0的寄存器上操作的准中断、这是否可以确定性地完成?