历史上的今天
返回首页

历史上的今天

今天是:2025年01月20日(星期一)

正在发生

2020年01月20日 | MSP430 使用一些理解

2020-01-20 来源:eefocus

1.中断嵌套,优先级 
430总中断的控制位是状态寄存器内的GIE位(该位在SR寄存器内),该位在复位状态下,所有的可屏蔽中断都不会发生响应。可屏蔽中断又分为单中断源和多中断源的。单中断源的一般响应了中断服务程序中断标志位就自动清零,而多中断源的则要求查询某个寄存器后中断标志位才会清零。由于大多数人接触的第一款单片机通常是51,51单片机CPU在响应低优先级的中断程序过程中若有更高优先级的中断发生,单片机就会去执行高优先级,这个过程已经产生了中断嵌套。而430单片机则不同,如果在响应低优先级中断服务程序的时候,即使来了更高优先级的中断服务请求,430也会置之不理,直至低优先级中断服务程序执行完毕,才会去响应高优先级中断。这是因为430在响应中断程序的时候,总中断GIE是复位状态的,如果要产生类似51的中断嵌套,只能在中断函数内再次置位GIE位。 

2.定时器TA 
TimerA有2个中断向量。TIMERA0,TIMERA1 
TIMERA0只针对CCR0的计数溢出 
TIMERA1再查询TAIV后可知道是CCR1,还是CCR2,亦或TAIFG引起的,至于TAIFG是什么情况下置位的,则要看TA工作的模式 
具体看用户手册。还有一点TA本身有PWM输出功能,无须借用中断功能。在这个问题上经常出现应用弯路的是如何结合TA和AD实行定时采样的问题,很多人都是在TA中断里打开AD这样来做。这是不适宜的,因为430 的ADC10,ADC12(SD16不熟悉,没发言权)模块均有脉冲采样模式和扩展采样模式。只要选择AD是由TA触发采样,然后把TA设置成PWM输出模式,当然输出PWM波的都是特殊功能脚,但是在这里它是不需要输出的,所以引脚设置不必理会。值得关心的就是PWM的频率,也就是你AD的采样率。 

3.看门狗复位 
看门狗有2种工作模式:定时器 ,看门狗 
定时器工作模式下WDTIFG在响应中断服务程序有标志位自动复位,而在看门狗模式下,该标志位只能软件清零。但是怎么判断复位是由于WDT工作在看门狗模式下的定时溢出引起的,还是看门狗写密钥错误引起的呢?……………………………… 
答案是没有方法,至少我没见过有什么方法,也没见过周边的人有什么方法。若有人知道方法谢谢分享。 
4.经常有人会问这个语句的MOV.B  #LPM0,0(SP)的作用。假如你在进入中断函数之前,430是在LPM0下待机,若要求执行完中断函数之后进入LPM3待机,在中断函数里写MOV.B  #LPM3,SR是无效的。因为在进入中断时430会把PC,SR压栈,( SR内保存着低功耗模式的设置)即使你写了MOV.B  #LPM3,SR,在退出中断出栈时SR会被重新设置成低功耗0,要达到这样的目的,只能更改堆栈内SR的设置:MOV.B  #LPM0,0(SP)。 

