2371892_zh-CN

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2371892_zh-CN

2371892_zh-CN

LPC845 PINT 中断延迟

你好

我正在开发一个有严格限制的应用程序。

我的问题与 PINT 延迟有关。据我了解,Arm Cortex M0+ 中断的典型延迟时间约为 15 个时钟周期。我的时钟频率为 30Mhz。

因此,我希望延迟时间在 0.5 到 1uSec 之间。

我测量了信号和中断之间的时间,在中断头之后立即撬起一个引脚,实际上我得到了 7uSecs 的时间。

在检查汇编程序时,我只看到中断头部有几条指令(不到 10 条)。

PINT 中断是唯一一个优先级为 0 的中断。

这是正常现象还是我做错了什么?

感谢所有回答问题的人、


Re: LPC845 PINT Interrupt latency

你好@carlos_o,感谢您的回答。

我使用的是定制硬件。我使用 2400Hz 的方波发生器进行测量,输出连接到 LPC 的一个引脚。进入 irq 的第一条指令会改变另一个引脚的状态。比方说,我有一个带有两个探头的示波器:一个在输入引脚上,另一个在输出引脚上。我测量的是两条战线之间的时间差。

我真的弄丢了 IRQLATENCY 寄存器!谢谢你指出来。实际上,它的默认配置是 0x10。

引脚中的输入滤波器被禁用,但我激活了磁滞。

据我所知,GPIO 的管理频率与内核相同,改变引脚状态需要一个周期。我想输入也是如此。我有一个问题:从数据表来看,似乎GPIO绕过了总线,直接连接到内核,但是指令和数据访问需要总线。那么,如果 DMA 使用总线进行突发传输,中断能否延迟?

谢谢

Re: LPC845 PINT Interrupt latency

你好@xs_graziano

感谢您的来信

你能确认一下你是否在使用定制主板吗?如果不是,请说明您使用的是哪个主板。

请分享你是如何测量触发中断的时间的。

您是否修改过 IRQLATENCY 寄存器?

BR

卡洛斯

Re: LPC845 PINT Interrupt latency

我又做了一些检查。将引脚设置为高电平再立即设置为低电平需要 4 条 asm 指令,总共最多 5 个时钟周期。我得到了 255 nSecs,这与 20Mhz 的时钟频率相匹配(我的预期是 160 nSecs)。

所以,我把主时钟设置为别针上的时钟,而且我的示波器上有一个清晰的 30Mhz。

系统配置为 30Mhz FRO 作为主时钟,SYSAHBCLKDIV 设置为 1(一),因此没有分频。

如果主时钟在时钟输出端(通过 SYSCON 连接)显示为 30Mhz,那么它的内核运行时钟频率也可能较低?

还是有什么东西拖慢了核心的运行速度?

...我想我找到了问题的部分原因:FLASH 的访问时间拖慢了内核的运行速度。更改闪存访问时间会带来很大的改进。

但我没有在数据表中看到任何关于最短保证访问时间的细节,也没有看到它的条件。

如果说指令时间有所改善,那么中断延迟则有所改善(现在为 5uSec,闪存的访问时间为 2 个系统时钟),但仍与预期相去甚远。



Re: LPC845 PINT Interrupt latency

7 µs 的延迟(在 30 MHz 时约为 210 个周期)超过了内核的 15 个周期的理论最小值,这主要是由于外设总线同步、GPIO 输入毛刺滤波器和内存等待状态,而不是内核执行时间。引脚中断 (PINT) 需要多个外设时钟周期才能将异步外部信号与系统时钟同步,此外,如果代码或向量表位于闪存而不是 RAM 中,还可能存在总线仲裁延迟和闪存延迟。

タグ(1)
評価なし
バージョン履歴
最終更新日:
2 週間前
更新者: