0

我尝试使用 StarterWare 在 Beaglebone Black 上进行一些裸机编程。与 Black 一起运行的所有修改都已完成,我正在运行运行良好的 DMTimer 示例。

在下一步中,我改变了这个例子,ISR 只是切换一个 GPIO(它应该只需要几十个时钟周期)。我将示例的计时器和计时器重新加载计数更改为 0xFFFFFF0F,它等于 10 微秒周期 - 所以我的 ISR 应该每 10 微秒调用一次。

令人惊讶的是,这似乎是极限,当我使用更大的计时器值时,这应该会导致更频繁地调用 ISR,它仍然停留在这 10 微秒,即使使用 DMTimer 示例也不可能达到 5 微秒。由于已经使用了定时器时钟源 CLK_M_OSC,所以这应该没问题。

那么......知道如何更快地调用 ISR 吗?

4

1 回答 1

1

您是否尝试过调整(或禁用)定时器预分频器?我发现 DMTimer 示例使用了预分频器,并且在添加该行之前我没有得到它建议的行为(每 700 毫秒中断一次)

DMTimerPreScalerClkDisable(SOC_DMTIMER_2_REGS);

在那之后,它似乎工作正常。

在禁用预分频器的情况下,重载计数器为 0xFFFFFF06 时您应该获得 10ms,或者重载计数器为 0xFFFFFF83 时您应该获得 5ms。

于 2014-02-06T16:53:50.267 回答