大连创客空间

 找回密码
 立即注册吧!

QQ登录

只需一步,快速开始

一键登录:

搜索
查看: 9295|回复: 51
收起左侧

【大赛原创经验贴】msp430中断小结(msp430G2553)

  [复制链接]
发表于 2012-7-22 20:28:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多交流,硬件的世界向你敞开大门!

您需要 登录 才可以下载或查看,没有帐号?立即注册吧!

x
   对launchpad这块板子的学习也快近二十天了,最大的感受是资料少,还有最坑爹的英文手册,不过十几天下来,嗨,自己的英文水平作为副产品的提升了,当然了,对msp430 的理解也不断的提高和深入,这其中不少的得益于坛里的高手们分享的他们的宝贵经验,给了我很大的启发.所以我也想把我学430 的一些心得同大家交流,这是我看手册总结的,如果有不对或遗漏的地方,还望大家踊跃的指正或补充。
   msp430最大的优点就是低功耗,这是其他单片机无法比的。除了一些硬件细节上的低功耗设计外,还有五种低功耗模式,而低功耗的唤醒当然离不开中断了。所以中断除了处理其他的相关的事情外,低功耗唤醒的重任也赋予于它。下面谈谈我对中断的理解,主要从(non)-maskable NMI interrupt和NMI interrupt、单源中断和多源中断进行介绍。希望大家踊跃跟帖进行指正和补充。

NMI和MI interrupt:
1: A (non)-maskable NMI interrupt can be generated by three sources :
(1)An edge on the RST/NMI pin when configured in NMI mode
(2)An oscillator fault occurs (晶体振荡器失效)
(3)An access violation to the flash memory(ACCVIE , ACCVIFG).(ACCVIE使能后,如果对flash的information  segment读或写,会引起ACCVIFG置位,发出中断请求)
!!!!!!!NOTES:  NMI 中断服务程序中需先清除中断标志位,然后重新使能中断!!!!!!!!!!
eg1:
#pragma vector=NMI_VECTOR
__interrupt void nmi_ (void)
{
  do
  {
    IFG1 &= ~OFIFG;                         // Clear OSCFault flag
    for (i = 0xFFF; i > 0; i--);            // Time for flag to set
    P1OUT ^= 0x01;                          // Toggle P1.0 using exclusive-OR
  }
  while (IFG1 & OFIFG);                     // OSCFault flag still set?
  IE1 |= OFIE;                              // Enable Osc Fault
}
eg2:RESET/NMI pin of NMI function
#pragma vector=NMI_VECTOR
__interrupt void nmi_ (void)
{
P1OUT ^= BIT6;
//_BIC_SR_IRQ(LPM0_bits);
for(j=0x0f;j>0;j---);
IFG1 &= ~NMIIFG;  
IE1 |= NMIIE;  
}
2: Maskable interrupts(可屏蔽中断)(with GIE enable):
板载的具有中断能力的外围模块,如:
(1)watchdog timer overflow in interval-timer mode.
(2)P1 and P2 Interrupts.
(3)timerA
包括timer0(timer0_A0和timer0_A1)和timer1(timer1_A0和timer1_A1)
对于timer0和timer1,各有两个中断向量,以timer0为例说明:
timer0中断向量:TIMER0_A1_VECTOR和TIMER0_A0_VECTOR
timer有三种功能模式----定时、比较和捕获.
下面对timer0中断向量和timer的功能的联系进行说明. (TA<TAIE>,       TACCR0、TACCR1(或)TACCR
        2<CCIE>)
定时功能:如果timerA值用作定时器,可以有三个定时器(TA、TACCR0和TACCR1),每个定时器有三种定时方式,有些定时器共用一个中断向量,TIMER0_A0_VECTOR专门为TACCR0配置,TA和TACCR1(对于timer1,还有TACCR2)共用TIMER0_A1_VECTOR,当多个中断同时发生,按优先级的先后顺序执行
eg1:TA定时器(TAIE)
#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer_A(void)
{
switch( TA0IV )
{
   case  2: break;                          // CCR1 not used
   case  4: break;                          // CCR2 not used
   case 10: P1OUT ^= 0x01;                  // overflow
            break;
}
}
eg2:TACCR0定时器(CCIE)
#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)
{
  P1OUT ^= 0x01;                            // Toggle P1.0
}
eg3:TACCR1定时器(CCIE)
#pragma vector=TIMER0_A1_VECTOR
__interrupt void Timer_A(void)
{
  switch( TA0IV )
  {
  case  2:                                  // CCR1
    {
    P1OUT ^= 0x01;                          // Toggle P1.0
    CCR1 += 50000;                          // Add Offset to CCR1
    }
           break;
  case  4: break;                           // CCR2 not used
  case 10: break;                           // overflow not used
}
}
比较功能:比较功能主要用于产生并输出PWM波形,TACCR0用来设定周期,TACCR1用来设定占空比,timer0可以输出1路PWM波(对于timer1,可以输出2路PWM波)
捕获功能:捕获功能可用于速度计算和时间测量。可通过CCISx bits选择捕获输入是CCI0A(对应于CCR0的设置),还是CCI1A(对应于CCR1的设置)(timer1对应于CCIxB).中断向量对应于定时功能中的介绍。(捕获模式下,建议选择同步捕获)
(3)Comparator_A+  Interrupts.
(4)ADC10   Interrupts.

