问题标签 [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.
arduino - 关注 Arduino 程序中 micros() 值的漂移
我有一个利用伺服库和外部中断例程的程序。据我了解,伺服库使用 Timer1 中断向伺服发送脉冲以保持位置。我想知道对 micros() 计数有什么影响,因为它在中断期间不会增加。
我的代码中的外部中断例程用于转速计。它使用 micros() 确定脉冲之间的时间。我担心 Servo 库会导致 millis() 和 micros() 计数器的漂移并使速度不准确。转速计可能必须感应 10,000 RPM 的速度,因此大约为 167 Hz。最终我将使用伺服和转速计实现 PID 控制。
c - 如何检查 ISR 的 c 代码工作正常?
场景:客户端-服务器通信-客户端是发送者,服务器是接收者。当服务器在以太网接口(UDP)上接收到数据时,服务器中的内核被触发。我在服务器端使用 QNX。服务器(即嵌入式 pc 目标)正在处理中断以触发嵌入式 pc 目标(包含 qnx)以获取注意力以执行新到达的数据。
我为内核创建了一个中断服务例程,但是如何检查上述代码是否正常工作。有人可以帮我吗?
variables - 如何停止 ISR 破坏全局变量?
在执行上述程序时,有时计数值为 0 655336,不是正确的值,所以 Bit1 没有切换,它保持 LOW 或 HIGH
这是什么原因?我想切换 BIT 特定次数
linux-device-driver - 是否需要在 tasklet 中使用 spin_lock?
据我所知,在中断处理程序中,不需要同步技术。中断处理程序不能同时运行。简而言之,ISR 中禁用了抢占。但是,我对 tasklet 有疑问。据我所知,tasklet 在中断上下文下运行。因此,在我看来,tasklet 函数例程下不需要自旋锁。但是,我不确定。有人可以解释一下吗?感谢您的回复。
operating-system - 中断服务程序
我研究了我们不能真正篡改中断向量表,但是当我们在计算机中安装新的设备驱动程序时会发生什么,它的地址如何存储在中断向量表中?
c - 使用 8-1 多路复用器和 atmega16
我正在尝试使用8-1 multiplexer
with 来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
}
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 读取和写入。为什么是这样?$sp
WRPGPR SR, SR
$sp
$sp
而且,相关问题:是否有一些关于 MIPS 汇编语言的真正全面的资源(书籍或其他东西)?“See MIPS Run”似乎真的很好,它是我深入研究 MIPS 体系结构的一个很好的起点,但它并没有涵盖几个足够好的主题,有几件事让我头疼:
- 关于 EIC(外部中断控制器)模式的信息很少:它有一个带有
Cause
寄存器的图表,显示在 EIC 模式下我们有RIPL
而IP7-2
不是. 甚至没有解释是什么意思(“请求的中断优先级”,好吧,谷歌帮助了)。我知道 EIC 是依赖于实现的,但我刚才提到的东西是通用的。Cause->RIPL
Status->IPL
RIPL
- 汇编语言的介绍还不够完整:比如说,没有关于宏 (
.macro
,.endm
指令),我找不到关于我在现有代码中看到的一些汇编器指令的任何信息,比如 ,.set mips32r2
等等。 - 我找不到任何关于在 ISR 中使用
rdpgpr
/的内容wrpgpr
,它非常简要地介绍了这些指令(以及一般的影子寄存器集)
官方 MIPS 参考对这些主题也没有多大帮助。是否真的有一本涵盖所有可能的汇编指令的好书,等等?
assembly - INT指令处理
如何在内核模式驱动程序中从用户模式处理 asm int XX 指令(软件中断)
我可以吗:
1) 在 x64 Windows 的 IDT 中添加中断描述符(PatchGuard 怎么样)?
2) 通过 IoConnectInterruptEx 例程添加 ISR?
c - 函数中的上下文切换与中断调用?
我从下面的 SE 问题中了解函数调用和中断(ISR)跳转之间的基本区别。
但是我仍然不清楚,在这两种情况下,哪些寄存器将被推入/弹出堆栈?在这两种情况下,上下文切换将如何发生?由于我们不知道什么时候会发生中断,所以在进入 ISR 之前我们需要保存什么(变量、PC、标志 (PSW)、寄存器、上下文)?
我们如何在多线程环境下恢复原始上下文而不会丢失任何数据。
microcontroller - ISR如何成为回调函数
维基百科条目指出:
在计算机系统编程中,中断处理程序,也称为中断服务程序或 ISR,是微控制器固件、操作系统或设备驱动程序中的回调函数,其执行由接收到中断触发。
ISR 是如何回调的。存储在堆栈上的 PC 值本身就是回调函数吗?
即,ISR 回调被中断的函数。因此,被中断的函数是一个回调。