历史上的今天
返回首页

历史上的今天

今天是:2025年02月28日(星期五)

正在发生

2020年02月28日 | MSP430系列嵌入式实验教程---中断

2020-02-28 来源:eefocus

中断是用以提高计算机工作效率、增强计算机功能的一项重要技术。简单来说就是CPU停止执行正在执行的任务,去处理突发事件,然后再回来继续执行当前任务。中断在单片机中可以起到定时,外部信号检测等作用。


预备知识

把引起中断的原因或者能够发出中断请求的信号源统称为中断源。中断首先需要由中断源发出中断请求,并征得系统允许后才会发生。在转去执行中断服务程序前,程序需保护中断现场;在执行完中断服务程序后,应恢复中断现场。


中断源一般分成两类:外部硬件中断源和内部软件中断源。外部硬件中断源包括可屏蔽中断和不可屏蔽中断。内部软件中断源产生于单片机内部,主要有以下3种:①由CPU运行结果产生;②执行中断指令INT3;③使用DEBUG中单步或断点设置引起。


多个中断同时等待时优先响应高优先级的中断。

中断向量表

不可屏蔽中断通常是系统产生的,不受通用中断使能位(GIE)位影响,如时钟中断。可屏蔽的中断由外围模块产生,每个中断源都有单独的中断位控制,同时也受全局状态寄存器的GIE位控制。


当发生中断后,如果外围模块独立的使能位打开,并且全局总中断位(GIE)允许,将执行中断服务程序。


从接收中断请求到执行中断服务程序的第一条指令需要延迟六个周期,在此期间完成了以下操作:


完成当前所有的指令

指向下一条指令的PC被压入堆栈

SR压入堆栈

选择最高优先级的中断

复位单源中断标志,多源标志需要后手动清除

清除除SCG0之外的所有SR,终止低功耗模式。清除GIE位,不再响应其他中断

加载中断向量中的内容到PC中,开始执行中断服务程序。

中断响应过程

烣复中断需要5个周期。SR将会从从堆栈中拉出,以前的各种GIE、CPUOFF等设置参数将会烣复,但在中断服务程序里边配置的将会被忽略。


从上边进栈过程可能看出,MSP430单片机在进入中断服务程序后复位了SR寄存器,会自动清除GIE位,也就是说此时不允许响应其他中断,如果需要实现中断嵌套,则需在中数服务函数里使能GIE位即可。


注意:避免在EINT全局中断使能和DINT紧临着使用,可能会导致CPU运行异常

端口中断寄存器

MSP430单片机的P1和P2端口具有中断功能(有些系列可能其他端口也具有中断功能),包含了PxIFG、PxIE、PxIEX等寄存器。


PxIFG表示对应位的IO的中断标志,在中断允许位PxIE置位并且总中断位GIE允许的情况下,输入口出现触发信号后会将PxIFG置位.当进入中断服务程序,访问PxIV寄存器后,最高优先级的PxIFG会自动复位.修改IO端口的其他寄存器可能会导致PxIFG位改变.


PxIES定义了触发边沿:


PxIES 触发方式

0 上升沿触发

1 下降沿触发

当对PxIES写操作时,可能会使PxIFG置位:


PxIES PxIN PxIFG

0–>1 0 set

0–>1 1 unchanged

1–>0 0 unchanged

1–>0 1 set


下边是一个示例,在P2.0端口出现边沿信号时会中断正常执行的程序,进入中断服务程序,闪烁一次LED:


P2IE |= BIT0; //P2.0中断

P2DIR &= ~BIT0;//P2.0 输入

P2REN |= BIT0;//使能上下拉电阻

P2OUT |= BIT0;//选择使用上拉电阻

P2IES |= 1; //下降沿触发

#pragma vector=PORT2_VECTOR

__interrupt void p2Interrupt() 

{

  P2IES ^= BIT0; //翻转边沿方向

  blinkLED();//闪烁LED

  P2IFG = 0; //清除中断标志

}


使能对应的中断允许位后,一定要指定中断向量的入口函数地址,否则系统会找不到中断服务函数。


输入端口在使用时不要悬空,不然会造成误触发,在接入外部按键等输入信号时应设计上下拉电阻,也可以使用内部的上下拉电阻,确保有一个非零即一的稳定电平.


PxREN定义了是否引入内部上下拉电阻。默认值PxREN.y=0时不接入内部电阻。


当配置PxREN.y=1时内部电阻被接入电路。电阻一端固定接在了IO输入端,至于另一端是接在VCC还是GND则由PxOUT.y决定。

当PxIN.y=0,PxREN.y=1时:


PxOUT 内部电阻

1 上拉输入

0 下拉输入


注意:

外部如果连接有机械类的传感器(如机械按键,光电检测)时,在触发时可以出现很多边沿信号,需要用一些手段进行滤波消抖.

推荐阅读

史海拾趣

Bipolar Integrated Technology Inc公司的发展小趣事

面对日益严峻的环境问题,BIT积极响应可持续发展的号召。他们开始研发更加环保、节能的电子产品,并推动整个行业向绿色、低碳的方向发展。同时,BIT还加大了对人才培养和技术研发的投入,为公司的未来发展奠定了坚实的基础。

请注意,以上故事仅为虚构示例,旨在展示一个电子行业中公司可能的发展历程。在实际中,每个公司的发展都有其独特的轨迹和经历。

HN Electronic Components GmbH & Co Kg公司的发展小趣事

