我尝试使用StarterWare在Beaglebone Black上进行一些裸机编程。使用Black运行的所有修改都已完成,我正在运行DMTimer示例,该示例效果很好。
下一步我改变了这个例子,ISR只是切换一个GPIO(它只需要几十个时钟周期)。我将示例的定时器和定时器重载次数更改为0xFFFFFF0F,等于10 usec period - 所以我的ISR应该每10次调用一次。
令人惊讶的是,这似乎是极限,当我使用更大的计时器值,这将导致更频繁的ISR调用时它仍然保持在这10个usec,甚至5个usec也不可能与DMTimer示例。由于定时器时钟源CLK_M_OSC已被使用,所以这应该没问题。
那么......任何想法如何更快地调用ISR?
答案 0 :(得分:1)
您是否尝试过调整(或禁用)定时器预分频器?我发现DMTimer示例使用预分频器,我没有得到它建议的行为(每隔700ms中断),直到我添加了行
DMTimerPreScalerClkDisable(SOC_DMTIMER_2_REGS);
之后,它似乎正常工作。
如果禁用预分频器,则重载计数器为0xFFFFFF06或重载计数器为0xFFFFFF83时,应为10ms。