Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
RTT的中断响应是多长时间呀?
发布于 2012-06-05 23:10:01 浏览:8801
订阅该版
真是没搜到相关的测试帖和说明信息,请问有人能做个测试吗? 现在正在做RTOS的选择,真的挺想用RTT的。
查看更多
12
个回答
默认排序
按发布时间排序
bernard
2012-06-05
这家伙很懒,什么也没写!
>真是没搜到相关的测试帖和说明信息,请问有人能做个测试吗? >现在正在做RTOS的选择,真的挺想用RTT的。 --- 是ARM Cortex-M系列处理器吧。应该是中断触发,到执行中断服务例程的时间吧。 这块曾经想过,但是一直没想到比较好的测试方法,所以未有这部分的数据。一般的来说,应该是非常短,
lixun00
2012-06-06
这家伙很懒,什么也没写!
下面这个方法不知可不可以 初始化一个没有用到的的定时器,最小计数单位为0.1us 设定变量a统计最大中断延时值。初始化为0,并用finsh导出 设定数组l[最大中断嵌套],h[最大中断嵌套] l[当前中断]用于rt_thread_enter进入时取得计数器值 h[当前中断]用于rt_thread_quit进入时取得计数器值 最后t=h[当前中断]-l[当前中断] (注意溢出判断) if (t>a) a=t; 运行一段时间用finsh查看a的值是否就是或者接近最大中断响应时间呢? 试验下。 好像论坛草稿不能用:(
dfgeoff
2012-06-06
这家伙很懒,什么也没写!
定时器从0启动; 定时器计数到1000; 软件触发一个IO外部中断;(直接写入对应位的值就行) 进入中断第一条语句读取定时器值; 前后两次值相减。 这样测就行。循环个一万次,看最差情况就行。
bernard
2012-06-06
这家伙很懒,什么也没写!
>设定数组l[最大中断嵌套],h[最大中断嵌套] > >l[当前中断]用于rt_thread_enter进入时取得计数器值 >h[当前中断]用于rt_thread_quit进入时取得计数器值 >最后t=h[当前中断]-l[当前中断] (注意溢出判断) --- 这段看得不太明白。按照定时器触发中断的方式貌似可以,只是上面这段看不明白。 定时器触发中断方式: 例如启动一个1us的定时器,在中断服务程序中读取当前时间,然后减去上一个时间以及1us,这样就相当于是中断延时。然后系统持续运行,取最大的中断延时时间。
dfgeoff
2012-06-06
这家伙很懒,什么也没写!
>>>设定数组l[最大中断嵌套],h[最大中断嵌套] >> >>l[当前中断]用于rt_thread_enter进入时取得计数器值 >>h[当前中断]用于rt_thread_quit进入时取得计数器值 >>最后t=h[当前中断]-l[当前中断] (注意溢出判断) > >--- > > > >这段看得不太明白。按照定时器触发中断的方式貌似可以,只是上面这段看不明白。 > >定时器触发中断方式: >例如启动一个1us的定时器,在中断服务程序中读取当前时间,然后减去上一个时间以及1us,这样就相当于是中断延时。然后系统持续运行,取最大的中断延时时间。 --- “减去上一个时间以及1us”这样不行吧。假设上一次读到的是 t_old,这一次的是 t_now t_old 到 t_now之间除了 1uS,还有退出中断,定时器复位等所耗费的时间呢,并不是中断延时时间。
lixun00
2012-06-06
这家伙很懒,什么也没写!
是。h数组无意义。 我的意识是这样的。 因为RT-Thread支持中断嵌套。 而中断函数一般的写法为: /* enter interrupt */ rt_interrupt_enter(); //应用程序代码 ``` /* leave interrupt */ rt_interrupt_leave(); /** * This function will be invoked by BSP, when enter interrupt service routine * * @note please don't invoke this routine in application * * @see rt_interrupt_leave */ void rt_interrupt_enter(void) { rt_base_t level; RT_DEBUG_LOG(RT_DEBUG_IRQ, ("irq comming..., irq nest:%d ", rt_interrupt_nest)); level = rt_hw_interrupt_disable(); rt_interrupt_nest ++; rt_hw_interrupt_enable(level); } /** * This function will be invoked by BSP, when leave interrupt service routine * * @note please don't invoke this routine in application * * @see rt_interrupt_enter */ void rt_interrupt_leave(void) { rt_base_t level; RT_DEBUG_LOG(RT_DEBUG_IRQ, ("irq leave, irq nest:%d ", rt_interrupt_nest)); level = rt_hw_interrupt_disable(); rt_interrupt_nest --; rt_hw_interrupt_enable(level); } ```
lixun00
2012-06-06
这家伙很懒,什么也没写!
可见 只要我们在进入时得到定时器计数器值l 退出时得到定时器计数器值h 那么两者之差就是中断执行时间 至于进入和退出的时间完全可以算出来。 取得计数器值,这个也是可以算出来的
lixun00
2012-06-06
这家伙很懒,什么也没写!
>>>>>设定数组l[最大中断嵌套],h[最大中断嵌套] >>> >>>l[当前中断]用于rt_thread_enter进入时取得计数器值 >>>h[当前中断]用于rt_thread_quit进入时取得计数器值 >>>最后t=h[当前中断]-l[当前中断] (注意溢出判断) >> >>--- >> >> >> >>这段看得不太明白。按照定时器触发中断的方式貌似可以,只是上面这段看不明白。 >> >>定时器触发中断方式: >>例如启动一个1us的定时器,在中断服务程序中读取当前时间,然后减去上一个时间以及1us,这样就相当于是中断延时。然后系统持续运行,取最大的中断延时时间。 > >--- > > > >“减去上一个时间以及1us”这样不行吧。假设上一次读到的是 t_old,这一次的是 t_now >t_old 到 t_now之间除了 1uS,还有退出中断,定时器复位等所耗费的时间呢,并不是中断延时时间。 --- 退出中断这个时间可以算出来,基本上可以认为是固定的。 定时器初始化后,就不要定时器复位的。 只是要简单的取得cnt值,判断大小相减就可以
lixun00
2012-06-06
这家伙很懒,什么也没写!
上面是概念错误。 只是测试了中断里的中断时间 没有测试出中断响应时间 但是可以这样近似认为: 中断响应时间主要是有中断里中断时间觉得的,特别是RT-Thread的 rt_hw_timer_handler 的执行时间 至于我们自己的中断处理程序时间,这个肯定就不好控制,也不在这个测试范围之内
dfgeoff
2012-06-06
这家伙很懒,什么也没写!
>上面是概念错误。 > >只是测试了中断里的中断时间 > >没有测试出中断响应时间 > >但是可以这样近似认为: > >中断响应时间主要是有中断里中断时间觉得的,特别是RT-Thread的 > >rt_hw_timer_handler 的执行时间 > >至于我们自己的中断处理程序时间,这个肯定就不好控制,也不在这个测试范围之内 --- “中断响应时间主要是有中断里中断时间觉得的”这句话有点费解,是不是说: 中断响应时间主要是有中断里中断时间决定的? 但,“中断里中断时间”指什么,还是有点不理解。 我说的“中断响应时间”就是:从中断发生(硬件状态位置位)到进入中断第一条语句执行之间的时间。 如果这个时间的最差值会超过一定阈值(比如10uS),那么有些紧急处理就不能在OS里做。
撰写答案
登录
注册新账号
关注者
0
被浏览
8.8k
关于作者
dfgeoff
这家伙很懒,什么也没写!
提问
1
回答
3
被采纳
0
关注TA
发私信
相关问题
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
rt-thread 小内存算法源码分析
2
env中添加lvgl软件包后,keil编译包--c99错误
3
【NXP-MCXA153】 定时器驱动移植
4
GD32F450 看门狗驱动适配
5
【NXP-MCXA153】看门狗驱动移植
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
红枫
8
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
12
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部