历史上的今天
返回首页

历史上的今天

今天是:2025年03月31日(星期一)

正在发生

2020年03月31日 | MSP430使用指南5 -> ICC中断控制器

2020-03-31 来源:eefocus

ICC,即Interrupt Compare Controller,中断比较控制器,作用便是设定中断优先级,同时通过比较中断优先级等实现中断的硬件嵌套。


首先普及一下MSP430的中断系统,大部分的MSP430  MCU中断优先级是不能设置的,也就是说对于每一个中断源的优先级是体现设定好的,不支持后期用户自动设置,因此可以说如果正在执行低优先级的程序,突然来了一个高的优先级中断,是可以打断低优先级的服务程序的,但是前提是进入低优先级中断服务程序时开启了全局中断即GIE。但是如果高优先级中断正在执行服务程序,来了一个低优先级的中断,那么只能等待高优先级中断服务程序执行完之后,才可以去执行低优先级的中断服务程序,这样也就是说不能灵活实现中断的嵌套。


ICC模块就是为了解决这个问题而出现的,即可以通过寄存器配置,来实现低优先级的中断打断高优先级的中断,这就需要比较电路了,ICC内部就是这个原理,内部结构如下图所示:


目前到2019年低为止,MSP430 MCU(16bit)只有四款含有ICC模块:MSP430FR3153,MSP430FR2155, MSP430FR2353, MSP430FR2355。

下面再简单的描述一下中断嵌套的含义,如下图所示,ISR2优先级高于ISR1,那么在正在只从ISR1程序时,遇到ISR2时,则会先把ISR1暂停一下,去执行ISR2,当ISR2执行完之后,返回再接着执行ISR1。

而MCU时如何实现去执行另一个程序,执行完之后再返回原本的点执行程序的呢?如下图所示,这个就类似与中断向量即堆栈,分为Push和Pop,首先当正在执行ISR1时,遇到了ISR2中断,那么MCU会把ISR1当前执行的程序地址推入堆栈保存起来,然后把ISR2的中断向量填入PC指针,去执行ISR2的程序,当ISR2程序执行完后,再从堆栈中读出当时保存的ISR1执行的程序地址,然后接着执行。


入栈如下图所示:

出栈如下图所示:

下面介绍一下ICC相关的寄存器,比较简单,因为你会发现,核心的两个寄存器,只有一位是读写的,其他都是只读寄存器,先附上所有寄存器的信息:

从上图可以看到,寄存器可以归为三个:ICCSC,ICCMVS,ICCILSRx。


ICCSC,ICC控制寄存器

你会发现,这个寄存器里,只有一位ICCEN(使能ICC功能寄存器)是支持读写操作的,其他的均为只读位,VSEFLG是堆栈标志位,可以通过观察此位的值来查看是否产生了ICC中断嵌套,因为出现嵌套的话,肯定会存在Push和Pop操作。


VSFLG位(这个User guide中标错了,应该是VSFLG而不是VSEFLG),这个是标注着ICCMVS寄存器中的MVSSP是否满了,也就是堆栈是否存满了。


ICMC则是当前比较的中断的设置优先级。(注意:这里的设置优先级不是默认的那个什么59 60之类的数,是通过ICCILSRx寄存器设定的,可以设定四个优先级,因为只有两位,具体见ICCILSRx寄存器配置)。


ICCMVS  可屏蔽中断堆栈寄存器

这个寄存器里面所有的位均为制度寄存器,其实就是存储着:当前堆栈了几个中断,然后ICM0-ICM3是比较位,也就是当前参与中断比较的这四位分别是谁而已。不需要用户设置,在调试中可能会使用。


ICCILSRx  中断优先级寄存器

ICCILSRx中断优先级寄存器有8个,每个寄存器里可以配置8个中断源,因此总共可以配置64个中断源,每个中断源对应那个资源的中断请查看每个芯片的datasheet,如下图所示是MSP430FR2355的中断源对应表:

OK,在功能和寄存器都描述完之后,我们来看一下使用过程中需要注意哪些点,或者说我们应该怎么正确的使用ICC资源。


下图是在Main函数中使用ICC的流程:

需要注意的是ICC使能和GIE使能的顺序即失能的顺序,即可以理解为,在使能或者失能ICC中断时,均要处于全局中断失能的状态下(即GIE=0),如下图所示,图中Disable  ICC处有点错误,我已经标明:

另外为了保证ICC功能的稳定正常运行,强烈建议用户在进入中断服务程序后使能GIE中断,因为在执行一个中断服务程序时,需要打开整体的中断使能,这样才能允许其他中断产生,从而才不会阻挡中断嵌套的功能,流程如下图所示:

最后附上使能ICC和失能ICC的程序:


ICC使能  Enable ICC Code Example:

//---------------------------------------------------------------------------------------

// Initializing and Enabling ICC

//---------------------------------------------------------------------------------------

 

void ICC_init (void)

{

    // disable global interrupt

    __bic_SR_register(GIE);

    // setting customized interrupt priorities.

    ICCILSR0 = 0xFFFF;

    ICCILSR1 = 0xFFFF;

    ICCILSR2 = 0xFFFF;

    ICCILSR3 = 0xFFFC;

    // enable ICC module

    ICCSC |= ICCEN;

    // enable global interrupt

    __bis_SR_register(GIE);

}

 


ICC失能  Disable ICC Code Example:

//---------------------------------------------------------------------------------------

// Disabling ICC

//---------------------------------------------------------------------------------------

 

void ICC_disable (void)

{

    // disable global interrupt

    __bic_SR_register(GIE);

    // enable ICC module

    ICCSC &= ~ICCEN;

    // enable global interrupt

    __bis_SR_register(GIE);

}

推荐阅读

史海拾趣

Andon Electronics公司的发展小趣事

Andon Electronics 是一家全球领先的电子元件制造商,以下是该公司发展的相关故事:

  1. 公司成立与初期发展:Andon Electronics 成立于 1984 年,总部位于美国加利福尼亚州。最初,公司主要从事 LED 和其他电子元件的生产和销售。由于对高质量产品和客户服务的执着追求,公司迅速赢得了客户的信任和好评。

  2. 技术创新与产品拓展:随着市场需求的变化和技术的进步,Andon Electronics 不断进行技术创新,并逐步扩大产品线。除了 LED 产品外,公司还推出了多种其他电子元件,包括连接器、电缆组件、线束和传感器等。这些产品在汽车、工业、通信和消费电子等领域得到了广泛应用。

  3. 质量管理和认证:Andon Electronics 一直致力于质量管理和产品认证,确保产品符合国际标准和客户要求。公司拥有 ISO 9001 质量管理体系认证,并不断优化生产流程和质量控制体系,以确保产品质量的稳定性和可靠性。

  4. 全球布局和市场拓展:随着业务的不断发展,Andon Electronics 在全球建立了多个生产基地和销售办事处。除了在美国的总部和生产基地外,公司还在亚洲、欧洲和其他地区设立了办事处和生产工厂,以更好地服务全球客户,并适应当地市场的需求。

  5. 可持续发展和未来展望:Andon Electronics 将继续致力于技术创新、产品拓展和质量管理,以满足客户不断变化的需求。公司将继续关注环保和可持续发展,推动节能减排和资源利用效率的提升。同时,Andon Electronics 也将积极响应行业的变革和挑战,不断调整战略,保持在电子元件制造业的领先地位。

峰岹(Fortior Tech )公司的发展小趣事

对于大型温室排气扇自动控制电路,网友们可能会提出一系列问题,这些问题涵盖了设计、功能、维护、能效以及安全性等多个方面。以下是一些常见问题及其回答示例:

1. 如何设计自动控制系统以确保温室内的温度和湿度保持在最佳范围?

回答
设计自动控制系统时,通常会集成温度传感器和湿度传感器,这些传感器实时监测温室内的环境参数,并将数据发送给控制器(如PLC或微控制器)。控制器根据预设的阈值(如温度上限、下限,湿度目标范围等)判断是否需要启动或调整排气扇的转速。此外,还可以加入光照强度、CO₂浓度等传感器,以更全面地控制温室环境。

2. 排气扇的自动启停是如何实现的?

回答
排气扇的自动启停通常通过继电器或固态继电器(SSR)控制。当控制器判断需要调整温室环境时,会发送信号给继电器,继电器闭合或断开电路,从而控制排气扇的电源通断。对于需要调节风速的排气扇,则可能采用变频驱动器(VFD)来控制电机的转速。

3. 如何保证自动控制系统在断电后能够恢复工作状态?

回答
为了确保系统在断电后能恢复工作状态,可以设计非易失性存储器(如EEPROM)来保存关键参数和设置。当系统重新上电时,控制器会读取这些参数并自动恢复到断电前的配置状态。此外,还可以加入备用电源(如UPS)来确保在短暂停电期间系统能够继续运行。

4. 如何提高自动控制系统的能效?

回答
提高能效的方法包括:

  • 使用高效节能的排气扇和电机。
  • 采用智能控制算法,如PID控制,精确调节排气扇的转速以匹配实际需求,避免过度或不足排气。
  • 引入自然通风策略,在适宜条件下减少机械通风的使用。
  • 定期检查和维护系统,确保传感器准确、设备无故障运行。

5. 自动控制系统在应对极端天气条件时有哪些安全措施?

回答
在应对极端天气条件时,自动控制系统应具备以下安全措施:

  • 增设防雷击保护装置,防止雷电对系统造成损害。
  • 设计防水防尘的传感器和控制器外壳,确保在恶劣天气下仍能正常工作。
  • 监控系统的运行状态,设置故障报警和自动停机功能,一旦检测到异常情况立即采取措施。
  • 备份关键数据和设置,以防数据丢失导致系统无法恢复。

这些问题和回答涵盖了大型温室排气扇自动控制电路的主要关注点,有助于理解和设计更加高效、安全、可靠的自动控制系统。