背景:HN Electronics成立于20世纪90年代初,正值全球电子市场快速崛起的时期。公司由一群在半导体领域拥有丰富经验的工程师创立,他们看到了智能手机和消费电子产品市场的巨大潜力。

发展:初期,HN Electronics专注于研发高性能的电源管理芯片,通过技术创新解决了当时市场上存在的能效低、发热量大等问题。公司迅速获得了业界的认可,并与几家知名手机制造商建立了合作关系。

关键事件:1995年,HN Electronics成功推出其首款自主研发的电源管理芯片,该产品迅速成为市场热销产品,为公司赢得了第一桶金。

福声科技(FUET)公司的发展小趣事

随着市场的不断变化和技术的飞速发展,福声科技深知技术创新的重要性。公司不断加大研发投入,组建了一支高素质的研发团队,专注于电磁式蜂鸣器、压电式蜂鸣器等新型产品的研发。通过持续的技术创新和产品升级,福声科技成功推出了一系列具有自主知识产权的电声元器件,不仅提升了产品的市场竞争力,还进一步拓宽了应用领域,如智能家居、安防系统等新兴市场。

AW Industries Inc公司的发展小趣事

在国内市场取得成功后,AW Industries Inc开始寻求国际化发展。公司首先选择了几个具有潜力的海外市场进行拓展,并通过与当地企业合作、建立销售网络等方式逐步打开市场。随着国际化战略的深入实施,公司的业务范围不断扩大,国际市场份额也逐步增加。

艾为(AWINIC)公司的发展小趣事

随着艾为电子在技术和产品方面的不断突破,公司开始积极拓展市场。艾为电子的产品不仅覆盖了华为、小米等知名手机厂商,还广泛应用于可穿戴设备、智能便携设备等领域。同时,公司还加大了品牌建设的力度,通过参加行业展会、举办技术研讨会等方式,提高了品牌知名度和影响力。

Andigilog公司的发展小趣事

2008年,孙洪军牵头创办了上海艾为电子技术股份有限公司。创立之初,艾为就明确了其使命:专注于混合信号、模拟、射频等IC设计,聚焦在手机、可穿戴、智能硬件、IOT等消费电子领域。公司秉持着“客户需求是艾为存在的唯一理由,高素质的团队是艾为的最大财富”的理念,致力于为消费电子市场提供高性能的集成电路解决方案。

问答坊 | AI 解惑

指针不完全手册

1、 指针与变量 定义一个变量,再定义一个指向该变量类型的指针,把该变量的地址赋给此指针,然后通过此指针访问该变量,教科书上都是这样说的,但恐怕没有人这样用,因为还不如直接访问变量名直截了当。问题是为什么这两种方法都可以访问那个特 ...…

查看全部问答>

ccd

我需要测光点大小,想要ccd采集,单片机处理,有哥们玩过没,指点下。。。。…

查看全部问答>

2.4G无线智能灯控方案

2.4G无线智能灯控方案 一,        方案概述 本方案解决家庭、小区智能灯光控制。针对日渐繁多的室内灯光种类,以及开关连线复杂的状况,采用无线控制灯光,实现灯光情景模式设定以及开关位置灵活摆放。ZG1100采用串口与上位 ...…

查看全部问答>

麻烦高手看下编写的AT89C52对TLC1543取样的程序

;-------------------1543对应的管脚接线方式----------------------- ;1543AT89C52 ;EOCP1.5 ;I/O CLOCKP1.6 ;ADDRESSP1.7 ;DATAOUTP3.0 ;CSP3.1 ;=========================================== ...…

查看全部问答>

blob源码中configure.in的问题

case \"$board_name\" in     assabet)         board_name=\"Intel Assabet\"         AC_DEFINE(ASSABET)                      ...…

查看全部问答>

基于蓝牙应用的嵌入式开发板选型问题

想做个基于蓝牙应用的嵌入式项目,想法是 开发板+单独蓝牙模块,操作系统用linux,因为对硬件不熟悉,不知道选择那个平台的什么型号的开发板,恳请赐教,谢谢~~~…

查看全部问答>

LM3s8962体验之二----------- Keil µVision 4 目标工具选项详解

一、目标工具选项(Target Options …) µVision可以设置目标硬件的选项。通过下图1中的工具栏2区域按钮或1区域菜单项Project -> Options for Target打开Options for Target对话框。         & ...…

查看全部问答>

关于PCB的机械层和禁止布线层的问题

    小弟新手,在画PCB的时候碰到一些问题,我们设定板子边框的时候本来应该用机械层的,   但是很多时候我们用禁止布线层也可以,原因是因为PCB厂家知道我们的意思。       假设我们想在板子中间开一 ...…

查看全部问答>

手机万能充

当接入电源后,通过整流二极管VD1、R1给开关管Q1提供启动电流,使Q1开始导通,其集电极电流Ic在L1中线性增长,在L2中感应出使Q1基极为正,发射极为负的正反 馈电压,使Q1很快饱和。与此同时,感应电压给C1充电,随着C1充电电压的增高,Q1基极电位逐 ...…

查看全部问答>

请问Freescale MPC8377VRALG 的架构和CPU类型是什么?

我用的芯片是Freescale MPC8377VRALG,现在想用crosstool-ng编用在这块芯片上的交叉编译工具链。在crosstool-ng menuconfig配置中“Target options”下有几项不知道填写什么,请大家提供帮助。谢谢! Target options  --->   &nbs ...…

查看全部问答>