5中断向量: 
430的中断向量是FFE0H—FFFFH,一共32个字节也就是FLASH的最后一段,430的FLASH有大有小,但是最后地址肯定是FFFFH(大FLASH超过64K的除外)所以它们的起始地址是不一样的,而一般IAR默认编译都是把程序放在FLASH开始的位置(不包括信息段)。 
有个值得弄清楚的问题是:什么是中断向量?中断向量实际就是保存中断函数入口地址的存储单元空间。就像FFFEH+FFFFH这2个字节是复位中断向量,那么它存储的就是主函数在FLASH内的起始地址,假如主函数保存在以0x1100为起始地址的FLASH块内 ,那么你会发现FFFFH 内保存的是0x11, FFFE内保存的是0x00.其他什么TimerA,ADC12,所有的都一样。只是你每次写的程序长短不一,中断函数放的位置不一样。IAR编译器都会给你定好,然后在你用JTAG烧写程序的时候,把这个地址,烧写到相应的中断向量。因为中断函数所处地址可以由用户自定义,也可以让IAR自动编译,所以这个地址除了源代码开发人员知道,其他人是不知道的,BSL就是应用这32个字节的中断向量内的内容的特殊性设置的密码。但是有几个东西在430是不变的,就是触发中断的条件满足后,它到哪个地方去寻址中断服务函数的入口地址,是TI 在做430时就固化好,定死的。比方说上电复位的时候,它知道去FFFE,FFFF单元找地址,而不去FFE0,FFE2找地址,这个映射关系是430固化不变的。可有的时候你就是需要改变“中断向量”,这怎么办?430FLASH程序自升级里有时就会碰到这个问题,方法是在430原来默认的中断向量表内做一个跳转操作,同样以上电复位为例: 
ORG  0x2345 
PowerReset: mov.w  &0xFCFE,PC 
………………………… 
………………………… 
ORG  0xFFFE 
DW   PowerReset 
这样的话0xFCFE就相当是0xFFFE的映射了。这个在430程序自升级的TI应用报告里就有。 
有点晚,就到这里。有新的内容的话,我会添加。希望大家能够喜欢。

推荐阅读

史海拾趣

ACCRETECH公司的发展小趣事

ACCRETECH是一家日本的半导体设备制造公司,以下是该公司发展的五个相关故事:

  1. 公司成立和早期发展: ACCRETECH(前身为TOKYO SEIMITSU)成立于1949年,总部位于日本东京。最初,公司主要从事机械零件的生产,随着时代的发展,逐渐转型为半导体设备制造商。起初,ACCRETECH主要生产晶圆表面检测设备和测量设备。

  2. 技术创新和产品拓展: 随着半导体行业的快速发展,ACCRETECH不断进行技术创新,并逐步拓展产品线。公司推出了包括晶圆尺寸测量仪、晶圆表面检测仪、晶圆平整度检测仪等在内的多种半导体生产设备,满足了客户对高精度、高效率设备的需求。

  3. 市场扩张和国际合作: ACCRETECH积极拓展国内外市场,并与全球各地的客户建立了合作关系。公司的产品被广泛应用于半导体制造、集成电路测试、电子元件生产等领域,赢得了客户的信赖。ACCRETECH还与国际知名半导体企业展开合作,共同推动技术进步和产业发展。

  4. 持续投入研发和创新: ACCRETECH不断加大研发投入,致力于技术创新和产品升级。公司设立了专门的研究机构和实验室,拥有一支技术精湛的团队,致力于开发新产品和解决方案,满足客户不断提高的需求。

  5. 未来发展展望: ACCRETECH将继续致力于半导体设备制造领域的研发和应用,不断推出更先进、更可靠的产品和解决方案,满足客户在半导体生产过程中的需求。公司将加强国际市场拓展,提升自身在全球市场的竞争力,为行业的发展做出更大的贡献。

EXCELTA公司的发展小趣事

随着公司规模的扩大,产品质量的稳定性成为制约Excelta进一步发展的瓶颈。为了解决这一问题,公司决定引入先进的质量管理体系,并投入大量资源进行培训和改造。经过不懈的努力,Excelta的产品质量得到了显著提升,客户满意度也大幅提高。这一转变不仅为公司赢得了更多的订单,还奠定了公司在行业中的领先地位。

Boundary Devices公司的发展小趣事

为了进一步扩大市场份额,Boundary Devices积极实施国际化战略。公司通过与全球各地的合作伙伴建立合作关系,将产品推向国际市场。同时,公司还积极参加国际电子展会和技术交流活动,与全球同行进行深入的交流与合作,不断提升公司的国际影响力。

博林(BL)公司的发展小趣事

为了降低生产成本、提高生产效率,博林公司开始实施产业链整合战略。公司通过收购、兼并等方式,逐步掌握了从原材料供应到终端产品销售的完整产业链。同时,博林公司还积极向垂直化方向发展,涉足与电子产品相关的多个领域,如芯片设计、软件开发等。这种垂直化的发展模式使得博林公司在行业中更具竞争力,能够更好地应对市场变化和客户需求。

ENERGIZER公司的发展小趣事

