问题标签 [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.

0 投票
1 回答
1386 浏览

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 个值的数组)。

我需要在内核驱动程序中做,所以让我知道什么是最便宜的方法。

0 投票
2 回答
1167 浏览

c - 将结构传递到 ISR

我正在使用 Hi-Tech-PICC v9.65PL1 用 C 语言对 PIC16F876 进行编程。

对于中断,我使用以下结构:

我试图弄清楚如何将对象传递到 ISR。我知道我可以简单地将对象设为全局变量,但这不是重点。我已经看到它在 C 中使用另一种架构完成。由于我使用的是 C,所以当我说一个对象时,我指的是 typedef 结构,例如:

我的目标是让 ISR 改变 clock_t 结构中的“状态”。

有人可以解释一下这样做涉及到什么吗?

0 投票
2 回答
487 浏览

stack - 为什么堆栈成为微处理器中断服务的 FILO 结构很重要?

我试图了解堆栈及其实现,但最困扰我的是“为什么堆栈成为微处理器中中断服务的 FILO 结构很重要?” 在我理解堆栈概念之前,我需要先了解什么。谁能给我一个全面的解释。谢谢

0 投票
1 回答
141 浏览

linux - 在linux中找到最长的中断

我有一个系统,我有一个需要很长时间(几毫秒)的中断,并导致一些实时问题。问题是我不知道它是哪个中断。我正在使用带有 irqsoff 的 ftrace,它报告最长的 irq-off 周期从 handle_int 开始,到 __do_softirq 结束(因此,它处于中断状态)。有没有一种简单的方法来确定是哪个中断导致了延迟?(注:内核版本为3.4)

0 投票
4 回答
19439 浏览

operating-system - ISR 和函数调用的区别?

我想了解 ISR(中断服务程序)和函数调用之间的区别。

从硬件的角度来看,我觉得函数调用和 ISR 都是一样的。如果我错了,请纠正我。我能找到的关于 ISR 和函数调用的所有信息如下:

情监侦:

  • 程序执行过程中随时可能发生的异步事件

  • 将 PC、标志和寄存器保存在堆栈上并禁用所有中断并加载 ISR 的地址

  • ISR 不能有可以传递给它的参数

  • 无法返回值
  • 启用中断
  • 通常很小,因为他们正在花费一些其他过程的时间
  • 一些 ISR 有自己的堆栈

功能:

  • 每当有函数调用时发生

  • 将 PC 和寄存器保存在堆栈中

  • 可以有论据

  • 可以返回值

  • 对执行的大小和持续时间没有限制

除此之外还有什么不同吗?请告诉我。我还阅读了有关 ISR 的函数调用是如何发生的。请在上面突出显示。

0 投票
2 回答
70 浏览

c - 我不想回到产生中断的那一行

通常当中断发生时,程序会返回到产生中断的那一行。

我想在 ISR 例程完成后从新行运行程序,即我不希望它从产生中断的地方返回。

我是否必须更改存储在 SP 中的 IP 或者还有什么?

谢谢

0 投票
1 回答
1255 浏览

mplab - 为什么 RB 中断例程运行两次?

我下面有一些代码有一个小错误,我不知道如何修复。基本上发生的事情是我的高 ISR 在设置标志后运行了两次。它只运行两次并且是一致的。子例程应该只运行一次,因为当 RB 上的输入更改时设置了标志,并且例程在 RB 的输入更改一次后运行两次。测试是在 MPLAB v8.6 中使用工作簿功能进行的。

0 投票
1 回答
710 浏览

linux - Linux 中的共享 IRQ

当多个注册的中断服务程序共享一条 IRQ 线时,什么决定了中断线被提升时 ISR 的执行顺序?

0 投票
1 回答
96 浏览

xbee - Digi S2B 模块,按钮中断程序

我正在使用带有 Digi Extension 的 Freescale CodeWarrior IDE 设计一个应用程序。我已经创建了示例应用程序并使用了它们。这工作得很好,但我在 IRQ 上遇到了一些问题。如果我使用 IRQ 组件,我并不总是进入中断例程。我的意思是当我按下按钮时,我并不总是进入 myButton_irq() 函数。知道为什么吗?你有同样的问题吗?

现在我正在尝试其他应用程序,按钮反应变得越来越低效......

提前致谢,

干杯!

0 投票
1 回答
162 浏览

mutex - 是 ISR 还是互斥任务具有更高的优先级?

在互斥任务运行期间是否可能发生 ISR,实际上我想知道的是互斥任务或 ISR 是否具有更高的优先级?