社区导航

 

搜索
查看: 466|回复: 0

[原创] msp430单片机开发实录(24)

[复制链接]

7316

TA的帖子

4951

TA的资源

博客管理员

Rank: 6Rank: 6

资源大师勋章

发表于 2019-1-19 16:51 | 显示全部楼层 |阅读模式



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


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

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

GMT+8, 2019-2-21 07:36 , Processed in 0.080061 second(s), 16 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表