• 跳至主要导航
  • 跳到主要内容
  • 跳到主要侧边栏
  • 跳到页脚

单片机技巧

微控制器工程资源,微控制器新产品和电子工程新闻

  • 产品展示
    • 8-bit
    • 16-bit
    • 32-bit
    • 64-bit
  • 应用领域
    • 汽车行业
    • 连接性
    • 消费类电子产品
    • 产业
    • 医疗类
    • 安全
  • EE论坛
    • EDABoard.com
    • Electro-Tech-Online.com
  • 影片
    • TI单片机视频
  • EE资源
    • 快速设计
    • 电子书/技术提示
    • 常见问题
    • LEAP奖
    • 播客
    • 网络研讨会
    • 白皮书
  • EE学习中心

赦免打扰:加快响应速度

2017年3月31日 通过 斯科特·桑顿 发表评论

现代数字电子技术实现的许多功能都依赖于这样一个事实,即普通处理器每秒可以执行数百万或数十亿次操作。这种令人眼花fast乱的速度似乎使设备似乎正在一次处理许多操作,而实际上,它正在迅速遵循一组顺序的指令,通常具有多次重复。因此,从我们在这样的时间尺度上对事件的感知来看,它与瞬时是无法区分的。

当今的计算机和智能手机处理器还利用多个处理核心来进一步提高计算性能。但是,有许多应用程序依赖于速度较慢,价格较低的单处理核心微控制器(MCU)。对于单核MCU,仅处理速度可能无法提供足够水平的响应能力。在这种情况下,最终用户可能会觉得设备呆滞。例如,在按下按钮和输出LED响应之间可能会有很大的时间间隔,从而导致用户体验不佳。

图1:中断可能来自硬件,软件或其他处理器。 (来源:斯蒂芬·查尔斯·汤普森)

应对这种看似缓慢的响应的一种方法是尽可能频繁地轮询(检查)输入。但是,与检查按钮的次数相比,例如检查相对不频繁更改状态的I / O引脚的状态,很可能会浪费许多时钟周期。此外,如果检查按钮状态的代码处于仅在按下按钮后才会中断的软件循环中,那么微控制器将不执行任何操作,仅在此之前检查按钮!轮询虽然易于实现,但在只有一个单核处理器且要完成多个任务的情况下,它是一个较差的解决方案。大多数微控制器(包括成本较低的微控制器)通常会实现 打断 。顾名思义,中断响应某些事件而暂时中止了代码主循环的正常操作。根据MCU的不同,有多种使用中断的功能,包括内部计数器,配有特殊硬件的外部I / O引脚,板载模数转换器,EEPROM和通信端口。除了源于硬件的中断外,某些MCU还提供基于软件的中断。软件中断也可以执行许多功能,例如,它们可以用于监视内部寄存器并在发生某些事件时触发中断,例如算术逻辑单元试图将其除以零或计算导致溢出。

通常,当触发中断时,微控制器将完成当前指令的执行。 (有一些特殊的中断能够立即处理关键任务。)在中断期间,寄存器和程序计数器的当前状态必须存储在称为堆栈的特殊存储区中。通过将程序执行的当前状态压入堆栈,可以在中断处理后使MCU恢复正常的程序执行。堆栈的行为(后进先出数据结构)允许按顺序处理嵌套(多个)中断。一些微控制器允许相对于彼此在某种程度上对中断进行优先级排序,但是,有时最好在服务第一个中断的同时简单地禁用中断以允许受控行为。

中断背后有一种组织力量,称为MCU使用的中断向量表。一旦将微控制器寄存器的当前状态存储在堆栈中,中断向量表就会指示接下来要执行的指令。中断向量表是一个查找表(类似于地址簿),其中包含每个中断服务程序(ISR)开头的内存地址。 ISR只是一个特殊功能,仅在触发特定中断时才调用它。根据触发的中断,可以调用不同的ISR。例如,如果 内部 如果定时器中断被触发,并且具有完全不同的行为 外部 I / O引脚中断被触发。在这两种情况下,设备的表观响应性似乎都比仅依赖轮询方法的情况要快得多。

关于ISR的进一步说明:您应该特别小心,以仅使用完成所需中断绝对必要的中断来最小化中断服务程序中的代码量。例如,从中断服务程序内部打印调试消息不是一个好主意。一旦中断服务程序完成执行,就可以通过将先前存储的寄存器数据从堆栈中弹出并将程序计数器重置为没有调用中断时的值来恢复正常操作。

 

 

提起下: 常问问题 , 精选 , 行业专家 标签: 基本 , 常见问题

读者互动

发表评论 取消回复

您的电子邮件地址不会被公开。 必需的地方已做标记 *

主侧边栏

快速设计

组件选择变得简单。

今天尝试
设计快速的globle

EE培训中心教室

“ee

“ee

“ee

“ee

订阅我们的新闻

订阅每周行业新闻,新产品创新等等。

立即订阅

 的RSS 当前的EDABoard.com讨论

  • 为全桥SMPS制作电流检测变压器的最佳方法是什么?
  • David Binkley在书中讨论的有关对称OTA优化的一些问题
  • 有线数据传输10 km
  • 这些弯曲的痕迹的目的是什么?
  • Commodore 1084s显示器的垂直线不清晰

 的RSS 当前Electro-Tech-Online.com讨论

  • 同时从两个舷外为船上电池充电
  • 帮助一个非常基本的项目!
  • PNP电流镜未接近仿真模拟器
  • 汽车6伏发电机晶体管稳压器
  • PIC-Duino模板文件

在推特上关注我们

MicroContrlTips的推文

页脚

单片机技巧

EE World在线网络

  • 快速设计
  • EE World在线
  • EDA董事会论坛
  • 电子技术在线论坛
  • 连接器提示
  • 模拟IC技巧
  • 电力电子提示
  • 传感器提示
  • 测试和测量技巧
  • 电线电缆技巧
  • 5G技术世界

单片机技巧

  • 订阅我们的新闻
  • 与我们一起做广告
  • 联系我们
  • 关于我们
在推特上关注我们在Facebook上添加我们在YouTube上关注我们 在Instagram上关注我们

版权© 2021 ·WTWH Media LLC及其许可方。版权所有。
未经WTWH Media事先书面许可,不得复制,分发,传播,缓存或以其他方式使用本网站上的资料。

隐私政策



  • <tfoot id="APp8t9l" class="AM4w52A"></tfoot>





            • <mark class="kUcfVdK"><acronym id="lLOg29N" class="l8ViKuL"><table id="LUhQLZC"><table id="UEQbJbq"></table></table></acronym></mark>



                <font id="LZsubvX" class="LjFUgMo"><audio class="hXsoKoW"></audio></font>

                    <option id="xdO3mvB"><canvas id="kKVnnb7"><applet class="KbUmTMK"></applet></canvas></option>