【问题标题】:Set up fast (DMTimer-) Interrupt on BeagleBone Black在 BeagleBone Black 上设置快速 (DMTimer-) 中断
【发布时间】:2013-12-01 17:21:36
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: timer interrupt beagleboneblack bare-metal isr


    【解决方案1】:

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

    DMTimerPreScalerClkDisable(SOC_DMTIMER_2_REGS);
    

    之后,它似乎可以正常工作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-27
      • 2016-06-23
      • 2015-08-29
      • 1970-01-01
      • 1970-01-01
      • 2018-02-19
      相关资源
      最近更新 更多