当前位置:首页 > 单片机 > 单片机
[导读]   本文主要介绍TIMSP430微控制器软件编程设计中的实践经验和应用技巧。  第一部分讲述基于中断的标准程序流程模式,适用于大多数的产品应用编程;另外一部分讲述MSP430微控制器编程人员在开发产品时

  本文主要介绍TIMSP430微控制器软件编程设计中的实践经验和应用技巧。

  第一部分讲述基于中断的标准程序流程模式,适用于大多数的产品应用编程;另外一部分讲述MSP430微控制器编程人员在开发产品时需要注意的一些关键问题、重要方法与注意事项,如:程序初始化流程,晶振初始化时的注意事项等,利用这些方法可以极大程度地减少产品的开发周期和提高产品的稳定性。

  1.MSP430微控制器标准软件设计流程MSP430微控制器软件设计的标准流程均可参考图1。该标准的软件流程可将系统整体功耗降至最低。


图1

  图1所描述的软件流程代码是基于中断程序的,平时MCU处于睡眠状态,直到有中断产生时MCU被唤醒,最大程度降低系统功耗,优化电源效率。

  理解图1所示的中断服务子程序(1SRs)流程,能更好的掌握MSP430微控制器处理低功耗的模式。MSP430微控制器的低功耗模式由状态寄存器SR的控制位控制,在执行中断服务子程序之前,状态寄存器SR的低功耗模式控制位可以被优先压栈。当中断服务子程序返回时,主程序调用中断之前的低功耗模式控制位,从而进入中断之前的低功耗模式状态。当然,如果我们在ISR中断服务子程序返回前修改了保存在SR中的低功耗模式控制位,那么ISR中断子程序执行完之后,主程序流程可以转到另一个不同的低功耗工作模式。

  中断唤醒机制作为MSP430微控制器内部低功耗模式的一部分,允许系统快速唤醒,响应中断事件。例如,当一中断事件发生之前MSP430微控制器处于低功耗LPM0模式,MCU在执行中断服务子程序之前首先向堆栈保存SR中的低功耗模式控制位值然后清除SR值,清除SR值使MCU从LPMO模式进入到执行中断活动模式状态。在ISR中断服务子程序中,软件设计者可以写一条语句清除SR中的低功耗模式控制位,当中断程序完成后,MCU从堆栈中重新装载调用各自寄存器的状态值。如果没有修改SR的低功耗模式控制位,退出中断后系统仍然返回进入LPM0低功耗模式,若此时已修改SR控制位,当从ISR中断程序退出后,系统会工作于活动模式时,并且按进入中断之前的PC指针所指的地址继续执行程序。

  由于可以在fSR中断服务子程序中改变低功耗模式,所以设计者可以选择在ISR程序中执行全部任务,也可以选择在ISR唤醒MCU后在主程序中处理任务。

  在ISR程序中处理时确保能立即响应中断事件,中断事件发生时即能立刻处理中断任务,但是,在处理一个中断事件时,其它中断将不能被载入,直到该中断任务完成,而这样长时间的中断将会降低系统的响应灵敏,所以设计者须根据不同系统要求选择最佳处理方式。

  图1所示的流程图中主程序需处理两个中断事件,这两个中断事件所要处理的任务是在主循环中处理的。ISRs执行两个不同的事件任务。第一个中断,ISRs改变了保存在堆栈中SR的值,可以使系统退出中断后进入活动工作模式,中断事件是在主程序中被执行,中断事件可以是一任意应用事件,例如定时器、按键处理、AD转换等。第二个中断,在ISR中断服务子程序设置一标志位,在主程序检测该标志位来判断是否执行相应的任务。如果需处理的中断事件能在较短的时间内迅速完成,这样就能够在中断服务子程序中直接执行,无需进入主程序处理,此时ISR中断服务子程序没必要设置标志位或改变SR低功耗控制位退出睡眠模式,退出ISR中断服务子程序后MCU仍然返回到睡眠模式。该流程可以根据系统应用的复杂性来定,例如,只有一个中断事一件可唤醒主程序时,则无需设置系统标志位,此时,通过中断唤醒主程序,然后主程序进行相应的任务操作,最后MCU重新进入睡眠模式。

  图1中所提到的睡眠模式LPMn是系统所要用到的睡眠低功耗模式,每种应用所涉及的模式可能会有所不同,实际的睡眠模式由整个系统所用到的模块(如定时器、AD、串口等)决定,取决于系统模块在相应的睡眠模式下可否被中断唤醒。例如由MCU的定时器负责唤醒CPU,且该定时器时钟为ACLK时,则ACLK必须保持活动模式,则MCU可以工作在LPM3模式;但是如果定时器时钟为DCO时,则MCU必须工作在LPMO。

  2方案设计技巧2.1看门狗和晶振的配置在任何一款MSP430微控制器中,看门狗默认开启32ms复位,所以程序初始化第一步应先进行看门狗WDT的配置。如果在初始化中不快速处理WDT的话,则看门狗可能很快溢出造成芯片程序复位。为避免CPU进入复位死循环,所以看门狗需在程序最开始配置,通过设置时间、设置控制位或者关闭看门狗。

  MSP430F4xx或MSP430F2xx微控制器中,使用LFXT1低频率晶振时,代码运行之前需通过FLL_CTL0寄存器配置晶振相应的负载电容,否则晶振可能会运行不正常,该技巧在许多TI的MSP430微控制器应用实例代码中均可见。

  2.2使用TI的标准头文件

  TJ为每一款MSP430微控制器均提供~标准头文件,文件中包含相应芯片型号中的所有寄存器和位常数定义信息,使用文件中定义的信息能极大地提高程序的可读性,同时增加系统可移植性,使其它设计者能快速掌握该程序的设计。TI的每~个应用方案和代码实例都可以应用这些头文件。

  2.3运用内部函数处理低功耗模式和其它函数

