求助MSP后减如何分辨率调低后模糊一些

下次自动登录
现在的位置:
& 综合 & 正文
【转贴】总结下开发调试MSP430系列的一些另类问题 ——备份下以便查阅
从99年第10届全国展示会上(当时在杭州大学举办的)认识MSP430,呵呵,那个时候FLASH的只有F等初级,觉得这个玩意还有点特殊,尤其可以JTAG,免了个编程器
从2002年开始折腾这个系列,低功耗,流行的SOC结构,适合做智能仪表的MSP430开始吸引我了.呵呵,下面我将说说至今遇到的一些另类问题,跟大家切磋下.
不管是N年前的1.21/1.26版本,还是现在的3.10/3.40版本,IAR一直是我用的最多的一个/调试器,玩MSP430不可能不接触到这个 那我就以IAR调试为例来说说了咯
原始级 问题,一般是刚开始入门的哥们姐们要遇到的问题
1, 接上器,发现不能,这个问题想必大家都有遇到过,IAR提示找不到目标!??
可能的原因:
A 并口能力不足,在的BIOS界面下成ECP或者
ECP+EPP模式
B JTAG线太长,一般超过20CM不,而且这个线最好不要交叉缠绕,会影响实时在线调试
C 你的负载太大,一般功耗相对比较大,超过20MA以上的板子,建议用外接,要不光靠并口那点驱动能力,那的就要被拉低到不能写FLASH了,呵呵
2, 下载到一半,突然告警并报错,说某某地址写不进去!??倒~~我开始也以为是FLASH被写坏了,呵呵,其实MSP430的FLSH没这么脆弱
可能的原因:
A 芯片的复位引起的,在写FLASH的时候,会造成电压的一些波动,可能导致芯片复位,而为什么都是写到这个地址才错,那是IAR的问题,改用BSL再烧一边,就可以克服了
B 芯片有可能死机了,给断电,拔掉JTAG没,稍后再试,一般没有问题
C 如果都不是上述的方法能解决的,告诉你一个更酷的办法,给芯片上电,电压=3.6V,重新写一次,一定OK.为什么,写不进FLASH主要是F1XX系列的写FLASH电压不能低于2.7V,一般2.5V以下才不能真正工作,因此用3.6V电压,什么样的片子都能写回来(BTW,到现在为止,我还没写坏过一片MSP430的FLASH)
3, 关于3.40以上版本的仿真器设置问题.
说实在的,真正开发起来,我都不太愿意随便换IAR的版本,有些语法不兼容,有些设置不一样,不花点开 WHAT'S NEW,就要到BBS上去发贴了,呵呵
最近装了3.40的 限制版,一路NEXT,好象没什么特别的地方,装好后发现芯片的选择余地多了很多,包括了F2XX,N多种类,哈哈再上FET接着跑个DEMO看看,居然不成,报错!!
在仿真栏目里选好 FET 硬件仿真以后,还有一项是访真器的选择,我倒~
没仔细看的哥们姐们一定纳闷,为啥还要搞个 LPT || J-LINK || TI- ,更滑稽的是IAR居然认为现在大伙都有米买USB的FET,默认选项是 TI-USB,那就是这个问题咯,改成 LPT(并口FET) 就完事了。
另类级问题
1, F1611大数组定义,不能正常运行的问题
相信有不少朋友已经用上了F1611,这个RAM大大的MSP,呵呵.那就有可能会遇到 RAM中定义的变量/数组在超过一个极限的时候,MSP程序不能正常运行的现象吧.一般初步判断,可以用I/O输出电平 来 确定程序进程.这样可以非常方便的知道该问题是由于WDT造成的,哈哈 (RAM的初始化时间大于WDT默认的32MS时间,因此MSP复位)
下面来看下解决的办法:
对你的数组用 __no init_定义,上电编译器不产生特殊的附加函数去初始化RAM
修改IAR中Cstartup.S43文件中__program_start子程序,增加一个关闭WDT的操作或者设置WDT时间长度超过32MS
在Project--Options--Linker--Config中选择 Override default programe,并将
Entry lib 设置成 __program_start
上述是已知解决1611RAM初始化时间超WDT默认而复位的解决方法,如果用汇编,则没有这个问题
2,SVS导致MSP "坏死" 问题
去年开发一款仪表,用上了F425,只怪这个玩意口线太少,只能把能用上的功能模块都赶上了.SVS在F42X里可是个不错的模块,外部设计可以节约一个VD,成本和空间,呵呵
意外的是,我将这个SVS的电压设置在3.3V,结果一次JTAG写入后,那板子便没有再起来工作,刚开始以为真的写废了这个MSP,后来想判断下MCU是否还能工作,接上电源和电流表,发现电流有周期性跳跃----倒~~该MCU正在被SVS复位中
重新加电压,超过3.3V,修改设置,重写FLASH,一切搞定
希望能给用SVS和SVS+的朋友起个提醒的作用,呵呵,有时这个问题还不太容易被发现
3,I/O电压供电居然也行?
在设计低功耗设备时,有时我们经常用MCU的引脚给一些IC供电,这个方案我最早用在PIC的单片机上,前人的经验,照着抄没错 MSP430当然也没问题
有兴趣的朋友不仿可以试试,DVCC/AVCC不接,直接从某个I/O加电压,MCU照样能跑哦.这个问题大家要注意的,可能是好事,也可能很麻烦
但是在做硬件设计的时候一定要想清楚了,I/O可以供电给其他IC,当然也能从其他IC中取电,在一些设计中,MCU的静态功耗降不下来,尤其是设计变送器,4`20MA双线制设备上,要谨慎处理.
附上今天自己发现的问题:
#include "msp430x41x2.h"
#define uchar unsigned char
const unsigned char macAddr[3] @0x1080 ={0x00,0x00,0x43};
const unsigned char longAddr[4] @0x1050 ={0x00,0x00,0x97,0x44};
const unsigned char ray[4] @0x10c0 ={0x00,0x00,0x97,0x43};
//const unsigned char info0Array[10] @0x1000
= {0,1,2,3,4,5,6,7,8,9};
unsigned char gamma @"INFO"=3;
unsigned char mystr1[3];
unsigned char mystr2[4];
mystr1[1]=macAddr[2];
mystr2[2]=longAddr[3];
mystr1[2]=ray[0];
mystr1[0]=
00 00 97 44
00 00 97 43
31 40 00 04 3C 40 00 02 3D 40 07 00 B0 12 34 C0
B0 12 18 C0 B0 12 46 C0 D2 42 82 10 01 02 D2 42
53 10 05 02 D2 42 C0 10 02 02 D2 42 00 10 00 02
0C 43 30 41 0F 4C 0F 5D 03 3C CC 43 00 00 1C 53
0C 9F FB 23 30 41 30 40 4A C0 30 40 4E C0 FF 3F
---------做一些修改后,编译的结果
mystr1[1]=macAddr[2];
//mystr2[2]=longAddr[3]; //注释掉了这行
mystr1[2]=ray[0];
mystr1[0]=
00 00 97 43
31 40 00 04 3C 40 00 02 3D 40 03 00 B0 12 2E C0
B0 12 18 C0 B0 12 40 C0 D2 42 82 10 01 02 D2 42
C0 10 02 02 D2 42 00 10 00 02 0C 43 30 41 0F 4C
0F 5D 03 3C CC 43 00 00 1C 53 0C 9F FB 23 30 41
30 40 44 C0 30 40 48 C0 FF 3F
定义到信息段中的数据,如果在程序中没有被使用则编译时不会被编译到TXT文件中。这个可能是优化的结果
&&&&推荐文章:
【上篇】【下篇】求助MSP430+RC522调试问题_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
求助MSP430+RC522调试问题
我有更好的答案
你的程序应该没错,你运行一下其他人编写好的例子 如果没错 就是你的软件没问题 ,你把代码覆盖别人的例子运行正常就是你建立的工程不对 ....学会调试才行 而不是怎么找到一个错误
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包总结下开发调试MSP430系列的一些另类问题 - 其他技术 - 电子工程世界网
总结下开发调试MSP430系列的一些另类问题
15:24:25来源: laogu
原始级 问题,一般是刚开始入门的哥们姐们要遇到的问题
1, 接上仿真器,发现不能下载,这个问题想必大家都有遇到过,IAR提示找不到目标!??
&&&&可能的原因:&&A 并口驱动能力不足,在电脑的BIOS界面下设置成ECP或者&&&&&&&ECP+EPP模式
&&&&&&&&&&&&&&&&&&&&&&B JTAG线太长,一般超过20CM不推荐,而且这个线最好不要交叉缠绕,会影响实时在线调试
&&&&&&&&&&&&&&&&&&&&&&C 你的负载太大,一般相对比较大,电流超过20MA以上的板子,建议用外接,要不光靠并口那点驱动能力,那MCU的电压就要被拉低到不能写FLASH了,呵呵
2, 程序下载到一半,突然告警并报错,说某某地址写不进去!??倒~~我开始也以为是FLASH被写坏了,呵呵,其实的FLSH没这么脆弱
&&&可能的原因:&&A 芯片的复位电路引起的,在写FLASH的时候,会造成系统电压的一些波动,可能导致芯片复位,而为什么都是写到这个地址才错,那是IAR的问题,改用BSL再烧一边,就可以克服了
&&&&&&&&&&&&&&&&&&&&&B 芯片有可能死机了,给断电,拔掉JTAG没,稍后再试,一般没有问题
&&&&&&&&&&&&&&&&&&&&&C 如果都不是上述的方法能解决的,告诉你一个更酷的办法,给芯片上电,电压=3.6V,重新写一次,一定OK.为什么,写不进FLASH主要是F1XX系列的写FLASH电压不能低于2.7V,一般2.5V以下才不能真正工作,因此用3.6V电压,什么样的片子都能写回来(BTW,到现在为止,我还没写坏过一片MSP的FLASH)
3, 关于3.40以上版本的仿真器设置问题.
说实在的,真正开发起来,我都不太愿意随便换IAR的版本,有些语法不兼容,有些设置不一样,不花点时间开 WHAT''S NEW,就要到BBS上去发贴了,呵呵
最近装了3.40的 限制版,一路NEXT,好象没什么特别的地方,装好后发现芯片的选择余地多了很多,包括了F2XX,N多种类,哈哈再上硬件FET接着跑个DEMO看看,居然不成,报错!!
原来:&&在仿真栏目里选好 FET 硬件仿真以后,还有一项是访真器的选择,我倒~
没仔细看的哥们姐们一定纳闷,为啥还要搞个 LPT J-LINK TI-USB ,更滑稽的是IAR居然认为现在大伙都有米买USB的FET,默认选项是 TI-USB,那就是这个问题咯,改成 LPT(并口FET) 就完事了。
&&&另类级问题
1, F1611大数组定义,不能正常运行的问题
&&&相信有不少朋友已经用上了F1611,这个RAM大大的MSP,呵呵.那就有可能会遇到 RAM中定义的变量/数组在超过一个极限的时候,MSP程序不能正常运行的现象吧.一般初步判断,可以用I/O输出电平 来 确定程序进程.这样可以非常方便的知道该问题是由于WDT造成的,哈哈 (RAM的初始化时间大于WDT默认的32MS时间,因此MSP复位)
下面来看下解决的办法:
A&&对你的数组用 __no init_定义,上电编译器不产生特殊的附加函数去初始化RAM
B&&修改IAR中Cstap.S43文件中__program_start子程序,增加一个关闭WDT的操作或者设置WDT时间长度超过32MS
C&&在Project--Options--Linker--Config中选择 Override default programe,并将
Entry lib 设置成 __program_start
上述是已知解决1611RAM初始化时间超WDT默认而复位的解决方法,如果用汇编,则没有这个问题
2,SVS导致MSP "坏死" 问题
去年开发一款仪表,用上了F425,只怪这个玩意口线太少,只能把能用上的功能模块都赶上了.SVS在F42X里可是个不错的模块,外部设计可以节约一个VD,成本和空间,呵呵
意外的是,我将这个SVS的电压设置在3.3V,结果一次JTAG写入后,那板子便没有再起来工作,刚开始以为真的写废了这个MSP,后来想判断下MCU是否还能工作,接上电源和电流表,发现电流有周期性跳跃----倒~~该MCU正在被SVS复位中
重新加电压,超过3.3V,修改设置,重写FLASH,一切搞定
希望能给用SVS和SVS+的朋友起个提醒的作用,呵呵,有时这个问题还不太容易被发现
3,I/O电压供电居然也行?
在设计设备时,有时我们经常用MCU的引脚给一些IC供电,这个方案我最早用在PIC的上,前人的经验,照着抄没错 MSP430当然也没问题
有兴趣的朋友不仿可以试试,DVCC/AVCC不接,直接从某个I/O加电压,MCU照样能跑哦.这个问题大家要注意的,可能是好事,也可能很麻烦
但是在做的时候一定要想清楚了,I/O可以供电给其他IC,当然也能从其他IC中取电,在一些设计中,MCU的静态功耗降不下来,尤其是设计变送器,4`20MA双线制设备上,要谨慎处理.
关键字:&&&&
编辑:什么鱼 引用地址:
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
微信扫一扫加关注 论坛活动 E手掌握
微信扫一扫加关注
芯片资讯 锐利解读
大学堂最新课程
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
热门资源推荐
频道白皮书
何立民专栏
北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

我要回帖

更多关于 怎么调低电脑屏幕亮度 的文章

 

随机推荐