Arduino 上的中断会中断其他中断吗?

2024-01-05

我有一个Arduino Uno http://arduino.cc/en/Main/ArduinoBoardUno(很棒的小设备!)。它有两个中断;让我们称呼他们吧0 and 1。我将一个处理程序附加到中断 0,并将另一个处理程序附加到中断 1,使用attachInterrupt() : http://www.arduino.cc/en/Reference/AttachInterrupt http://www.arduino.cc/en/Reference/AttachInterrupt.

打断0被触发并调用其处理程序,该处理程序会进行一些数字运算。如果中断0中断时,处理程序仍在执行1被触发了,会发生什么?

会打断1中断中断0,或者会中断1等到中断0的处理程序执行完成了吗?

请注意,这个问题特别与 Arduino 有关。


在 Arduino(又名 AVR)硬件上,嵌套中断不会发生,除非您有意创建允许其发生的条件。

来自 avr-lib:

AVR 硬件在进入中断向量之前会清除 SREG 中的全局中断标志。因此,通常中断将在处理程序内部保持禁用状态,直到处理程序退出,其中 RETI 指令(由编译器作为中断处理程序的正常函数尾声的一部分发出)最终将重新启用进一步的中断。因此,中断处理程序通常不会嵌套。对于大多数中断处理程序来说,这是所需的行为,对于某些中断处理程序来说,甚至需要这样做才能防止无限递归中断(例如 UART 中断或电平触发的外部中断)。但在极少数情况下,可能需要在中断处理程序中尽早重新启用全局中断标志,以便不推迟任何其他中断超过绝对需要的时间。这可以在中断处理程序的开头使用 sei() 指令来完成,但这仍然在编译器生成的函数序言中留下很少的指令来在禁用全局中断的情况下运行。

