历史上的今天
返回首页

历史上的今天

今天是:2025年05月14日(星期三)

正在发生

2021年05月14日 | 使用MSP430F1121中断须要注意的问题

2021-05-14 来源:eefocus

MSP430F1121(下面简称F1121)是TI公司新近推出的一款廉价的20引脚低功耗16位Flash单片机。它所具备的多种中断功能使其应用灵活,并适用于各种不同的应用领域。


不过,我们在应用开发中发现,厂家提供的技术文件虽然不少,但是对有关中断的说明却不那么详尽,这就给应用开发造成了诸多不便。为此,我们专门用程序进行了一些试验,并从中明确了一些问题。在这里,我们就把这些问题说明一下,供大家参考。


在说明这些问题之前,有必要先来看一下F1121的中断,如表1所列。


表1 F1121中断


F1121的各个中断都有对应的中断向量和中断优先级,通常被分为三类:系统复位、(非)屏蔽中断和可屏蔽中断。此外,F1121的各中断又分单源中断和多源中断,对应的中断标志称为单源中断标志和多源中断标志。


一、 系统复位


从形式上讲,可以把系统复位看成一种中断,但这是一种特殊的中断,虽然它也有中断向量(复位向量)和中断优先级,但与通常意义的中断有明显的区别:系统复位导致系统进入初始状态,并迫使程序从头开始运行。


1. 导致系统复位的情况及POR和PUC信号


有4种情况能够导致系统复位,并且产生POR(Power-On Reset)和PUC(Power-Up Clear)信号:


· 上电复位——产生POR和PUC;

· RST复位(外部复位信号复位)——产生POR和PUC;

· 看门狗中断——仅产生PUC;

· 关键码错误中断——仅产生PUC。


POR和PUC都是系统复位时产生的芯片内部信号,负责对寄存器进行初始化。在F1121提供的技术文件中,由PUC信号负责初始化的那些寄存器位,其初始状态用“0”和“1”来表示,而由POR信号负责的,用“(0)”和“(1)”来表示。


不同的系统复位情况产生不同的PUC和POR,因而产生不同的系统初始化结果。例如,对于BCSCTL1寄存器,不管是什么原因造成了系统复位,其低4位都将回到初始状态上;高4位只有在上电复位和RST复位这两种情况下才会回到初始状态,而在其他情况下(除非芯片掉电)其状态保持不变。


2. 看门狗中断标志WDTIFG


看门狗定时器有两种工作方式,且都使用中断标志WDTIFG,但它们的表现却有明显的区别。在看门狗工作方式下(产生导致系统复位的看门狗中断),其表现为:当发生看门狗中断而导致系统复位时,WDTIFG将置“1”(其他复位情况下为“0”)。这时的WDTIFG不能自动清“0”,只有等待软件(程序指令)将其清“0”。不过即使不清“0”(无论WDTIFG是“1”还是“0”),也不会影响程序的运行,而且也不会妨碍再次产生看门狗中断。实际上,这时的WDTIFG仅仅是标记一下是否产生了看门狗中断的作用,以便区分系统复位的原因。另一个导致系统复位的关键码错误中断的中断标志KEYV的情况也是如此。


另外,中断使能位WDTIE对看门狗中断不起任何作用。


二、 中断


中断分为可屏蔽中断和非屏蔽中断,区分它们的惟一准则是GIE(可屏蔽中断使能总控制位)能否禁止其中断。凡是能被GIE禁止的就是可屏蔽中断,不能被禁止的就是非屏蔽中断。


但是在F1121中,真正的非屏蔽中断只有看门狗中断和关键码错误中断。这两种中断却不是普通意义的中断,因为它们会导致系统复位。除此之外,还有三种中断属于非屏蔽中断的范畴,但它们却不是真正的非屏蔽中断,因为它们各自都有自己的中断使能控制位,这些中断使能控制位能够屏蔽它们的中断。所以,对这三种中断用“(非)屏蔽中断”来表示。


1. 中断标志


无论可屏蔽中断还是(非)屏蔽中断都有自己的中断标志,其共同特点是:① 中断标志的状态与该中断源能否产生中断无关。或者说,不管是否允许其中断,只要满足了中断的条件,中断标志就会置“1”。另外,也可以用软件将中断标志置“1”或清“0”。② 中断源就是通过中断标志请求中断的(当允许其中断时)。下面以(看门狗)定时器中断(不同于看门狗中断,它产生可屏蔽中断,中断向量为FFF4h,中断优先级是10)为例进行说明。


· 在允许其中断的情况下,无论什么原因,只要WDTIFG置“1”就会产生中断。例如,定时器溢出(这时WDTIFG置“1”)会产生中断,用软件强行将WDTIFG置“1”也会产生中断。

· 如果在中断被禁止的情况下WDTIFG已经置“1”,那么一旦允许,它就会产生中断。

· 如果在中断被禁止的情况下WDTIFG已经置“1”,但是,假如在允许它中断之前将其清“0”,那么,即使允许,它也不会产生中断。


中断标志分为两种——单源中断标志和多源中断标志,它们有不同的特性。


(1) 单源中断标志

如果一个中断向量(也就是中断处理程序)只对应惟一的一个中断源,那么,这个中断就被称为单源中断,其中断标志就是单源中断标志。例如,(看门狗)定时器中断的WDTIFG、比较器A中断的CAIFG和定时器A中断的CCIFG0都是单源中断标志。

单源中断标志的特性是:当单源中断被响应时,其单源中断标志将会自动清“0”。

但须注意,如果在中断处理过程中(中断返回之前)这个单源中断标志又重新被置“1”,那么,它就不会自动清“0”了,只有用软件才能将其清“0”。


(2) 多源中断标志

如果一个中断向量对应于多个中断源(即多个中断共用一个中断处理程序),那么这些中断都称为多源中断,对应的各个中断标志都是多源中断标志。例如,三个(非)屏蔽中断的NMIIFG、OFIFG、ACCVIFG以及定时器A中断的CCIFG1、CCIFG2、TAIFG和P1及P2口的所有中断标志都是多源中断标志。

多源中断标志的特性是:当多源中断被响应时,多源中断标志不能自动清“0”,只能用软件才能将其清“0”。因此,一定不要忘记在中断返回之前将多源中断标志清“0”;否则,当中断返回后,这个没有被清“0”的中断标志马上就会再次请求中断。


2. (非)屏蔽中断


一共有三个(非)屏蔽中断:NMI中断、振荡器故障中断和Flash读写错误中断。它们不受GIE状态的影响,但各自都有中断使能位:NMIIE、OFIE和ACCVIE,只有当中断使能位被置位后,才能允许对应的中断源产生中断。


注意:对这三个(非)屏蔽中断来说,只要响应了其中的一个中断,所有这三个中断使能位就会全部自动复位,而且一直保持在复位状态上,即使中断返回后它们也不会自动恢复为先前的状态,所以,需要用软件才能将它们重新置位。另外须注意的是,这三个中断都是多源中断。


3. 可屏蔽中断和GIE


能够被GIE禁止的中断都是可屏蔽中断,其中有的是单源中断(单源中断标志),有的是多源中断(多源中断标志)。所有这些中断都有各自的中断使能位,只有当中断使能位被置位并且GIE置位后,才能允许对应的中断源产生中断。除了系统复位或者用软件进行改写之外,其他任何情况(包括中断响应或中断返回等)都不会对这些中断使能位的状态产生影响。


GIE是可屏蔽中断使能总控制位,当它复位时禁止所有可屏蔽中断源请求中断,当它置位时才有可能允许它们请求中断(能否允许还取决于它们各自的中断使能位的状态)。


注意:当响应了任何一个中断时,包括可屏蔽中断和(非)屏蔽中断,GIE将会自动复位;当中断返回时它又会自动恢复为中断前的状态(除非在中断处理期间改写了保存在堆栈中的GIE的内容)。


如果在中断处理期间用软件将已经复位的GIE重新置位,这时就可以形成可屏蔽中断嵌套。


4. 中断优先级


F1121的中断优先级与其他微处理器中的概念略有不同:它只对同时发生多个中断的情况有效(级别高的中断优先被响应),而对中断嵌套的情况没有任何限制。


5. 中断嵌套


如果在处理某一中断期间又响应了其他中断请求,这时就会形成中断嵌套。中断嵌套时,前一中断处理过程被暂停,当后一中断被处理完之后才会继续处理前一中断。