MSP430微控制器利用C语言开发软件时,可以直接调用编译器包含的几个内部函数。有时一些关键事件的处理唯一方法就是使用内部函数,利用内部函数会很大程度地提高任务处理的效率。

  使用内部函数最普通的例子就是进入与退出低功耗模式,通常用C语言时必须对CPU寄存器中的某些位进行操作,例如在IAR编译环境中如果需要进入LPM3模式,则即可直接使用内部函数:

  BISSR(LPM3_bits+GIE)。

  其它内部函数有时也具有优化功能,例如MSP430微控制器转换BCD码的内部指令函数,如果没有这些指令组合,则需要一长串C语言代码完成,且编辑器不能直接将代码转换成MSP430微控制器识别的BCD数学指令。使用内部函数使得利用C语言编程的人员最大程度地优化了程序代码,也降低了系统功耗。

  MSP430微控制器的开发环境编译器包含一系列功能函数,开发设计时需注意最新版本。

  2.4晶振失效的处理函数

  MSP430微控制器具有检查时钟是否失效的功能。所有的微控制器系列提供内部DCO和高频频晶振的失效检测功能,MSP430F4xx和MSP430F2xx系列具有全部时钟失效检测的功能,如:外部32768Hz低频时钟与高频时钟失效检测。

  具体细节可参考用户手册。

  本文主要考虑两种会出现晶振失效的情况以及考虑是否需要做出相应的处理。

  (1)在每一次MCU上电时晶振稳定的过程。在这个过程中会造成晶振的失效,特别对于低频晶振初始化,时钟稳定需要一定时间,经常是几千毫秒。

  (2)在程序运行过程中出现晶振失效,比如某种导体将晶振管脚短路,因此需要一些特殊的方法处理,当晶振失效时,DC0时钟模块将继续支持CPU的工作。

  如果时钟源ACLK、SMCLK或者晶振未稳定时,任何使用这些时钟的外围设备都将受到影响,唯一方法即是通过软件进行检测与处理。当一些对时间敏感的外围(如定时器)以低频晶振为时钟源,若晶振未振荡稳定时,将导致初始化失败,同时若程序代码未等到晶振稳定就开始工作,则外设输出的结果是不可预知的。

  如果由LFXT1、LT×T2提供系统的MCLK时钟源,晶振失效了,则MCLK时钟源会自动切换到内部DCO时钟模块,由内部的DCO做为MCLK时钟源。

  处理晶振初始化的一个简单方法就是可以不停重复清零、等待检测默认的晶振失效标志位,直到晶振失效标志不在置位,可参考用户手册。如MSP430F:2xx系列,LF×T1的低频晶振并不能检测晶振是否失败,此时可调用一延时程序以保证有足够的初始化稳定时间。这种方法在一般程序正常操作过程中并不能捕获到晶振是否失效,但可以通过设置OFIE位在NMI中断服务子程序中处理。

  2.5逐渐增加MCLK频率

  大多数MSP430微控制器的MCLK可以配置为8MHz,MSP430F2xx可以达到16MHz,系统要求VCC电压值随着频率的升高相应有所增加。程序运行时,若设定MCLK频率所需的VCC电压比真正提供给微控制器的电压值高,则运行过程中将发生不可预知的问题。

  即使MCU实际工作VCC值比工作频率需要的实际工作电压高出很多,但VCC上升到稳定状态是需要一定时间的,所以我们要在工作频率升高之前确保芯片电压已经能够支持晶振正常工作。

  如果MCU具备SVS(电压检测模块)模块,则SVS可以提醒系统的VCC电压达到所需的电压值;若MCU不具备SVS模块,但是含有可利用的ADC模块,则ADC模块可以采样VCC电压,从而判断在提升频率之前芯片电压值是否能满足高频工作要求。

  2.6使用初始化函数

