在BeagleBone Black上设置快速(DMTimer-)中断

在BeagleBone Black上设置快速(DMTimer-)中断,timer,interrupt,beagleboneblack,bare-metal,isr,Timer,Interrupt,Beagleboneblack,Bare Metal,Isr,我尝试使用StarterWare在Beaglebone Black上进行一些裸机编程。使用黑色运行的所有修改都已经完成,我正在运行DMTimer示例,它运行得很好 在下一步中,我更改了这个示例,ISR只需切换一个GPIO(它只需要几十个时钟周期)。我将示例中的计时器和计时器重新加载计数更改为0xFFFF0F,它等于10个usec周期-因此应该每10个usec调用一次我的ISR 令人惊讶的是,这似乎是一个极限,当我使用更大的计时器值时,应该会导致更频繁的ISR调用,它仍然保持在这10个usec,甚

我尝试使用StarterWare在Beaglebone Black上进行一些裸机编程。使用黑色运行的所有修改都已经完成,我正在运行DMTimer示例,它运行得很好

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

令人惊讶的是,这似乎是一个极限,当我使用更大的计时器值时,应该会导致更频繁的ISR调用,它仍然保持在这10个usec,甚至5个usec在DMTimer示例中是不可能的。由于计时器时钟源CLK_M_OSC已经使用,所以这应该是好的

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

你是否尝试过调整(或禁用)定时器预分频器?我发现DMTimer示例使用了预分频器,直到我添加了行,我才得到它建议的行为(每700ms中断一次)

DMTimerPreScalerClkDisable(SOC_DMTIMER_2_REGS);
在那之后,它似乎工作正常

禁用预分频器后,重新加载计数器为0xFFFF06时应获得10ms,重新加载计数器为0xFFFF83时应获得5ms