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 上的中断会中断其他中断吗? 的相关文章

  • 内核与系统中的 Windows 进程

    我有一些与内核和用户模式下的 Windows 进程相关的问题 如果我有一个 hello world 应用程序和一个公开新系统调用 foo 的 hello world 驱动程序 我很好奇一旦处于内核模式 我能做什么和不能做什么 对于初学者来说
  • 为什么一个线程会中断另一个线程[重复]

    这个问题在这里已经有答案了 在Java多线程应用程序中 我们处理InterruptedThreadException 如果另一个线程中断当前线程 则会抛出此异常 现在 当另一个线程知道它将导致异常时 它可能想要中断当前线程的原因是什么 很多
  • 构建 makefile 依赖/继承树

    如果我解释得不好或者问了一些明显的问题 我很抱歉 但我是 Linux 内核的新手 而且有点深入 我们有一个嵌入式 Linux 系统 它附带一个 文档非常糟糕的 SDK 其中包含数百个文件夹stuff 大多数文件夹包含rules make m
  • 在嵌入式 Jetty 上使用 DefaultServlet 提供静态 html 文件

    我正在开发一个需要独立的项目 因此我决定将 Jetty 嵌入到我的应用程序中 我将提供静态 HTML 页面 一些 JSP 页面 并且还将使用一些自定义 servlet 我找到了一个完美的示例 说明如何设置嵌入式 Jetty 来完成所有这一切
  • 学习 Verilog 的资源 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我是 Verilog 新手 有人可以推荐学习资源 书籍 视频 博客或任何他们有良好个人经验并帮助他们更
  • 无法将 minicom 的输出保存到文件中

    当我使用Minicom从串口捕获数据时 我需要将大数据保存到一个文件中 名为minicom cap 但是 如果我按 Ctrl A 和 L 来捕获文件 则失败 没有创建文件 minicom cap之前并不存在 我的下载目录已正确创建 我的操作
  • ESP32:dsb1820 温度传感器给出恒定的负 127 读数

    我正在尝试使用连接到 esp32 微控制器的单个 dsb1820 温度传感器来获取温度读数 传感器连接到 esp32 的 GPIO 4 我打算将温度读数发送到云端 我面临的问题是温度读数总是给出值 127 我在网上某处读到 当 dsb182
  • 仅从日期计算夏令时

    我正在使用 Arduino 和实时时钟芯片 该芯片补偿了闰年等 因此它始终具有正确的日期 但我认为由于区域复杂性 它不处理夏令时 时钟可以给出日 月 年 从 1 开始 以及星期几 星期日 0 到星期六 6 因为我需要与用户输入的日期和时间进
  • ARM Cortex-M3 启动代码

    我试图了解 STM32 微控制器的 Keil realview v4 附带的初始化代码是如何工作的 具体来说 我试图了解堆栈是如何初始化的 In the 文档 http infocenter arm com help index jsp t
  • java替代Thread.stop()来中断特定调用

    我正在寻找一种方法来告诉这个调用 大约需要 20 120 秒 final Area image final AffineTransform transform new AffineTransform transform scale imag
  • Arduino Uno 上传失败

    我收到了一个 arduino uno 和一些代码 作为我正在从事的项目的一部分 我以前从未与他们合作过 所以这对我来说是一次全新的体验 我正在使用他们网站上的 Arduino 应用程序 当我编译代码时 它工作正常 然而 当我上传时 我收到错
  • 嵌入式开发系统中JTAG的一般工作流程?

    在我的嵌入式项目中 我使用 JTAG 接口下载代码并调试下载的应用程序 但我不知道 JTAG 设置内部发生了什么 任何人都可以给我 JTAG 设置的基本想法 流程 高级视图 这将真正帮助我更好地理解我的开发系统 为了添加克利福德的答案 这里
  • 如何在没有竞争条件的情况下将两个 32 位计数器读取为 64 位整数

    内存 0x100 和 0x104 是两个 32 位计数器 它们代表一个 64 位定时器并且不断递增 如何正确读取两个内存地址并将时间存储为 64 位整数 一种错误的解决方案 x High y Low result x lt lt 32 y
  • 云到设备 Azure IoT REST API

    我探索了如何使用 Azure REST API 将数据从设备发送到云 它运行无缝 没有任何问题 我没有找到有关使用 Azure IoT Hub REST API 向 Arduino 板发送云到设备消息的好文章 有人可以就此提供建议吗 您还可
  • 将数据添加到闪存中的段如何会扰乱程序的时序?

    我有一个实时嵌入式应用程序 其主周期以 10KHz 运行 它在配置为从闪存启动的 TI TMS320C 上运行 我最近在源文件中添加了一个初始化的数组 突然间时间就搞砸了 以一种太复杂的方式无法很好地解释 本质上串行端口写入不再按时完成 这
  • 使用 Intel xHC 执行启用插槽命令后,如何确定 USB 设备连接在哪个根集线器端口上?

    我正在一个使用 UEFI 启动的小型业余爱好操作系统中为英特尔 xHC 编写一个小型驱动程序 重置所有根集线器端口后 我收到 2 个端口状态更改事件 这是因为我要求 QEMU 在命令行中模拟 USB 键盘和 USB 鼠标 每个设备的一个端口
  • 是否值得为 EEPROM 实现小型文件系统

    我买了一个I2C EEPROM 我想存储传感器和电压数据 我假设该值可以大于一个字节 并且可以有很多数据 在这种情况下是否值得实现具有小文件分配表的文件系统 例如 这会让我更容易查看 EEPROM 我发现 EEPROM 上出现 FAT 有两
  • 全局变量在函数调用之间是否刷新?

    我正在编写嵌入式固件 发现有时很难决定何时需要易失性 当我有一个等待中断更改某个布尔标志的函数时 很明显该标志需要是易失性的 因为否则该函数将永远等待 因为编译器没有意识到该值可以通过打断 但是 当我有一个只检查第一行中的标志的短函数时 我
  • 在LPC2148 ARM处理器上创建中断向量的汇编代码

    我最近刚刚开始使用 LPC2148 ARM 处理器 我试图理解一些有关创建中断向量的汇编代码 这是代码 Runtime Interrupt Vectors Vectors b start reset start ldr pc undf un
  • Arduino 引导加载程序

    有人可以解释一下如何Arduino引导加载程序 http code google com p arduino source browse tags 0019 hardware arduino bootloaders atmega ATmeg

随机推荐

  • 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 使