问题标签 [isr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
time - 如何测量 ISR 执行时间?
我在 linux 内核 2.6.32 上。我面临一个问题,其中两个 ISR(串行和以太网)之一在几次/在我不知道的某些情况下需要更多时间(数百微秒)。我想每次执行 ISR 时都获得时间差。
什么是最好的方法(就所涉及的开销而言最便宜)。我没有看到 ARM 架构有一些 TSC 寄存器(read_tsc api),它可以让我直接访问时间,因为它在其他架构上提供。
所以想法是1)调用ISR的那一刻测量时间2)ISR完成的那一刻测量时间。3)获得1和2的差异将其存储在某个变量中。4) 继续执行步骤 1 到 2,当步骤 3 中收到的值大于过去的值时,将其覆盖(保持/保留最大延迟的值)。当问题发生时(一些突然的条件打印值)或最后 10 个值的数组)。
我需要在内核驱动程序中做,所以让我知道什么是最便宜的方法。
c - 将结构传递到 ISR
我正在使用 Hi-Tech-PICC v9.65PL1 用 C 语言对 PIC16F876 进行编程。
对于中断,我使用以下结构:
我试图弄清楚如何将对象传递到 ISR。我知道我可以简单地将对象设为全局变量,但这不是重点。我已经看到它在 C 中使用另一种架构完成。由于我使用的是 C,所以当我说一个对象时,我指的是 typedef 结构,例如:
我的目标是让 ISR 改变 clock_t 结构中的“状态”。
有人可以解释一下这样做涉及到什么吗?
stack - 为什么堆栈成为微处理器中断服务的 FILO 结构很重要?
我试图了解堆栈及其实现,但最困扰我的是“为什么堆栈成为微处理器中中断服务的 FILO 结构很重要?” 在我理解堆栈概念之前,我需要先了解什么。谁能给我一个全面的解释。谢谢
linux - 在linux中找到最长的中断
我有一个系统,我有一个需要很长时间(几毫秒)的中断,并导致一些实时问题。问题是我不知道它是哪个中断。我正在使用带有 irqsoff 的 ftrace,它报告最长的 irq-off 周期从 handle_int 开始,到 __do_softirq 结束(因此,它处于中断状态)。有没有一种简单的方法来确定是哪个中断导致了延迟?(注:内核版本为3.4)
operating-system - ISR 和函数调用的区别?
我想了解 ISR(中断服务程序)和函数调用之间的区别。
从硬件的角度来看,我觉得函数调用和 ISR 都是一样的。如果我错了,请纠正我。我能找到的关于 ISR 和函数调用的所有信息如下:
情监侦:
程序执行过程中随时可能发生的异步事件
将 PC、标志和寄存器保存在堆栈上并禁用所有中断并加载 ISR 的地址
ISR 不能有可以传递给它的参数
- 无法返回值
- 启用中断
- 通常很小,因为他们正在花费一些其他过程的时间
- 一些 ISR 有自己的堆栈
功能:
每当有函数调用时发生
将 PC 和寄存器保存在堆栈中
可以有论据
可以返回值
对执行的大小和持续时间没有限制
除此之外还有什么不同吗?请告诉我。我还阅读了有关 ISR 的函数调用是如何发生的。请在上面突出显示。
c - 我不想回到产生中断的那一行
通常当中断发生时,程序会返回到产生中断的那一行。
我想在 ISR 例程完成后从新行运行程序,即我不希望它从产生中断的地方返回。
我是否必须更改存储在 SP 中的 IP 或者还有什么?
谢谢
mplab - 为什么 RB 中断例程运行两次?
我下面有一些代码有一个小错误,我不知道如何修复。基本上发生的事情是我的高 ISR 在设置标志后运行了两次。它只运行两次并且是一致的。子例程应该只运行一次,因为当 RB 上的输入更改时设置了标志,并且例程在 RB 的输入更改一次后运行两次。测试是在 MPLAB v8.6 中使用工作簿功能进行的。
linux - Linux 中的共享 IRQ
当多个注册的中断服务程序共享一条 IRQ 线时,什么决定了中断线被提升时 ISR 的执行顺序?
xbee - Digi S2B 模块,按钮中断程序
我正在使用带有 Digi Extension 的 Freescale CodeWarrior IDE 设计一个应用程序。我已经创建了示例应用程序并使用了它们。这工作得很好,但我在 IRQ 上遇到了一些问题。如果我使用 IRQ 组件,我并不总是进入中断例程。我的意思是当我按下按钮时,我并不总是进入 myButton_irq() 函数。知道为什么吗?你有同样的问题吗?
现在我正在尝试其他应用程序,按钮反应变得越来越低效......
提前致谢,
干杯!
mutex - 是 ISR 还是互斥任务具有更高的优先级?
在互斥任务运行期间是否可能发生 ISR,实际上我想知道的是互斥任务或 ISR 是否具有更高的优先级?