2615|0

6366

帖子

4914

TA的资源

版主

楼主
 

msp430单片机开发实录(24) [复制链接]




此内容由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单片机的的“软仿真”和“硬仿真”的区别有一个简单粗暴的判断方法:硬件仿真的时候,因为要先把程序刷到芯片上,而软件仿真则不需要,所以从点击开始仿真到进入仿真环境,硬件仿真需要花费较长时间,而软件仿真则几乎不花费时间。
 
点赞 关注(1)

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表