E-T-A Circuit Breakers公司的发展小趣事

进入21世纪后,E-T-A公司继续加大在研发和技术创新方面的投入,推出了一系列智能电路保护解决方案。这些解决方案结合了先进的传感器技术、数据分析和人工智能技术,能够实时监测电气系统的运行状态,预测潜在风险,并提供智能化的保护和控制策略。这些创新产品不仅提高了电气系统的安全性和可靠性,也为客户带来了更高的经济效益和社会效益。

Arima Lasers Corp公司的发展小趣事

Arima Lasers Corp深知人才是企业发展的核心驱动力。因此,公司高度重视人才培养和团队建设。通过制定完善的培训计划和激励机制,公司吸引了一批批优秀的研发人才和管理人才。这些人才为公司的发展注入了源源不断的动力,推动了公司在技术、市场和管理等各个方面的全面提升。

CHENMKO公司的发展小趣事

在激烈的市场竞争中,Arima Lasers Corp始终保持着创新的步伐。公司不断投入研发资源,探索激光技术在各个领域的应用潜力。其中,一项关于激光通信技术的创新项目引起了业界的广泛关注。这项技术利用激光束进行高速数据传输,具有传输速率快、安全性高等优点。随着该技术的商业化应用,Arima Lasers Corp在通信领域取得了重大突破,引领了市场变革的潮流。

静芯微电子(ElecSuper)公司的发展小趣事

随着技术的不断进步和市场需求的不断变化,静芯微电子开始拓展产品线。公司不仅继续深耕ESD/TVS领域,还逐渐涉足了RS485、HALL、电源、接口等芯片的研发和生产。这些新产品的推出不仅丰富了公司的产品线,还进一步扩大了静芯微电子在电子行业的应用范围。目前,静芯微电子的产品已经广泛应用于汽车电子、工业控制、消费电子等领域,并与多家知名品牌建立了深度合作。

问答坊 | AI 解惑

中华人民共和国行业标准-印制电路板设计技术指导文件

中华人民共和国行业标准-印制电路板设计技术指导文件。…

查看全部问答>

dB及dBm的含义转换

1、功率( W ): 相对 1 瓦( Watts )的线性水准。例如,WiFi 无线网卡的发射功率通常为 0.036W ,或者说36mW 。 2、增益( dBm ):相对 1 毫瓦( milliwatt )的比例水准。例如 WiFi 无线网卡的发射 增益 为 15.56dBm 。 两种表达方式可以互相 ...…

查看全部问答>

MedelSim和QuartusII6.0联合仿真

打开一个QuartusII工程后首先进行对其设置,如下图 Step1:Settings->EDA Tool Settings->Tool name选择ModelSim Step2:Tool name下的复选框选上,并在下面选择语言(VHDL或Verilog) Step3:在主菜单的Tools下选择Options...项 Step4:在如 ...…

查看全部问答>

深夜求救:程序太大了?

link后的信息为: 3 474 bytes of CODE memory 121 bytes of DATA memory (+ 21 absolute ) 1 796 bytes of CONST memory 烧录进去后 结果不正确 现象异常 用的是2K RAM 64K FLASH 是不是程序太大了?请教各位。…

查看全部问答>

求 AD9854 PCB空板

哪位大哥有单独AD9854的空板PCB啊,因为芯片自个有了!所以不要集成了芯片的模块(不要带有单片机集成在板子上),小弟想要购买一个板子。可加QQ:960071627…

查看全部问答>

I2C读数据问题

STM32模拟了一个I2C。 PORTB.9做SDA,发送从机地址给铁电存储器之后,发现不能收到铁电传回来的应答信号。GPIOB->IDR第九位为低电平才算应答吧,该位一直为高。 .从该口读取外部铁电存储器的时候发现,不管读到哪个存储单元,GPIOB->IDR的值 ...…

查看全部问答>

TQ2440 linux PDA 源码(adc,beep,button,colour,gps,led,输入法库)

这里提供的是TQ2440 linuxPDA源码,包括adc,beep,button,colour,gps,led,输入法库,需要的可以下载。广州天嵌提供学习源码,供嵌入式学习爱好者参考,授人以渔,共同学习。…

查看全部问答>

15分钟完美DIY:无线充电器,简单粗暴!

看别人做的无线供电,你不羡慕么?、可是复杂的电路找不到的元器件是不是打消了你的DIY的心!!别灰心今天就教你做最简单的无线输电。所谓的无线充电是指利用电磁波感应原理进行充电的设备,原理类似于变压器。在发送和接收端各有一个线圈,发送端 ...…

查看全部问答>

锤子手机用德州仪器 的OPA2604音频芯片,看看为啥?

本帖最后由 dontium 于 2015-1-23 11:09 编辑 锤子手机的参数,相信大家都清楚了,采用4.95寸1080P屏幕,高通骁龙801 2.5GHz处理器,2G Ram,eMMC 5.0闪存,后置1300万像素摄像头(索尼IMX214),前置500万像素(OV5648),采用美国德州仪器发烧级 ...…

查看全部问答>