通常在C编译器编写代码时,程序会自动初始化所有定义的存储器,并且将代码值插入到main()主程序中。如果定义的存储器很多(大量变量),则将导致看门狗的溢出问题。当初始化许多变量时,占用的时间相应就会很长,以至于在执行main()主程序第一条语句之前看门狗已经溢出,那么将导致死循环的产生

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

引领供应链数字化转型新潮流 上海2024年5月16日 /美通社/ -- 5月14日,"第七届亚太智慧供应链与物流创新博览会"在上海顺利举办,作为中国和亚太区最大规模,最有影响力的顶流供应链物流盛会,...

关键字: 数字化 软件 供应链管理 控制

上海2024年5月13日 /美通社/ -- 在数字化时代,高效的税务管理和ERP系统成为企业发展的关键。为了满足这一需求商应信息科技与Exact Software 易科软件就金四全电票税系统与ERP系统集成及商务合作建立...

关键字: AC 软件 BSP 数字化

上海2024年5月13日 /美通社/ -- CONNECT 2 是更加用户友好的声卡,仅需轻点几下,它就能为人声和乐器的录制增添异彩。触控面板触感舒适、控制精准、一目了然。所有输入输出信号均可独立静音。自动设置功能通过内...

关键字: NEC 声卡 控制 软件

央视《今日说法》栏目近期报道了一名90后程序员通过开发非法视频搬运软件在不到一年的时间里获利超700万,最终获刑的案例。

关键字: 程序员 软件

上海2024年4月22日 /美通社/ -- 恶性的攻击和意外事件总是防不胜防,提前部署灾备方案可以在遭遇意外时尽可能减少企业损失。那么面对无处不在的勒索病毒和潜在风险,为什么依然有很多企业还会遭遇数据丢失?

关键字: 勒索病毒 软件 电脑 群晖数据

SAP(思爱普)近日发出的裁员计划,不仅涉及全球范围内约8000个职位,更是在中国区造成了近1500名正式员工和合同工不续的情况。

关键字: 软件 互联网

上海2024年4月17日 /美通社/ -- 每年4月17日是世界血友病日。今年,世界血友病日以"认识出血性疾病,积极预防和治疗"为主题,呼吁关注所有出血性疾病,提升科学认知,提高规范化诊疗水平,让每一位出血性疾病患者享有...

关键字: VII 动力学 软件 BSP

自 ChatGPT 出现以来,生成式人工智能 (GenAI) 在亚洲和大洋洲的开发和部署势头强劲,Omdia 的最新《亚洲和大洋洲的生成式人工智能 - 2024 年:通过本地化实现民主化》报告表明,到 2024 年底,G...

关键字: 人工智能 软件 AI

德国埃朗根2024年4月16日 /美通社/ -- Elektrobit 今日宣布推出 EB zoneo GatewayCore——首款支持、配置和集成现代微控制器新一代硬件加速器的软件产品,可应用于先进的汽车电子/电气架...

关键字: 汽车 软件 硬件加速 通信网络

Windows Embedded Compact 7(简称WinCE)是一种专为嵌入式系统设计的操作系统,具有体积小、效率高、可定制性强的特点。在WinCE中设置自动运行软件,通常是为了满足设备在启动后自动执行特定任务的...

关键字: 嵌入式系统 软件 操作系统
关闭
关闭