您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 薪酬管理 > 关于仿真时工作正常程序固化后却不能运行的几种情况
MSP430脱离仿真器后无法运行MSP430复位经过实际调试发现,MSP430复位时间比较长,用10K,10UF上电复位会有问题。最好用51K电阻和10UF。MSP430脱离仿真器后无法运行(表现为DAC无输出),后测试复位,看电平是高,正常的,最后在单片机配置时钟前和配置后加一点延时,就OK了。时钟配置前注意延时不要太大,不然会卡死在那里,因为还是用的32.768K时钟。照理说10K10uf也应该够的,怀疑是430单片机内部一些外围设备复位时间比较长,特别是DAC,也就是说,你用10K也能复位,IO也能操作,程序也能运行,但是马上配置DAC的话,DAC可能失败,导致无法输出DAC。出现这种情况有以下几种可能性:(1).用户板的程序块电路有问题:如PSEN不通或接错。地址线高位浮空等(我没遇到过这样的情况,但有文章有过这样的分析)。使用89C51内部程序,但EA未接高电平等。(2).用户板晶振电路有问题。用户板复位电路不正确。还要注意的是那2个电容,有次我拿错电容(473),结果拿万用表量电压晶振2边是2.5V,但拿示波器一看什么都没有。所以,测晶振2脚电压有时也未必完全准确。(3)堆栈溢出。8051系列的单片机,有的型号内部有256个RAM,有的只有128个RAM,现在高级语言编译系统都默认是256个RAM。如果您使用的是128个RAM的型号的芯片,就应注意堆栈是否会溢出,如果溢出程序就不能运行。如果这种情况,把CPU换成带256个RAM的型号试试。(这点是比较重要,和对于初学者容易忽略掉的)(4)用户系统内有需要复位的接口电路,如8155,8255,8279等,在它们还未完成复位时,如果CPU就给它们写控制字,就会造成它们工作不正常。这种情况下,CPU应确保在外设复位后再输出控制字。(5)程序片烧写不正确,这有以下几种情况:A。格式不对,或者是烧的内容不对B。光写程序,未写芯片的设置字,如PIC系列,LPC764,80C196的保留字等。这些设置字中凡是需要用户写的应正确填写,不需要写的应写入“FF”。最好在烧写时看看烧写器读进来的BUFF,前面是不是0200开头。(6)检验程序片是否烧写正确的方法是,从一片烧好的芯片中读出机器码,并生成机器码文件,然后让仿真器运行这个机器码文件。如果不能正确运行,应重新烧写程序片。(7)系统接线有错,造成固化后的程序,不在系统所要求的地址空间内,当然不能运行。控制脚接,特别是80196系列芯片面,如果READY脚,NMI脚浮空,则也会出现固化后程序不能运行的现象。再添几个(8)、喂狗错误,仿真时不受影响(我用的是伟福的),烧完就老复位了;(9)、时序错误,仿真时由于延时歪打正着,动真格的是就不灵了,从而导致看门狗总是复位,或者是使程序停顿在了一个标志判断处。还有什么情况欢迎大家增补,大家一起长经验,谢谢上拉电阻我遇到过这种情况,有的上拉电阻不加时在仿真器上可以正常运行,而固化后就不行或时行时不行。复位时间短仿真器上大多是手动复位,与RC充电时间无关,而固化后运行,如果RC充电时间太短,就会复位不可靠甚至不能复位,因此计算复位脉冲宽度时要留有余量,这也是我的教训。有时是因为外围硬件的设计不合理,一般仿真器的I/O驱动能力都大于真正的CPU,在仿真器运行正常,正式烧写后,CPU未能可靠的驱动硬件。出现这种情况比较大的可能是中断激活了一些预期以外的状态,造成不能及时刷新WatchDog!给朋友写个LED方面的程序,没用仿真器直接烧片、运行,屏幕一片红(全高亮),后发现由于初试化没有清屏造成供电电压降低,拉死单片机。以前也用软件扫描做24个汉字的屏时发现全部显示“—时单片机老复位。后来发现也因为单行点亮点过多时屏体耗电大于预期状况造成电源电压降低所以reset了。所以大家在做系统时一定要保证控制板的电压稳定和电力充足^_^布线问题由于ICE的驱动能力强,所以ICE下正常但烧片后由于线路板布线不合理会出现挑片的现象。1.看vcc和gnd2.看是否起振3.看reset脚4.看watchdog5.检查硬件连线6.是否是片子坏了有时也会出现过,仿真器仿真时一切OK,固化后不行了,原来芯片坏了,一部分程序正常(显示,蜂鸣器),一部分怎么调都不行(串行通讯),换新片子就都OK,我使用的芯片是PHILIPS的P89C51RC+,劝大家先考虑考虑这种情况省得折腾半天白费力!串行接口的EEROM读写问题本人在仿真机上读写十分顺利,程序固化后单片机总是读不出来,为什么?程序有的延时不够也是情况之一!的确,上面的很多问题我全遇见过特别是晶振的两个电容,有一次连板都换了,结果没换电容,还是不行,害苦我了!!当然用12M运行的程序,运行在24M的状态下,记得要将有些延时时间改掉,如波特率、烧写Flash等等的延时,细想好像什么延时多要改,呵呵!最近遇到的现象——可供参考!最近遇到的——用仿真器时程序运行完全OK,但程序固化后却不行了的现象,原因是单片机使用了P89C51RC+!这个片子有个与普通51不同之处,即不可随便用MOVX@R0,A来寻址外存!希望这个耗费我一天找出来的毛病可以让他人借鉴^_^.不正常现象单片机用89c52,用的是两片max485,在全双工通讯的时候用仿真器能正常工作,但写到片子里不能正常工作,单片机能正常接收,但不能发送数据,微机用的是波士公司的485c的转换头.现在我把程序里别的子程都全部删掉了,只留下通讯的子程,写到片子里可以正常运行。这说明硬件是没有问题的,软件仿真正常。不是也没问题吗?好像程序大了,但又不像,到底是硬件问题,还是软件问题。详细问题我遇到过该问题,是EPROM的插槽焊接时连到一起了。也可能是电源问题电源问题:本人曾经调试过一个系统,用仿真器没问题,写片后通讯不正常,后发现是电源不行,仿真器自己提供电源,写片后CPU供电产生问题,造成某个外围元件(16C550)复位信号和数据线上有1V的波纹,当然,布局不是很好(硬件已完成!),后来在16C550上加一下拉才搞定!!还有就是驱动能力问题!仿真器有BUFFER!我遇到过因复位不同步造成的系统不能正常工作。我遇到过因复位不同步造成的系统不能正常工作,片外用了8155,在初始化时延时100us就解决了问题。我只遇见过EEPROM写不进去你用的是什么系列的EEPROM啊,我用的是24C系列。我查了两天终于知道原由了。我的几个经验对大虾说的几点我认为是实际中比较常见的,但是第1,2两种情况,可以用仿真器的在线仿真来检测,还有就是如果单片机的外围有扩充IO口的话,那么布线就要使数据总线尽量的短,不然就会出现命令不能正常执行。
本文标题:关于仿真时工作正常程序固化后却不能运行的几种情况
链接地址:https://www.777doc.com/doc-2666472 .html