Board logo

标题: [原创]MCU编程问题 [打印本页]

作者: natadc    时间: 2007-7-26 10:22     标题: [原创]MCU编程问题

用CW5.1调试目标板时,将程序load至mcu,能正常运行,多次reset都不出现问题。但将目标板power off后再on时,mcu就不能正常工作了,是什么原因呢?

作者: strongchen    时间: 2007-7-26 10:24

你用的是什么芯片?什么下载调试工具?
作者: natadc    时间: 2007-7-26 10:30

MC9S08AW60,P&E USB Multilink
作者: strongchen    时间: 2007-7-26 10:31

Multilink拔掉了吗?
作者: natadc    时间: 2007-7-26 10:32

拔掉了。
作者: natadc    时间: 2007-7-26 10:33

如果您在深圳的话,我可以打电话给您。
作者: strongchen    时间: 2007-7-26 10:36

我不在深圳。你可以检查一下复位信号。另外,COP有没有关闭或清零?
作者: natadc    时间: 2007-7-26 10:38

COP我没有做初始化。
作者: natadc    时间: 2007-7-26 10:56

问题是什么呢?好像不是因为COP造成的问题。因为写进程序后,只要不断电,multilink拔与不拔,目标板都能正常工作。
作者: strongchen    时间: 2007-7-26 14:17

COP缺省是开启的。另外,不拔multilink的情况下重新上电,情况又怎样呢?晶振的频率是多少?信号怎样?
作者: strongchen    时间: 2007-7-26 14:18

建议你用wizard引导建一个最简单的project试试。
作者: natadc    时间: 2007-7-26 14:36

不拔multilink重新上电,工作就不正常了。
晶振频率4M,信号OK。
另外,运行的过程中拔掉multilink,立刻工作不正常,按reset也不能恢复,同重新上电情况一样。
作者: natadc    时间: 2007-7-26 15:39

建一个最简单的project,TimerInt控制LED闪烁,很正常。
作者: strongchen    时间: 2007-7-26 15:50

那就说明是软件的问题了。你说的不正常的现象具体是怎样的?
作者: natadc    时间: 2007-7-26 16:03

项目编译后写入MCU中运行OK,
重新上电工作不正常。
作者: strongchen    时间: 2007-7-26 17:35

看过你的程序后,觉得这一段有问题:
for(;;){
__RESET_WATCHDOG();
gSCIData=Receive_SCI_Byte();
__RESET_WATCHDOG();
rString[i++]=gSCIData;
if(gSCIData==13){
rString=0;
Process_SCI_String(rString);
i=0;
gSCIData=0;
}
}
由于指针rString定义为局部变量,所以它是堆栈中的一个字,只有2个字节的空间。但是在这一段程序里,你把它当作数组使用,而且可能有很多位:这必然会用到未定义的RAM地址,而且可能造成堆栈溢出。这样必然会出错。
不过这个问题应该与BDM无关。我觉得一个可能的原因是串行通讯双方没有共地,通过BDM才实现共地,使得有无BDM时现象不一样。你可以查查看。
作者: natadc    时间: 2007-7-26 20:11

OK,我将rString定义成全局字符数组变量之后,问题已经解决。
P.S,CW中的CPU类型没有MC9S08AW16,可否直接用AW60的project烧录?

作者: strongchen    时间: 2007-7-27 09:26

你可以试试看。还可以到飞思卡尔网站上下载最新的补丁试试。
作者: natadc    时间: 2007-7-27 19:35


功能不复杂,通过解析SCI1接收到的数据,产生相应的地址选通信号到PTA输出,同时延时100ms,将16路的ADC采样数据输出至SCI1。

[此贴子已经被作者于2007-7-27 19:35:13编辑过]






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0