(来源:http://linux.die.net/man/3/avr_interrupts http://linux.die.net/man/3/avr_interrupts )

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Arduino 上的中断会中断其他中断吗? 的相关文章

  • C++ 异常处理增加了多少占用空间

    这个问题对于嵌入式开发尤其重要 异常处理为生成的二进制输出增加了一些占用空间 另一方面 毫无例外 错误都需要以其他方式处理 这需要额外的代码 最终也会增加二进制大小 我对你的经历很感兴趣 尤其是 您的编译器为异常处理添加的平均占用空间是多少
  • 将浮点数转换为字节数组的 C 函数

    我正在尝试创建一个函数来接受浮点变量并将其转换为字节数组 我找到了一段有效的代码片段 但如果可能的话 希望在函数中重用它 我也在使用 Arduino 环境 但我知道它接受大多数 C 语言 目前工作 float variable 1 11 b
  • 使用 gnueabihf 为 ARMv6 构建

    我尝试为 ARMv6 构建应用程序 但失败了 我猜问题是工具链支持硬浮点 但 ARMv6 不支持 好吧 首先我设置 march armv6 编译失败 opt gcc linaro arm linux gnueabihf 4 8 2014 0
  • WinForms 中如何处理不可见控件的绘制?

    我正在尝试覆盖OnPaintwindows窗体中的事件 NET 紧凑框架 到目前为止 我已经能够使用渐变 圆角矩形等来绘制控件 而这通常是常规控件无法实现的 但是 当我想让控件不可见时 我遇到了问题 现在 我所做的就是重新绘制除那些不可见控
  • 使用 Java 控制 Arduino

    我正在寻找一个LED http en wikipedia org wiki Light emitting diode用Java程序打开和关闭 我用 C 完成了这个项目大约 5 分钟 但用 Java 似乎更具挑战性 我让 Arduino 等待
  • Linux - 嵌套中断[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Linux 是否使用嵌套中断 我的意思是 例如 当从任何设备提供中断服务时 可以允许在此例程中进一步中断吗 或者它涉及上半部和下半部 ED
  • 如何在 Windows 上获取 Arduino 草图的汇编语言列表?

    我希望能够看到我的 Arduino 草图的汇编语言列表 我怎样才能实现这个目标 Update 我正在 Windows 机器上运行 Arduino 软件 一种方法是使用avr objdump on the elf构建创建的文件 例如 在 OS
  • c - 将 uint8_t* 转换为 uint32_t* 行为

    我读过这个问题 将 uint8 转换为 uint32 如何工作 https stackoverflow com questions 28603243 how does casting uint8 to uint32 work但我不确定给出的
  • 在 Arduino 上将整数/小数转换为十六进制?

    如何将整数或小数变量转换为十六进制字符串 我可以做相反的事情 将十六进制转换为整数 但我无法找出其他方法 这是为了Serial print 数组中的十六进制值 查看 Arduino 字符串教程here http arduino cc en
  • SIM900 GSM/GPRS 未获得正确的 AT+CREG?回答

    我使用的是带有 IComsat SIM900 GSM GPRS 扩展板的 Arduino UNO 使用以下教程 Arduino 实时 GPS 追踪器 http www samaria me uk 2011 12 arduino live g
  • 自动持有自旋锁时返回是否不安全?

    受人尊敬的书说 The flags参数传递给spin unlock irqrestore必须与传递给的变量相同spin lock irqsave 您还必须致电spin lock irqsave and spin unlock irqrest
  • 使用 Ardulink 命令 Arduino Uno

    我试图在我的 JAVA 应用程序中使用 Ardulink 库来命令我的 Arduino Uno 但没有成功 我不知道我错过了什么 这是我的代码 Link link Link getDefaultInstance boolean connec
  • C 相同结构不同尺寸

    我的问题与此相关 c 在struct中定义不同大小的数组 https stackoverflow com questions 17956697 c define arrays in struct with different sizes 但
  • 如何提高 PySerial 读取速度

    我目前正在构建一台使用 Arduino Mega2560 作为主控制器的机器 Arduino 通过串口连接 获取命令 执行它并每 1ms 吐出一堆测量数据 我有一个运行 Python 的 Raspberry Pi 为用户提供一个漂亮的 GU
  • 用于嵌入式服务器的 Web 技术

    我最近开始了一个针对嵌入式设备的新 Web 开发项目 并希望征求一些有关使用技术的建议 该设备将提供 HTML 页面 其中包括用于从 JSON 服务器检索数据的 AJAX 代码 我们暂时使用 Cherokee 作为 Web 服务器 但我们并
  • 从 iBeacon 接收 BLE 信号到 Bluno(arduino with BLE)

    我想从 iBeacon 到 Bluno 接收 rssi 信号和 UUID Arduino 板具有 BLE 对此有一些疑问 有没有从 BLE 到 BLE 接收 UUID 和 rssi 的解决方案 两个BLE设备可以互相通信吗 我想找一些网站来
  • 产生并处理软件中断

    有人可以告诉我如何在Linux下生成软件中断然后用request irq处理它吗 或者也许这是不可能的 您可以使用软中断来代替 您可以通过编辑 include linux interrupt h 来定义您的 sofirq 然后使用函数 ra
  • 使用 Android NDK 使用 -fsigned-char 进行构建安全吗?

    为了与其他平台保持一致 我需要使用signed char在我正在处理的一些本机代码中 但默认情况下在Android NDK上char类型是unsigned 我尝试明确使用signed char类型 但它生成太多警告differ in sig
  • 内核与系统中的 Windows 进程

    我有一些与内核和用户模式下的 Windows 进程相关的问题 如果我有一个 hello world 应用程序和一个公开新系统调用 foo 的 hello world 驱动程序 我很好奇一旦处于内核模式 我能做什么和不能做什么 对于初学者来说
  • MISRA C++(规则 18-4-1)和动态内存分配 - 是否允许 std::string?

    MISRA C 规则 18 4 1 说 不得使用动态堆内存分配 See http dist sonarsource com reports coverage misra c 2008 html http dist sonarsource c

随机推荐

  • R 中的 Sample.split - SplitRatio 参数

    在查阅在线 caTools 文档和错误消息本身后 我的 SplitRatio 正确地为 0 到 1 之间的数字 即 0 7 但无论我如何将数字更改为不同的小数 我仍然会收到此错误消息 gt split sample split tweets
  • 如何检查 url 字符串中的端口号?

    我可以检查给定 URL 字符串中是否存在端口号吗 就像有时用户可以输入202 567 89 254 8088 or http 202 567 89 254 8088 or http 202 567 89 254 在上述所有选项中 如果端口号
  • Sublime Text 2:将 HTML 标签的内容格式化为一行

    好吧 我的情况与这里所有关于格式化 HTML 的线程有点不同 另外 我已经安装了几乎所有 HTML 格式化插件 结果好坏参半 但没有一个真正解决我的问题 此外 配置这些插件可能很困难 因为我不是程序员 而且一些作者没有提供足够的信息来自定义
  • 无法安装@angular/cli

    我正在尝试使用我已经安装了nodeJS的Angular2 我已按照此处给出的步骤进行操作https github com angular angular cli precessions https github com angular an
  • 在 sql server 2008 中备份单个表及其数据库中的数据

    我想使用脚本从 SQL Server 数据库中获取单个表及其数据的备份 我怎样才能做到这一点 SELECT INTO mytable backup FROM mytable 这会生成表的副本mytable 其中的每一行称为mytable b
  • CSS:为什么当使用溢出:隐藏时,vertical-align:baseline在Firefox上停止工作?

    您可以通过运行以下命令来重现此内容测试用例 http dl dropbox com u 6900 resources 20101129 vertical align baseline overflow hidden html 结果如下面的屏
  • Visual Studio Code - 终端黑屏

    自从 Visual Studio Code 处于测试版以来 我一直在使用它 我最喜欢它的功能之一是在应用程序中使用 Angular CLI 的集成终端 自从我拥有笔记本电脑以来 它一直运行良好 但我在圣诞节假期期间重新安装了 Windows
  • 替代 Y 组合器定义

    我最近花了一些时间研究 Y 组合器 我发现它通常定义 或多或少 如下 这是在 C 中 但选择的语言并不重要 public delegate TResult SelfApplicable
  • Android TextureView OpenGLRenderer: GL_INVALID_OPERATION

    我有两个具有TextureView 的片段来显示相机预览或播放视频 使用应用程序一段时间后 玩玩屏幕 我在 logcat 中收到此错误 OpenGLRenderer GL INVALID OPERATION 我从我的碎片中释放一切 所有成员
  • 如何在两个项目之间共享存储库和服务类

    我正在开发 2 个项目 一个 Web 应用程序 Spring MVC 和一个独立的后端服务应用程序 Spring boot 它们大量交互 我对两者都使用 hibernate 并且它们都是使用 Netbeans IDE 进行编码的 我的 问题
  • Twitter 卡片验证器在开发时出现错误

    我在验证开发中的 Twitter 卡时遇到问题 我已将路由器的公共 IP 配置为指向我的内部 LAN IP 端口http 119 21 79 135 3000 鉴于元标签已就位
  • 如何使用 Orika 映射 java.time.LocalDate 字段?

    发生这种情况是因为 LocalDate 不是JavaBean https en wikipedia org wiki JavaBeans 它没有零参数构造函数 要解决此问题 您需要创建一个 LocalDateConverter public
  • UITextFields 中联系信息的快捷方式或自动填充

    当我在 iOS 中的 Safari 中打开一个要求输入姓名和地址的表单时 我会在键盘区域中找到快捷方式 例如 这是当焦点位于名字字段时的键盘 我可以点击 罗伯特 而不是输入名字 姓氏 电话 电子邮件 邮政编码字段也会发生类似的情况 我可以在
  • 更新到 Angular 8 后,Material-UI 下拉菜单在 IE11 中导致错误

    打开材质菜单时 使用材质 8 的 Angular 8 应用程序在 IE11 上抛出以下错误 Unable to get property opacity of undefined or null reference 它与 Angular 7
  • 计算表面包含 4 个点的球体中心 (C#)

    我正在使用名为 MIConvexHull 的 3D Voronoi 库 它计算 3D 空间中一系列点的 3D Voronoi 图 然而 它没有提供有关 Voronoi 图结构的高级信息 报告的边只是一系列坐标对 然后必须计算其外心 现在 该
  • 使用 Azure 函数处理 Azure Datalake 存储文件

    我定期在 Azure Datalake 存储上的特定文件夹中获取文件 文件一到达 我想使用 Azure 函数进一步处理它 那可能吗 UPDATE With 多协议接入 https learn microsoft com en us azur
  • 当变量设置为新对象时,VBA 对象是否会被销毁?

    我还没有找到这个问题的具体答案 所以希望有人能为我解答 据我了解 VBA 垃圾收集器使用引用计数来确定是否不再需要某个对象 并显式解除与变量的关联 从而减少引用计数 Set objectVariable Nothing 这是我现在正在处理的
  • 简化 CNF 公式,同时保留某些变量的所有解决方案

    有关的 CNF 简化 https stackoverflow com questions 23461191 cnf simplification 事实上 我认为这个问题的提交者可能是在追求我想要的东西 有许多工具可用于简化 或求解前 预处理
  • Boost.Log 配置文件

    我正在向旧的 C 程序添加日志记录 经过一番研究后 我决定使用升压日志 http www boost org doc libs 1 56 0 libs log doc html index html 该文档充满了创建接收器和过滤器的示例 但
  • Arduino 上的中断会中断其他中断吗?

    我有一个Arduino Uno http arduino cc en Main ArduinoBoardUno 很棒的小设备 它有两个中断 让我们称呼他们吧0 and 1 我将一个处理程序附加到中断 0 并将另一个处理程序附加到中断 1 使