等.......
单源中断和多源中断:
(1)单源中断:对于单源中断,进入中断服务程序后,硬件会自动清除中断标志位。无需软件清除.单源中断有:Comparator_A+  Interrupts 、ADC10   Interrupts、WDT  interrupt  in interval-timer mode、timer  interrupt等.
(2)多源中断:对于多源中断,进入中断服务程序后,需软件清除相应中断标志位.
多源中断有:(non)-maskable NMI interrupt 、P1 and P2 Interrupts等.

回复

使用道具 举报

发表于 2012-7-23 07:50:30 | 显示全部楼层
来支持一个。
回复 支持 反对

使用道具 举报

发表于 2012-7-23 10:08:54 | 显示全部楼层
新手来看看!学习经验
回复 支持 反对

使用道具 举报

发表于 2012-7-23 11:06:10 | 显示全部楼层
支持一个!
回复 支持 反对

使用道具 举报

发表于 2012-7-23 15:55:00 | 显示全部楼层
顶一个再慢慢细看
回复 支持 反对

使用道具 举报

发表于 2012-7-23 16:16:44 | 显示全部楼层
顶了再看~
回复 支持 反对

使用道具 举报

发表于 2012-7-23 16:25:15 | 显示全部楼层
顶哈!
回复 支持 反对

使用道具 举报

发表于 2012-7-23 22:05:08 | 显示全部楼层
新手顶
回复 支持 反对

使用道具 举报

发表于 2012-7-24 10:44:02 | 显示全部楼层
新手顶!!
回复 支持 反对

使用道具 举报

发表于 2012-7-24 13:27:11 | 显示全部楼层
学习了,定个
回复 支持 反对

使用道具 举报

发表于 2012-7-24 13:53:56 | 显示全部楼层
这个英文还真没提升啊,看得也挺辛苦的,顶了再说~
回复 支持 反对

使用道具 举报

发表于 2012-7-24 16:53:00 | 显示全部楼层
太强了,以后要多请教了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-24 18:02:33 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2012-7-26 08:30:21 | 显示全部楼层
有一种豁然开朗的感觉。
回复 支持 反对

使用道具 举报

发表于 2012-7-26 13:50:05 | 显示全部楼层
支持楼主,我们可是连二十天的机会都没得了
回复 支持 反对

使用道具 举报

发表于 2012-7-26 14:50:01 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2012-7-26 16:56:07 | 显示全部楼层
支持楼主。。
回复 支持 反对

使用道具 举报

发表于 2012-7-26 22:15:21 | 显示全部楼层
我们只有10天啦!!,超越啊,
回复 支持 反对

使用道具 举报

发表于 2012-7-26 23:24:16 | 显示全部楼层
好像全是数据手册上的东西
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-27 00:51:35 | 显示全部楼层
茈苼『荓あ柔★ 发表于 2012-7-26 13:50
支持楼主,我们可是连二十天的机会都没得了

那就更要加油啊!!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册吧!

本版积分规则

单片机开发者1群:235808606;会员QQ 6群:254085994; 1群:12835691(满); 2群:121061287(满); 3群:237320668(满);4群:249652919(满);5群:253578883(满);大赛1群:187926790(满),2群:231577758(满),3群:249652919(满)。 TI杯4群:58129202(满)。
载入中

QQ|手机版|小黑屋|Archiver|大连创客空间 ( 辽ICP备15004617号-2  

GMT+8, 2017-12-16 09:18 , Processed in 0.350772 second(s), 28 queries .

地址:辽宁省大连市高新园区火炬路7号17层 QQ:2401085253

Copyright © 2010-2015 创客空间(大连)科技有限公司 All Rights Reserved.

快速回复 返回顶部 返回列表