mcu短时间内发生多次中断,如何解决中断丢失问题?

问题

嵌入式开发中,如果中断A的处理函数执行时间长,某段时间内,快速来了2个中断A(例如:外部管脚输入信号变化),则会导致第2个中断丢失。

我有几个疑问:

1.目前市面上的芯片,是否支持缓存中断标志?例如:中断A在短时间内触发了3次,但是CPU来不及响应(中断A的执行函数时间长,或者正在执行更高优先级的中断),CPU能否记住这3次中断?如果有,目前最多支持缓存几次中断标志?

2.如果没有中断标志位缓存机制,必须保证下一次中断到来之前,处理完本次中断?

3.能否在中断A响应的最初阶段,清除中断A的标志(芯片自动清除or中断处理函数中清除)。此时如果再来一次中断A,芯片会置位中断A的标志位,则理论上可以缓存2次中断标志?

网友的回复总结:

使用异步处理的方式

——中断来了之后,只做中断的记录,不做中断服务的处理。

5d510a990beb1aabe0eaaaaf9f5421f0.png

就好比我们写单片机程序,在中断服务程序里面有一个变量不断增加,然后另外有一个主程序在不断的while 判断处理。

测量中断服务函数执行时间,是否足够小,比如小于5us,如果中断处理程序占用的耗时太大,就必须要优化。

在Linux里面有中断的上半部和下半部,上半部就是处理比较及时的事情,下半部处理比较耗时的操作。

还有在使用中断的时候,如果是已经在处理中,进入中断的第一件事情就是关闭中断,避免中断处理过程中又被中断打断代码执行。

——中断有没有必要增加一个缓存?

缓存是一个好东西,但是缓存了就一定会导致中断的不足够及时,比如中断的思想是,我要上厕所,我现在就必须现在上厕所。前面说的我,就是「中断」,那如何设计一个中断缓存,成了一个有意思的话题,中断服务程序需要做的事情就是不断的往这个缓存里面扔东西,另外需要一个线程不断的从缓存里面拿东西来处理,直到缓存为空。

——当然,缓存也有缓存的问题,所以看到有人在回复

--- 目前没有芯片实现缓存,中断只有已触发标志和已清除标志,并没有触发了几次的信息

缓存是软件的思想,CPU部分可不想考虑这么低级的事情。

———如果没有中断标志位缓存机制,必须保证下一次中断到来之前,处理完本次中断?

上面提到一个做法是,在进入中断的时候关闭中断,那还有就是,在进入中断的时候,先清除当前的中断标识位,然后去做处理,如果在处理过程中又有中断产生了,中断标志位就会置位,那在退出中断后又会重新进入中断。

通过上面的方法,就可以起到缓存 1 个中断的目的,相当于有一个buff,可以处理2次中断。

dfc4c57f9585140a12ddd3db57a0b3c2.jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/353012.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【docker】linux系统docker的安装及使用

一、docker应用的安装 1.1 安装方式 Docker的自动化安装,即使用提供的一键安装的脚本,进行安装。 官方的一键安装方式:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 国内 daocloud一键安装命令:curl -s…

JavaWeb:商品管理系统(Vue版)

文章目录 1、功能介绍2、技术栈3、环境准备3.1、数据库准备3.2、在新建web项目中导入依赖3.3、编写Mybatis文件3.4、编写pojo类3.5、编写Mybatis工具类3.6、导入前端素材(element-ui & vue.js & axios.js)3.7、前端页面 4、功能实现4.1、查询所有…

机器学习---无偏估计

1. 如何理解无偏估计 无偏估计:就是我认为所有样本出现的概率⼀样。 假如有N种样本我们认为所有样本出现概率都是 1/N。然后根据这个来计算数学期望。此时的数学期望就是我们平常讲 的平均值。数学期望本质就 是平均值。 2. 无偏估计为何叫做“无偏”&#xff1…

Deeplearning

Numpy Deep Learning Basic 神经网络: #mermaid-svg-2N27H7C0XPrmd8HP {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-2N27H7C0XPrmd8HP .error-icon{fill:#552222;}#mermaid-svg-2N27H7C0XPrmd8HP .…

GPIO的8种工作模式

一、8种工作模式 二、IO端口的基本结构 下面是一张F1的IO的结构图。 圆圈 2是芯片内部的上下拉电阻, 输入数据寄存器简称IDR ,cpu读IDR就可以知道外面的是高电平还是低电平,单片机IO口输出的高低电平主要依靠P-MOS和N-MOS,输出数据…

CHS_01.2.3.1+同步与互斥的基本概念

CHS_01.2.3.1同步与互斥的基本概念 知识总览什么是进程同步什么是进程互斥知识回顾 在这个小节中 我们会介绍进程同步和进程互斥相关的概念 知识总览 我们会结合一些具体的例子 让大家能够更形象的理解这两个概念 首先来看一下什么是进程同步 其实在聊进程同步之前 咱们已经接…

WPF自定义圆形百分比进度条

先看效果图 1.界面代码 <UserControl x:Class"LensAgingTest.CycleProcessBar1"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:mc"http://schemas.op…

STM32(更新中)

目录 1 时钟&#xff08;心跳&#xff09; 1.1 CubeMX基本配置 1.2 外设在时钟上的分配原理 1.3 时钟树 2 寄存器&#xff08;地址&#xff09; 3 GPIO 3.1 GPIO实物 3.2 GPIO两种结构&#xff08;推挽/开漏&#xff09; 3.3 LED 3.4 CUBEMX 3.5 常用函数 …

机器学习|ROC曲线和AUC值

概念AUC&#xff08;Area Under Curve&#xff09;被定义为ROC曲线下的面积。其中&#xff0c;ROC曲线全称为受试者工作特征曲线 &#xff08;receiver operating characteristic curve&#xff09;&#xff0c; 模型会计算出所判断事物为汉堡&#x1f354;的概率&#xff0c;而…

【游戏客户端开发的进阶路线】

*** 游戏客户端开发的进阶路线 春招的脚步越来越近&#xff0c;我们注意到越来越多的同学们都在积极学习游戏开发&#xff0c;希望能在这个充满活力的行业中大展拳脚。 当我们思考如何成为游戏开发领域的佼佼者时&#xff0c;关键在于如何有效规划学习路径。 &#x1f914; 我…

11.Elasticsearch应用(十一)

Elasticsearch应用&#xff08;十一&#xff09; 1.什么是自动补全 现代的搜索引擎&#xff0c;一般都会提供Suggest as you type的功能 帮助用户在输入搜索的过程中&#xff0c;进行自动补全或者纠错。通过协助用户输入更加精准的关键词&#xff0c;提高后续搜索阶段文档的…

看图说话:Git图谱解读

很多新加入公司的同学在使用Git各类客户端管理代码的过程中对于Git图谱解读不太理解&#xff0c;我们常用的Git客户端是SourceTree&#xff0c;配合P4Merge进行冲突解决基本可以满足日常工作大部分需要。不同的Git客户端工具对图谱展示会有些许差异&#xff0c;以下是SourceTre…

【教程】MobaXterm软件Keygen快速生成注册码

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 1、去官网安装正版软件&#xff0c;比如23.6版本的&#xff1a;MobaXterm free Xserver and tabbed SSH client for Windows 2、打开这个网站&#xff0c;输入信息&#xff1a;MobaXterm Keygen 3、将自动下载的C…

【原理图PCB专题】Allegro报封装Name is too long

在安装完成Cadence17.4版本后&#xff0c;在首次导入网表时发现PCB报了一些错误&#xff0c;就是名称太长 #1 ERROR(SPMHNI-189): Name is too long… ERROR(SPMHNI-189): Problems with the name of device ‘MT48LC2M32B2B5-6_SDRAMTSOP86_MT48LC2M32B2B5-6’: ‘Name is to…

vue-component组件

一、Component 组件 组件&#xff08;Component&#xff09;是自定义封装的功能。在前端开发过程中&#xff0c;经常出现多个网页的功能是重复的&#xff0c;而且很多不同的页面之间&#xff0c;也存在同样的功能。将相同的功能进行抽取,封装为组件,这样&#xff0c;前端人员就…

JavaWeb,Vue的学习(上)

概述 Vue的两个核心功能 声明式渲染&#xff1a;Vue 基于标准 HTML 拓展了一套模板语法&#xff0c;使得我们可以声明式地描述最终输出的 HTML 和 JavaScript 状态之间的关系。响应性&#xff1a;Vue 会自动跟踪 JavaScript 状态并在其发生变化时响应式地更新 DOM ViteVue3项目…

统计学-R语言-8.2

文章目录 前言双因子方差分析数学模型主效应分析交互效应分析正态性检验 绘制3个品种产量数据合并后的正态Q-Q图&#xff08;数据&#xff1a;example8_2&#xff09;练习 前言 本篇将继续介绍方差分析的知识。 双因子方差分析 考虑两个类别自变量对数值因变量影响的方差分析…

elasticsearch在ubuntu下的配置以及简单使用

参考资料 官方下载地址 ELK学习实验002&#xff1a;Elasticsearch介绍及单机安装 ElasticSearch (ES从入门到精通一篇就够了) 前言 警告&#xff1a;elasticsearch默认不允许使用root账号来运行的&#xff0c;所以&#xff0c;强烈建议一开始就创建一个账号例如&#xff1a;…

HarmonyOS4.0系统性深入开发28线性布局

线性布局&#xff08;Row/Column&#xff09; 概述 线性布局&#xff08;LinearLayout&#xff09;是开发中最常用的布局&#xff0c;通过线性容器Row和Column构建。线性布局是其他布局的基础&#xff0c;其子元素在线性方向上&#xff08;水平方向和垂直方向&#xff09;依次…

大数据安全 | 期末复习(中)

文章目录 &#x1f4da;感知数据安全⭐️&#x1f407;传感器概述&#x1f407;传感器的静态特性&#x1f407;调制方式&#x1f407;换能攻击&#x1f407;现有防护策略 &#x1f4da;AI安全⭐️&#x1f407;智能语音系统——脆弱性&#x1f407;攻击手段&#x1f407;AI的两…