注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题

tiankai001的个人空间 http://home.eeworld.com.cn/space-uid-139222.html [收藏] [复制] [分享] [RSS]

日志

msp430单片机开发实录(24)

已有 58 次阅读2019-1-19 16:51 |个人分类:Proteus for msp 430




此内容由EEWORLD论坛网友tiankai001原创,如需转载或用于商业用途需征得作者同意并注明出处







msp430单片机开发实录(24)


现象:
已经验证过,并已批量生产的产品,因为需要添加功能,就直接copy后在原程序基础上进行了更改,但是仿真时却发现程序走到某个地方后就走不下去了,再具体跟踪,发现是在进行系统时钟配置时,程序停在时钟源寄存器选择后,配置系统内核电压的函数里。


试验:
因为程序是验证过的,更改的是一些具体功能,系统时钟的配置未作任何改动。所以第一怀疑对象是电路的问题,具体怀疑电路上的晶振电路,检查后没有发现这处电路有问题。程序就停在下面代码中的SetVCore(PMMCOREV_3)这个函数里。检查函数,也没发现问题。
因为之前碰到这类问题基本都是硬件电路部分的时钟电路出现问题,现在检查没发现电路的问题,思路一度出现停顿。
考虑到这个项目的电路板与之前的电路板一样,就把之前的未更改的程序刷一下试试,结果一切正常,不会出现程序走不下去的现象。那么问题还是出现在这个新更改的程序中?等等,仿真的时候,除了程序,还要考虑仿真环境下芯片的选型、仿真器选择等配置,会不会是仿真环境配置出了问题?

  1. //XT1由晶振产生,
  2.   UCSCTL6 &= ~(XT1OFF);       // 打开XT1
  3.   UCSCTL6 |= XCAP_0;          // 负载电容
  4.   
  5.   __delay_cycles(100000);
  6.   SetVCore(PMMCOREV_3);  
复制代码




有了这个思路,就查看仿真环境配置,结果还真发现了问题,在仿真器的选择上,选择的是“软仿真”,但是,上面的代码中,XT1时钟选择的是外部晶振,所以问题就很明显了:选择的软仿真,但是时钟选择的是外部晶振,那肯定会导致在进行芯片内核配置时无法获得正确的时钟状态,所以程序就会一直停在等待正确的状态到来这句话里。


验证:

将仿真器配置选择为使用硬件仿真器,程序就顺利地继续向先执行了。
备注:
msp430单片机的的“软仿真”和“硬仿真”的区别有一个简单粗暴的判断方法:硬件仿真的时候,因为要先把程序刷到芯片上,而软件仿真则不需要,所以从点击开始仿真到进入仿真环境,硬件仿真需要花费较长时间,而软件仿真则几乎不花费时间。

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-2-21 08:05 , Processed in 0.034621 second(s), 11 queries , Gzip On, MemCache On.

Powered by EEWORLD电子工程世界

© 2019 http://bbs.eeworld.com.cn/

返回顶部