使用Nano的板子测试,发现IO口中断延迟达到60us左右。
测试方法如下:将两个IO口短接,使用定时器产生一定周期的脉冲信号到其中一个IO口,另外一个IO口设置成下降沿中断模式,收到中断将第三个IO口电平翻转,发现第三个IO口的电平翻转比第一个IO口的翻转延迟了差不多60us样子,有人遇到过这个问题吗?
离线
是裸机测试的吗?上系统的话,应该会慢些吧
离线
使用Nano的板子测试,发现IO口中断延迟达到60us左右。
测试方法如下:将两个IO口短接,使用定时器产生一定周期的脉冲信号到其中一个IO口,另外一个IO口设置成下降沿中断模式,收到中断将第三个IO口电平翻转,发现第三个IO口的电平翻转比第一个IO口的翻转延迟了差不多60us样子,有人遇到过这个问题吗?
什么系统?裸机直接访问寄存器翻转IO口大约在0.3us。系统对中断的处理、IO口操作都有可能引入延迟。
离线
正好手上有F1C100S的板子,刚刚测试了一下中断响应时间,测试环境和结果如下:
测试硬件环境
F1C100S板子
SPI接口wifi模块RW007
逻辑分析仪
测试软件环境
RTOS:rt-thread
测试截图
说明
INT脚是wifi模块的中断产生引脚,CS是SPI主机的片选,拉低代表主机接收到中断准备开始接收数据了。
从图中可以看到这个过程只有10us左右,其中还包含了中断处理代码执行的时间
基本可以确定F1C100S的中断响应时间在10us以内
问题分析
楼主的软件测试环境是什么,linux??如果是linux有可能linux中断子系统处理的时间比较久,本人用的RTOS,实时性稍微高一些。
离线
回复小青蛙,我也是使用RTOS,难道还有其他别的配置?
离线
系统使用信号中断和外部设备同步,所以对实时反应要求比较高一些,谢谢各位。
离线
小青蛙的测试应该比较有说服力,自己再查查哪里有什么配置问题,感谢小青蛙提供的信息。
离线
你好,方便分享下IO外部中断部分程序配置吗,我直接寄存器配置的,不知道为啥就是不能触发中断,谢谢
离线
对这种响应时间 测试,对于操作系统,软件的写法 对 时间都有影响的。相对来说 ,裸奔测试 比较 准确点。
离线
你需要配置一下对应GPIO的外部中断时钟源位24M 中断速度就可以上去了,这是我测试的外部中断时间,默认32K时钟确实是60多us
离线
gpio的工作时钟可以切到高频24M、甚至APB时钟的
离线