问题标签 [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 投票
0 回答
239 浏览

arduino - Arduino TimerOne 库中断问题

我正在使用 Arduino TimerOne 库的最新版本。

如果我不使用 TimerOne.attachinterrupt(xxx) 函数,引脚 10 会根据提供的参数生成适当的 PWM 信号。

当我调用 TimerOne.Attachinterrupt(isr,frequency) 或只是 ...(isr) 调用永远不会“返回” - 即引脚 10 上的信号没有启动,循环不会进入。我在调用附加之前打开一个 LED,然后在下一行将其关闭 - 但 LED 永远不会熄灭。

ISR 仅递减一个全局 volatile 变量

看来 AttachISR 正在破坏某些东西......代码设置如下:

0 投票
2 回答
762 浏览

arm - 是否可以将 ISR 指令锁定到 L1 缓存?

我在 ARM cortex A9 处理器的一个内核上运行一个裸机应用程序。我的 ISR 很小,我想知道是否可以将 ISR 指令锁定在 L1 缓存中?可能吗?有没有人会解释这样做的一些缺点?

问候,N

0 投票
1 回答
2474 浏览

timer - 在 BeagleBone Black 上设置快速 (DMTimer-) 中断

我尝试使用 StarterWare 在 Beaglebone Black 上进行一些裸机编程。与 Black 一起运行的所有修改都已完成,我正在运行运行良好的 DMTimer 示例。

在下一步中,我改变了这个例子,ISR 只是切换一个 GPIO(它应该只需要几十个时钟周期)。我将示例的计时器和计时器重新加载计数更改为 0xFFFFFF0F,它等于 10 微秒周期 - 所以我的 ISR 应该每 10 微秒调用一次。

令人惊讶的是,这似乎是极限,当我使用更大的计时器值时,这应该会导致更频繁地调用 ISR,它仍然停留在这 10 微秒,即使使用 DMTimer 示例也不可能达到 5 微秒。由于已经使用了定时器时钟源 CLK_M_OSC,所以这应该没问题。

那么......知道如何更快地调用 ISR 吗?

0 投票
1 回答
1148 浏览

multithreading - 从线程 ISR 交换数据的安全且简单的方法是什么?(树莓派)

我正在尝试在 Raspberry Pi 上开发一个 C/C++ 用户空间应用程序,该应用程序处理来自 SPI 设备的数据。我正在使用WiringPi库(函数WiringPiISR),它注册了一个函数(真正的中断处理程序),该函数将从 IRQ 事件的 pthread 中断处理程序中调用。

我听说 STL 容器不是线程安全的,但是在执行我的回调函数时拥有一个互斥锁就足够了,当然在访问那里的缓冲区/容器时在主线程中拥有一个锁就足够了吗?

我通过wiringPiISR注册的“真正的中断处理程序”看起来像这样

或者有没有更简单的方法来实现线程 ISR 和主线程之间的数据交换?

0 投票
2 回答
712 浏览

timer - 如何在 Arduino mega 的定时器中断中使用 ADXL345

我想在 Arduino mega 的定时器中断中使用 ADXL345。

但它不能不工作。

这是我的代码:

ISR() 函数每 1 毫秒执行一次,但 ISR() 中的代码只需要 650 微秒。

我不知道为什么它不能工作。

如果我在循环()中做所有事情,它可以正常工作。

谁能帮我?

提前致谢,

0 投票
1 回答
6258 浏览

c - C语言中的软件中断?

我从理论上理解了软件中断和硬件中断的概念,但是任何人都可以给我一个软件中断的例子并解释一下吗?请这对我有很大的帮助。

适用于 windows 或 Linux 操作系统的 C 程序示例

0 投票
1 回答
2502 浏览

c - Uart 检查接收缓冲区中断与轮询

您好,我正在学习如何通过在 Nios 中使用中断来使用 Uart,但我不知道如何开始。我在轮询中成功了,但我不确定如何开始使用中断。

任何帮助,将不胜感激

这是我的代码

我想使用 uart_RecvBufferIsr 而不是 uart_checkRecvBuffer。如何应对这种情况?

0 投票
0 回答
89 浏览

c - Splint(C静态分析器):分析中断服务例程的线程安全

我正在为只有一个中断优先级的 C 语言基本微控制器进行编译;只有一个 ISR。我想被警告 ISR 和 main() 线程之间的线程安全问题。

这是静态分析器可以做的吗?他们能/不能捕捉到什么样的线程安全问题?Splint 能做到吗?

volatile示例 1:如果一个变量在 ISR 和主线程中都使用,它是否可以检测是否应该给它关键字?

示例 2:如果主线程有多个操作需要在它们的组合中是原子的(可能在源代码中通过注释指示),静态分析器是否可以指示它们是否可以被 ISR 中断并被破坏?

0 投票
1 回答
2375 浏览

c - C:UART、ISR、循环 FIFO 缓冲区:有时以错误的顺序发送字节

我正在用一个间歇性的虫子把我的头发拉出来。我正在异步接收和发送字节(在 PIC16F77 上),并实现了一个用于接收和发送的循环软件 FIFO 缓冲区,并结合了一个在可以发送或已接收字节时触发的中断服务程序。

问题是有时要传输的字节顺序错误

我将不胜感激

  1. 关于调试它的建议,或者
  2. 帮助发现代码中的问题

目前进展:

  • 似乎只有在收到一些字节时才会发生这种情况 - 但是我没有成功地进一步缩小范围。AFAIK,我没有得到任何欠载或超支。
  • 当我更改send_char()为:1.通过等待硬件缓冲区中的空间并将字节直接放入其中来绕过软件缓冲区,或者 2.将字节放入软件缓冲区中,即使硬件中有空间,它也可以正常工作缓冲。

代码:(有关硬件变量的描述,请参见问题底部)

硬件变量说明:

作为参考,以下是映射到硬件寄存器和标志的(易失性)变量:

此外,以下是特殊的内联函数,它们暂停/恢复中断以保持多个分组操作的原子性。(ISR 不能被任何东西打断,包括其他中断)

0 投票
1 回答
294 浏览

c - 如何在 c 中为实时 linux 操作系统创建中断服务函数?

场景:客户端正在发送数据,服务器正在通过以太网层(udp)从客户端接收数据。当服务器在 ip 层(内核)上接收到来自客户端的数据时。它中断内核和内核以执行客户端的数据,所以我想创建一个中断服务函数来捕捉来自网络服务卡的中断。

有人可以帮我怎么做吗?