qq476380900 发表于 2009-11-26 17:17:33

UART通信不稳定

我用的NEC9234芯片,通过半双工485转换器(两片MAX3082构成)与电脑主台软件进行通信,问题如下:
    1。接收异常。由于协议约定帧起始有1-4个OXFE唤醒字节,我在检测到此字符时进行接收数组指针后退操作,问题是,程序运行时,接收时好时坏,有时前三个正常字节会被滤掉,有时却一切正常。
    2。发送异常。收到帧后,按照规约要求进行解码,然后组成发送报文开始发送,发送的数组中有一个或几个值与内存中的数值不符,随机出现。有时候还会出现发送的数值很短,只有正常长度的一半左右。
    3。中断异常。在接收中断中,指定的数组指针会突然变化,指错地方,导致不能接收。
    各位高手,希望你们能不吝赐教,非常感谢!

sophie0403 发表于 2009-11-27 09:04:17

堆栈是不是溢出了?

qq476380900 发表于 2009-11-27 14:36:35

请问sophie0403:
    怎么判断是否是堆栈溢出?

RENESAS-etouch 发表于 2009-11-27 16:30:52

在PM+中“tool”下拉“startup 78K0s”,该软件会显示所有子程序所用堆栈的大小,红色为最大,如果红色标出的大小超过了你所定义的堆栈大小,就有可能出现不可预知的错误,你所定义的堆栈大小在.sym文件中可以看到:起始地址_@STBEG 结束地址_@STEND;
如果没有安装78K0s,就在.prn文件中看,打开.prn文件搜索STACK_SIZE,自然能找出所有程序的堆栈大小,前提:compiler option--->output中选中create assembler sourse module

RENESAS-etouch 发表于 2009-11-27 16:32:30

不好意思,写错了,78k0s是SK78k0S

qq476380900 发表于 2009-12-4 12:32:46

非常感谢各位的指点,问题解决了,确实是堆栈溢出
方法:
tool”下拉compoliers options /startup routine/把using fixed area of standard I前面的钩走掉就可以了。
请问 “NEC-etouch”:我的PM+中“tool”下拉为什么没有“startup SK78K0s”选项?我装了CC78K0S。
页: [1]
查看完整版本: UART通信不稳定