ENERGIZER在电池技术的研发上一直处于行业领先地位。1957年,公司成功研制出首粒碱性电池,这一创新性的产品迅速占领了市场,成为了当时最受欢迎的电池产品之一。随后,ENERGIZER又相继推出了纽扣电池、测电带电池等一系列创新产品,不断满足消费者对电池的多样化需求。这些创新性的产品的研发和推广,进一步巩固了ENERGIZER在全球电池市场的领先地位。

Aptiv公司的发展小趣事

Aptiv一直秉持开放合作的理念,积极与产业链上下游企业开展创新合作。公司与多家科技公司、研究机构以及高校建立了战略合作关系,共同推动自动驾驶技术的研发和应用。通过共享资源、优势互补,Aptiv不仅加快了自身的发展步伐,还为整个电子行业的进步做出了积极贡献。

问答坊 | AI 解惑

LED行业究竟现状如何?

很早以前就知道led行业,但一直未做深入了解 , 今天去爬山碰到一个哥们, 向我吹嘘: 1.单多的做不完,要经常性加班. 2.很难在市场上招到合适的人 ,也就是有点led水平的人很难找 3.tcl和创维,不做led研发 ,而将研发生产全外包 4.利润好,银行 ...…

查看全部问答>

无线数传模块--全透明串口TTL、232、485电平

无线数传模块 无线数传模块   液晶模块 一. 功率:20mW - 1W     串行接口 TTL 、232、485可选,波特率1200----115200     电源:DC3.3V--5.5V     距离:500m-5Km   ...…

查看全部问答>

windows CE重启之后 怎样才能让自己对系统的修改设定保存下来呀?

1.我自己开发的程序,烤的到windows CE系统里面,重启就没有了,还有触摸屏的设定,usb conection的设定都没有了 2.usb conection的波特率对应注册表的哪个键值?…

查看全部问答>

关于2410唤醒的疑惑

我使用的平台是2410 ,系统为CE5.0   ,在做电源管理的时候遇到了如下的问题 1、能够休眠。 经过fw.s中的CPUPOWEROFF后系统可以确定是休眠了,理由是:PWREN 脚为低,CLK0,CLK1,SCK也都为低,虽然我没有把内核的1.8V分开,但是系统的 ...…

查看全部问答>

WIN CE 系统声音大小要如何改变

WIN CE 系统声音大小要如何改变? 我改了注册表里的 [HKEY_CURRENT_USER\\ControlPanel\\Volume]下面\"Volume\"这一项 但是改完了声音好像并没有改变。是不是还要做什么动作? 我看WIN CE 自带的Volurne&Sounds里声音一改变[HKEY_CURRENT_USER\ ...…

查看全部问答>

求助大家关于中断的问题

小弟在这里请问各位大虾:在一个中断服务程序里又遇到同一个中断会再次响应吗?进中断服务程序时已经把标志位清零了。…

查看全部问答>

调用API如何刷新另一窗口的RECT

正在写一个SIP的程序。 遇到了这样一个困难。 首先在生成SIP软面板的时候,创建了一个窗口,得到句柄hwndsip。 我可以在这个面板上直接TextOut就输出了文本,直接InvalidateRect就可以将文本清除掉,在同一窗口下做这样的一系列操作都没什么问题 ...…

查看全部问答>

程序怎样变成电路地?

由于刚学,可能提的问题不是太有价值,但突然想到,困惑很长时间。我们现在做单片机实验,流程是这样:先在IDE里用汇编写出了源程序,然后编译成*.HEX,然后调试状态全速运行,如果对的话就能看结果了。我有点晕,这源文件变成1 0后怎样变成高低电 ...…

查看全部问答>

如何开发WINCE5.0 环境下的NDIS网络驱动

主要是如何初始化那个微端口驱动程序,具体操作是什么?我的PC安装了EVC 4SP4和PB 5.0,还需要怎么做才能开发NDIS网络驱动? 这个驱动程序最后是要写入S3C2440开发板上运行的…

查看全部问答>

【设计工具】赛灵思FPGA PLL 动态重配置技巧

          本应用指南首先介绍了通过动态重配置端口 (DRP) 对Spartan-6 FPGA 锁相环(PLL) 的时钟输出频率、相移及占空比进行动态修改的方法。在阐述了内部DRP 控制寄存器的功能后,提供了一个通过状 ...…

查看全部问答>