MSP430使用指南5 -> ICC中断控制器

发布者:genius6最新更新时间:2020-03-31 来源: eefocus关键字:MSP430  使用指南  ICC中断控制器 手机看文章 扫描二维码
随时随地手机看文章

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);

}

关键字:MSP430  使用指南  ICC中断控制器 引用地址:MSP430使用指南5 -> ICC中断控制器

上一篇:如何在IAR中通过Watch窗口观察局部变量的值
下一篇:MSP430使用指南8 -> WDT看门狗模块

推荐阅读最新更新时间:2024-11-06 07:51

一文读懂MSP430系列与89C5l系列的差异
msp430系列单片机是一种新型的16位单片机,主要特点就是功耗小,速度快,主要开发语言是c。开发环境有iar集成开发环境。 msp430单片机有不同系列,有f系列,c系列。比如f系列msp40f135表示的是rom是flash型的。常用的是f系列的13系列14系列。13系列的有msp430f133和msp430f135两种。14系列的有msp430f149msp430f144等。 比如msp4301f149有60KB的flash和2KB的ram。比起51的算是很大了。 c51单片机比较有代表性的如64KB的flash和1KB的ram算是很大了。 51单片机和430单片机的主要区别是51是8位的,430是16位的。开发
[单片机]
一文读懂<font color='red'>MSP430</font>系列与89C5l系列的差异
MSP430F1611学习笔记
/* MSP430的I/O口的驱动能力*/ 每个I/O口最大输出或者吸收电流为6mA 所有I/O电流总和不超过48mA // 晶振频率: 8.000200Mhz /*MSP430的3V与5V逻辑兼容性问题*/ MSP430单片机的任何一个引脚输入电压不能超过VCC+0.3V,不能低于-0.3V,否则将启动内部泄放电路.泄放电路最大只能吸收2mA电流,超过2mA可能会损坏I/O口. /* 发光二极管压降*/ 红色的压降为2.0--2.2V ×××的压降为1.8—2.0V 绿色的压降为3.0—3.2V。 正常发光时的额定电流均为20mA。 白色发光二极管的正向电压降约为3.5V左右,需要正向工作电流≥15mA左右时,才能使其正常发光。
[单片机]
MSP430家族继续扩大 推带DSP功能产品
日前,德州仪器宣布推出两款MSP430产品,分别为MSP430FR5994 MCU,该产品拥有256KB FRAM,同时其性能是其它低功耗MCU的40倍,能够通过全新且易于使用的集成型低能耗加速器(LEA)为开发人员提供数字信号处理(DSP)能力。以及MSP430FR2111 MCU。该产品可利用扩展的TI MCU Value Line产品组合升级原有的8位设计,同时也是首次在小型3mmx3mm QFN封装中包含统一FRAM存储器。 德州仪器MSP430中国区业务拓展经理刁勇,10年前来到德州仪器就开始从事MSP430相关业务,在32位MCU不断推陈出新的今日,MSP430作为老牌16位单片机,依然散发着茂盛的生命力,原因到底
[单片机]
<font color='red'>MSP430</font>家族继续扩大 推带DSP功能产品
MSP430学习笔记——头文件解析之看门狗
MSP430设定的方法方便,但前提是看懂头文件定义,只有这样才能更好的运用。 #define __MSP430_HAS_WDT__ #define WDTCTL_ (0x0120u) DEFW( WDTCTL , WDTCTL_) 这一段中让人费解的就是DEFW,百度可以知道它代表新版本对寄存器的定义。 #define DEFCW(name, address) __no_init union { struct { volatile unsigned char name##_L; volatile unsigned char n
[单片机]
μC/OS-Ⅱ在MSP430F149上的移植
    μC/OS-Ⅱ是一个源代码公开的嵌入式实时操作系统(RTOS),该操作系统理论上最多可以管理64个任务,一般应用时需要留出8个任务给系统本事使用,因此用户的应用程序最多可以有56个任务,μC/OS-Ⅱ的内核为完全可剥夺型实时内核,即系统总是运行就绪条件下优先级最高的任务,并支持信号量、邮箱、消息队列等多种进程间通讯机制,同时用户可以根据需求通过条件编译实现对内核中的功能模块的裁剪,此外μC/OS-Ⅱ 还具有可固化、中断管理、高稳定性和可靠性等特点,因此将μC/OS-Ⅱ移植到微处理器(MCU)上, 对于缩减产品开发和升级周期,提高可靠性和稳定性,降低成本方面有着重要的意义。以下主要讨论嵌入式实时操作系统μC/OS-Ⅱ在MSP
[嵌入式]
TI MSP430 如何实现模拟串口通信
1、背景: 很多时候由于硬件资源有限,但又需要使用串口通信,此时可以考虑使用模拟串口; 2、前提: 要实现特定bps的串口速率,需要相应频率的定时器,保证误码率在可以接受的范围内; 例如: 1MHz的时钟最高可模拟9600bps的通信速率:1M/9600 = 104 误码率 1% 3、参考代码: //****************************************************************************** // ACLK = TACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO // //* An ext
[单片机]
一种便携式多参数环境监测仪的设计
摘要:介绍一种基于MSP430系列超低功耗单片机的多参数环境监测仪,详细阐明了环境参数传感器的选取、监测仪软硬件的设计与实现方法。该仪器充分利用MSP430单片机自身资源,具有小型便携、高性能、低功耗、可编程等优点,可广泛应用于诸多领域的环境参数监测与保护。 本文以智能建筑为应用背景,介绍一种通用性很强的便携式多参数环境监测仪。它以MSP430F437超低功耗单片机为核心,配置新式的微型低功耗传感器,实现了建筑物内温度、湿度、光照度、有害气体浓度等参数的采集处理、存储、通信等功能。文中详细阐明了传感器的选取、硬件结构、软件流程等相关技术,并指出该仪器的特点和优势。 1 传感器的选取 传感器是决定监测仪精度的关键元件。传感器
[单片机]
一种便携式多参数环境监测仪的设计
基于MSP430单片机的开关稳压电源设计
1 引 言    MSP430 系列单片机是美国TI公司生产的新一代16位单片机,是一种超低功耗的混合信号处理器(MixedSignal Processor),它具有低电压、超低功耗、强大的处理能力、系统工作稳定、丰富的片内外设、方便开发等优点,具有很高的性价比,在工程控制等领域有着极其广泛的应用范围。开关Boost稳压电源利用开关器件控制、无源磁性元件及电容元件的能量存储特性,从输入电压源获取分离的能量,暂时把能量以磁场的形式存储在电感器中,或以电场的形式存储在电容器中,然后将能量转换到负载。对DC-DC主回路采用Boost升压斩波电路。 2 系统结构和总设计方案   本开关稳压电源是以 MSP430
[单片机]
基于<font color='red'>MSP430</font>单片机的开关稳压电源设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved