问题标签 [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 回答
2145 浏览

arduino - 关注 Arduino 程序中 micros() 值的漂移

我有一个利用伺服库和外部中断例程的程序。据我了解,伺服库使用 Timer1 中断向伺服发送脉冲以保持位置。我想知道对 micros() 计数有什么影响,因为它在中断期间不会增加。

我的代码中的外部中断例程用于转速计。它使用 micros() 确定脉冲之间的时间。我担心 Servo 库会导致 millis() 和 micros() 计数器的漂移并使速度不准确。转速计可能必须感应 10,000 RPM 的速度,因此大约为 167 Hz。最终我将使用伺服和转速计实现 PID 控制。

0 投票
0 回答
306 浏览

c - 如何检查 ISR 的 c 代码工作正常?

场景:客户端-服务器通信-客户端是发送者,服务器是接收者。当服务器在以太网接口(UDP)上接收到数据时,服务器中的内核被触发。我在服务器端使用 QNX。服务器(即嵌入式 pc 目标)正在处理中断以触发嵌入式 pc 目标(包含 qnx)以获取注意力以执行新到达的数据。

我为内核创建了一个中断服务例程,但是如何检查上述代码是否正常工作。有人可以帮我吗?

0 投票
0 回答
41 浏览

variables - 如何停止 ISR 破坏全局变量?

在执行上述程序时,有时计数值为 0 655336,不是正确的值,所以 Bit1 没有切换,它保持 LOW 或 HIGH

这是什么原因?我想切换 BIT 特定次数

0 投票
2 回答
878 浏览

linux-device-driver - 是否需要在 tasklet 中使用 spin_lock?

据我所知,在中断处理程序中,不需要同步技术。中断处理程序不能同时运行。简而言之,ISR 中禁用了抢占。但是,我对 tasklet 有疑问。据我所知,tasklet 在中断上下文下运行。因此,在我看来,tasklet 函数例程下不需要自旋锁。但是,我不确定。有人可以解释一下吗?感谢您的回复。

0 投票
0 回答
162 浏览

operating-system - 中断服务程序

我研究了我们不能真正篡改中断向量表,但是当我们在计算机中安装新的设备驱动程序时会发生什么,它的地址如何存储在中断向量表中?

0 投票
0 回答
185 浏览

c - 使用 8-1 多路复用器和 atmega16

我正在尝试使用8-1 multiplexerwith 来mega16尝试最大化我的输入引脚所以我让我的程序扫描所有地址multiplexer并监听interrupt如果发生中断程序检查此时发送了哪个地址然后在 LCD 上打印一个字符串(它由开关盒管理)......

问题是:: 当一个中断发生时,它会进入 switch case 并执行它开始的那个下的所有 case

EX:如果我按下第一个按钮(第一个地址),它将执行所有案例,但如果我按下第二个按钮,它将执行它的案例和第三个案例,依此类推

多路复用器.h { #define Addr0 0x00 //00000000 #define Addr1 0x01 //00000001 #define Addr2 0x02 //00000010 #define Addr3 0x03 //00000011 #define Addr4 0x04 //00000100 #define Addr5 0x05 //00000101 #define Addr6 0x06 //00000110 #define Addr7 0x07 //00000111 }

0 投票
1 回答
604 浏览

mips - MIPS:为什么 ISR 被 rdpgpr $sp, $sp 包围?wrpgpr $sp, $sp 指令?

我正在使用 PIC32 MCU(MIPS M4K 内核),我试图了解中断在 MIPS 中是如何工作的;我拥有“See MIPS Run”一书、官方 MIPS 参考资料和 Google。他们中的任何一个都无法帮助我理解以下内容:

我有这样的中断声明:

我查看了反汇编,我看到RDPGPR SP, SP在 ISR 序言中调用了它(实际上是第一条指令);并且在 ISR 尾声中调用平衡WRPGPR SR, SR指令(在将先前保存的Status寄存器写入 CP0 并调用之前ERET)。我看到这些指令的目的是读取并保存到以前的影子寄存器集,因此,从影子寄存器集RDPGPR SP, SP读取并将其写回,但我不明白这是为什么。这个 ISR 不打算使用影子寄存器集,实际上在反汇编中我看到上下文被保存到堆栈中。但是,由于某种原因,从 shadow 读取和写入。为什么是这样?$spWRPGPR SR, SR$sp$sp

而且,相关问题:是否有一些关于 MIPS 汇编语言的真正全面的资源(书籍或其他东西)?“See MIPS Run”似乎真的很好,它是我深入研究 MIPS 体系结构的一个很好的起点,但它并没有涵盖几个足够好的主题,有几件事让我头疼:

  • 关于 EIC(外部中断控制器)模式的信息很少:它有一个带有Cause寄存器的图表,显示在 EIC 模式下我们有RIPLIP7-2不是. 甚至没有解释是什么意思(“请求的中断优先级”,好吧,谷歌帮助了)。我知道 EIC 是依赖于实现的,但我刚才提到的东西是通用的。Cause->RIPLStatus->IPLRIPL
  • 汇编语言的介绍还不够完整:比如说,没有关于宏 ( .macro,.endm指令),我找不到关于我在现有代码中看到的一些汇编器指令的任何信息,比如 ,.set mips32r2等等。
  • 我找不到任何关于在 ISR 中使用rdpgpr/的内容wrpgpr,它非常简要地介绍了这些指令(以及一般的影子寄存器集)

官方 MIPS 参考对这些主题也没有多大帮助。是否真的有一本涵盖所有可能的汇编指令的好书,等等?

0 投票
0 回答
103 浏览

assembly - INT指令处理

如何在内核模式驱动程序中从用户模式处理 asm int XX 指令(软件中断)

我可以吗:

1) 在 x64 Windows 的 IDT 中添加中断描述符(PatchGuard 怎么样)?

2) 通过 IoConnectInterruptEx 例程添加 ISR?

0 投票
2 回答
2851 浏览

c - 函数中的上下文切换与中断调用?

我从下面的 SE 问题中了解函数调用和中断(ISR)跳转之间的基本区别。

函数调用和 ISR 的区别

但是我仍然不清楚,在这两种情况下,哪些寄存器将被推入/弹出堆栈?在这两种情况下,上下文切换将如何发生?由于我们不知道什么时候会发生中断,所以在进入 ISR 之前我们需要保存什么(变量、PC、标志 (PSW)、寄存器、上下文)?

我们如何在多线程环境下恢复原始上下文而不会丢失任何数据。

0 投票
3 回答
7844 浏览

microcontroller - ISR如何成为回调函数

维基百科条目指出:

在计算机系统编程中,中断处理程序,也称为中断服务程序或 ISR,是微控制器固件、操作系统或设备驱动程序中的回调函数,其执行由接收到中断触发。

ISR 是如何回调的。存储在堆栈上的 PC 值本身就是回调函数吗?

即,ISR 回调被中断的函数。因此,被中断的函数是一个回调。