注意:只有在中断处理期间将GIE重新置位,可屏蔽中断才能够嵌入到这个中断的处理之中;但(非)屏蔽中断却不受此限制,它们可以随时嵌入到任何处理之中(如果允许其中断的话)。另外,F1121的中断嵌套不受中断优先级的任何限制。也就是说,高级别中断可以嵌入到低级别中断的处理过程中;反过来,低级别中断也可以嵌入到高级别的中断处理过程中,甚至可以形成自身嵌套。这些情况对(非)屏蔽中断也不例外。因此,在使用F1121时须特别注意这一点,即使不是有意使用中断嵌套,也必须考虑这一问题,因为这时仍会存在发生中断嵌套的可能,而且,如果嵌套会影响中断的某一(些)状态的话,就有可能造成系统运行错误。


推荐阅读

史海拾趣

Herley New York公司的发展小趣事

Hengstler GmbH在电子行业中的五个发展故事

故事一:从钟表工坊到工业计数器的先驱

Hengstler GmbH的故事始于1846年,当时创始人Johannes Hengstler在德国西南部的奥尔丁根镇开设了一家钟表工坊,专注于生产钟表弹簧。随着时间的推移,Hengstler逐渐扩展其业务领域。1926年,公司收购了Efunda公司的计数装置业务,这标志着Hengstler正式进入工业计数和控制元件领域。此后,Hengstler不断推出创新产品,如20世纪50年代发布的革命性“计数系统400”,这是一种带有插件系统的塑料计数系统,不仅功能强大,而且价格实惠,极大地推动了公司在市场上的地位。

故事二:技术革新与全球化布局

进入20世纪后半叶,Hengstler继续加大技术研发投入,并在全球范围内扩展其业务。1962年,公司在英国成立了第一家海外子公司,随后几年内,在法国、比利时、加拿大、意大利和日本等地也相继设立了分支机构。这些举措不仅增强了Hengstler的国际影响力,还使其能够更好地服务全球客户。同时,公司还引入了先进的生产设备和技术,如塑料注塑成型机,实现了塑料部件的大批量生产,进一步提升了产品质量和生产效率。

故事三:编码器技术的突破

在编码器技术方面,Hengstler也取得了显著成就。公司不断推出新型编码器产品,如光电增量型编码器RI58-O/RI58-T,其分辨率高达10,000脉冲和40,000步,防护等级达到IP67,广泛应用于各种工业场合。此外,公司还开发了重载磁性绝对值型编码器AR62/63,该编码器具有极高的抗冲击和抗振动能力,适用于恶劣环境下的使用。这些产品的推出不仅丰富了Hengstler的产品线,还进一步巩固了其在编码器领域的领先地位。

故事四:被丹纳赫收购后的新发展

1995年,Hengstler被美国丹纳赫公司收购,成为其旗下的一员。这一收购为Hengstler带来了更多的资源和支持,推动了公司的进一步发展。在丹纳赫的支持下,Hengstler加大了对新技术和新产品的研发力度,不断推出具有创新性和竞争力的产品。同时,公司还加强了与国际市场的联系和合作,进一步提升了其国际竞争力。

故事五:持续创新与客户服务

多年来,Hengstler始终坚持创新和服务至上的理念。公司不断投入研发资金,引进先进技术和设备,提升产品质量和生产效率。同时,公司还注重客户服务,建立了完善的售后服务体系,为客户提供及时、专业的技术支持和解决方案。这些努力不仅赢得了客户的信任和好评,还使Hengstler在电子行业中保持了良好的声誉和地位。如今,Hengstler已成为全球领先的工业计数和控制元件制造商之一,其产品广泛应用于自动化技术、风力发电机、商用车辆、售票机和医疗等领域。

Coil-Q Corporation公司的发展小趣事

随着全球环保意识的提高,Coil-Q积极响应绿色发展的号召,将环保理念融入公司的生产和经营中。公司投入大量资金研发环保材料和技术,优化生产工艺,降低能耗和排放。同时,Coil-Q还积极参与环保公益活动,推动行业的绿色转型。

A1 PROS公司的发展小趣事

随着公司在韩国本土市场的稳步发展,A1 PROS开始积极寻求国际市场的拓展。公司以韩国母公司为研发和生产中心,面向台湾、香港、中国大陆以及中东、欧美等地区开展业务。通过不断优化产品设计和提升生产效率,A1 PROS的产品逐渐在国际市场上占据了一席之地。同时,公司还积极参加各类国际电子展会和技术交流会,与全球同行建立了广泛的合作关系。

Bridgelux公司的发展小趣事

Bridgelux在LED照明技术方面取得了重要突破。公司研发出了一种新型的LED芯片结构,提高了光效和稳定性,降低了成本。这一创新使得Bridgelux的产品在市场上更具竞争力,也为其赢得了众多客户的青睐。同时,公司还注重知识产权保护,积极申请专利,确保自身技术的领先地位。

Advanced Thermal Products Inc公司的发展小趣事

ATP公司深知品质是企业生存和发展的基石。因此,他们建立了严格的质量管理体系,从原材料采购到产品出厂的每一个环节都进行严格把控。同时,公司注重品牌建设,通过广告宣传、参加展会等方式提升品牌知名度和美誉度。这些举措使得ATP公司在市场上逐渐树立了良好的品牌形象。

Caliber公司的发展小趣事

Caliber公司自创立之初,便以技术创新为核心竞争力。在电子行业的早期,该公司敏锐地捕捉到市场对高性能计算芯片的需求,投入大量资源进行研发。经过数年的努力,Caliber成功推出了一款具有划时代意义的芯片产品,以其出色的性能和稳定性赢得了市场的广泛认可。这一创新不仅为Caliber带来了巨大的商业成功,也为整个电子行业的发展注入了新的活力。

问答坊 | AI 解惑

DC-DC转换器 XC6383系列.pdf

DC-DC转换器 XC6383系列该文章很详细的介绍了许多转换器系列的单片机很有收藏价值…

查看全部问答>

用FPGA技术实现模拟雷达信号

前言 FPGA(现场可编程门阵列)是由掩膜可编程门阵列和PLD(可编程逻辑器件)演变而来的,并将二者的特性结合在一起,使FPGA既有掩膜可编程门阵列的高逻辑密度和通用性,又有PLD的可编程特性。FPAG技术的发展使得单个芯片上集成的逻辑门数越来越多 ...…

查看全部问答>

关于射频卡的操作

最近想看看关于射频卡部分,我有个读卡器,可是目前还是不太清楚对卡内存储区的数据操作,能读卡的ID号!大家 可以讲一下具体的操作过程 吗,有相关的资料也可以!比如读mifare的操作! [ 本帖最后由 daicheng 于 2010-3-15 10:23 编辑 ]…

查看全部问答>

DELPHI-plc通讯

请问那位大侠会DELPHI与plc通讯,开发监控系统。…

查看全部问答>

S3C2440, 休眠时直接跑飞

代码如下,我通过亮灯显示执行情况,发现我执行休眠时,在设置内存自刷新后,就直接跑飞了。不知道为何? ;      7. Go to Power-Off Mode ldr r0, =vMISCCR ; hit the TLB ldr r0, [r0] ldr r0, =vCLKCON ldr r0, [r0] ...…

查看全部问答>

新手求教Serdes的Deterministic Latency模式 pattern信号与0xBC对不齐 数据检测出错

如题,本人正在使用Cyclone IV GX EP4CGX75CF23,现在在调试serdes的时候遇到了大问题,还请知道的好心朋友帮指导指导,先提前谢过了! Serdes使用的Deterministic Latency模式做收发器,现发现接收到的rx_patterndetect信号有时候与0xBC对不齐, ...…

查看全部问答>

能用电阻、电容等来模拟电池的充放电吗?

想用电阻、电容等来模拟充电电池、比如锂电池,不知道应该如何模拟,电阻串电容、还是电阻并电容,容值如何选择?希望得到大家的指点。…

查看全部问答>

【我与TI的结缘】TI伴我成长

提到TI,不得不说,缘分还真近,听我从头说起。     其实我的专业是网络工程,这个专业其实与电类专业没啥交集,能有点关系的就是计算机体系结构的基础课程—数字电路与逻辑设计,稍微讲了讲常用数字器件与非门什么的。然而,在内心深处 ...…

查看全部问答>

我的SD传感器数据怎么来的?

今天不经意间在手机SD卡里面看到保存的.CSV格式的传感器数据,打开一看,确认就是SensorTile开发板数据,于是今天再看了看程序。记录如下 SD保存文件如下,每个传感器一个文件 打开气压传感器,数据如下 其中时间戳值变化感觉和手机界面的曲线的 ...…

查看全部问答>