×

ARDUINO微控制器外部中断处理

消耗积分:0 | 格式:zip | 大小:0.03 MB | 2022-10-27

h1654155275.3132

分享资料个

描述

用户指南可以从 GitHub 下载:

用户指南,外部中断的可扩展异步处理

概述

Arduino 微控制器的规格和功能多种多样。但该系列的共同点是,这些微控制器提供了一种在外部事件发生时对其进行处理的方法,这是通过使用中断来实现的。外部事件可以是任何东西。例如,PIR 的激活、开关状态的改变等。

Arduino 开发环境和软件库提供了一种方法来设计和定义最终用户代码例程(中断服务例程 (ISR)),只要发生外部中断,就可以调用这些例程。当触发外部中断时,微控制器将停止正在运行的最终用户代码的操作,并将控制权传递给关联的 ISR,该 ISR 已被定义为最终用户应用程序的一部分。

如果需要一个解决方案来处理多个外部中断,那么每个中断都需要定义一个特定的 ISR 来处理相关的触发事件 - 需要设计 ISR 来处理特定和单独的要求。此外,ISR 可能会受到虚假触发的影响,例如“脏”切换。这通常被称为“反弹”,是 ISR 设计需要解决的问题。因此,挑战在于设计解决方案,将中断处理作为整体解决方案的一部分,识别中断的各种设置要求以处理此类外部事件。

支持的外部中断数量取决于特定的 Arduino 微控制器。因此,为项目选择微控制器将受到最终用户解决方案所需的外部中断数量的影响。

该框架提供了一个“容器”,可以对其进行配置以满足外部中断的任何特定设置要求,并且可以轻松地将最终用户代码添加到该容器中。

该方法将允许按优先级顺序处理外部中断(同时触发时和实时),但在主处理代码指示的时间(异步)。也就是说,该方法允许捕获外部中断,如触发,但在其相关的中断服务例程 (ISR) 之外进行操作。

该解决方案是围绕 ARDUINO MEGA 2560 微控制器开发的,但可以针对任何数量的外部中断直接针对任何板进行修改,直至特定微控制器和此框架设置的最大限制。

MEGA 2560 支持多达六个外部中断,这些外部中断可供最终用户开发人员轻松访问,并映射到数字输入引脚。然而,该方法很容易扩展以同时使用一个、两个、三个、...或所有六个外部中断,使其成为需要多个外部中断进程和处理的解决方案基础的理想框架。对于支持超过六个中断的微控制器,需要对底层框架进行扩展。但是,对于可能开发的大多数应用程序,认为六个中断的限制不应成为限制因素。如果需要更多,则可以通过增加通用 ISR 和相关数据支持结构的数量来扩展该方法。

异步处理是通过通用中断处理程序的设计和实现实现的,并由中断队列管理概念支持,该概念提供了将中断事件与其最终处理分开的方法。

当一个外部中断被触发时,它会在 setup() 过程中被映射和建立指定的(通用)ISR。然后,ISR 只会将中断事件插入中断队列,此时不会进行进一步的处理。然而,为了避免虚假/脏中断的“反弹”,每个 ISR 都包含一个去抖动机制,该机制可以通过配置参数进行更改。必要时,可以为每个映射的外部中断定义不同的中断“反弹”值,以反映触发电路的“清洁度”。

如果同时触发多个外部中断,则 ARDUINO 微控制器将按照微控制器规范确定的定义优先级顺序“触发”它们各自的 ISR。

中断队列以先进先出 (FIFO) 为基础进行操作和管理。因此,该方法保留了在现实世界中触发外部中断的顺序。

然而,如预期的那样,异步中断处理这样的方法确实会带来一些开销。该方法不适用于具有绝对和关键处理需求的应用,其中时序约束至关重要;这是一种适用于许多非关键解决方案的方法。

设计要求(目标)

在设计这个框架时,设定了许多目标,这些目标是为外部中断处理提供一个解决方案:

  • 将发生的外部中断事件与其发生的处理分离,为上层的最终用户应用程序代码提供自由和控制。也就是说,一种解决方案将提供独立于“捕获”接收到的中断及其最终处理的处理
  • 无需大量修改即可“插入”的容器
  • 可扩展,提供处理多个外部中断的框架
  • 对每个可能的外部中断都是高度可配置的。例如,如果需要,需要对每个中断进行不同的配置
  • 可以在继续处理之前支持唯一或非唯一外部中断事件捕获/记录
  • 考虑到虚假中断。也就是说,为“脏”切换提供去抖。

该框架的功能主要如上所述。然而,一个有趣的特性是它能够允许外部中断是“唯一的”或“非唯一的”。这里不再赘述这个特性,而是将那些对框架感兴趣的人参考用户指南,在那里可以找到更完整的描述(参见用户指南,外部中断的可扩展异步处理)。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !