fd122312qyh 发表于 2014-6-24 00:24

2812外部RAM

我在2812写外部RAM时,仿真执行        *(ExRamStart+Start+i)=i;————当ExRamStart=0x80000,Start=0,i=1时,会同时写数据进0x80001和0x8011.

zhangmangui 发表于 2014-6-24 11:31

多次测试的结果吗 发现有没有规律
会不会是地址线上有两个脚短路在一起

zhangmangui 发表于 2014-6-24 11:32

后面一个地址是不是少0了啊

fd122312qyh 发表于 2014-6-25 12:30

我写错了,是0x80010.是多次的结果,单步调试时 *(ExRamStart+Start+i)=i;两个地方的值都改变了。如果是0x80010时,0x80000也会变。但0x80020开始就不会了。

fd122312qyh 发表于 2014-6-25 12:41

没看到下面是也会的,0x80020和0x80030一起改变

chengdongx 发表于 2014-6-25 12:53

是不是硬件出错了,地址连线短路

fd122312qyh 发表于 2014-6-25 13:13

测过了,没短路。好像是第五位地址线同时可以为1和0造成的。0x80020=1000 0000 0000 0010 0000B而0x80030=1000 0000 0000 0011 0000B

sjnh 发表于 2014-6-25 13:28

如果没短路,检查看看有没有这两根线有没有1根虚焊

fd122312qyh 发表于 2014-6-25 13:38

测过了,2812和RAm的第五位地址线是相接的

djxf 发表于 2014-6-25 14:26

如果是地址线短路或开路,你一次操作也只能修改一个地址的内容,不会同时修改两个地址的内容啊。所以与地址线无关。

确实奇怪,检查下代码?

fd122312qyh 发表于 2014-6-25 18:53

发现清0时,也有这个问题。代码的话,很简单啊,只是*(ExRamStart+Start+i)=i;。

fd122312qyh 发表于 2014-6-25 18:56

要不怎样检查代码,求教

玄德 发表于 2014-6-25 21:06


百分之九十九点九,硬件。

djxf 发表于 2014-6-26 09:42

fd122312qyh 发表于 2014-6-25 18:56 static/image/common/back.gif
要不怎样检查代码,求教

嵌入式的系统遇到问题时一定要软硬件一起看。
你这个问题,
1.可以让硬件用示波器看看到底是一次写操作还是真的就写了两次,到底是发的什么地址和什么数据,这些都是可以从波形上看出来的。
2.软件方面,你可以去掉变量之类的,用最简单的方式直接往特定的地址(比如0x80000,0x80010,0xaaaa,0x5555等)写特定的内容比如0xAA或0x55,单步去跟踪,这样硬件容易抓波形,软件也可以排除其他可能性。

解决问题,思路是最重要的,其次是多点耐心,没有头绪地瞎猜是不行的。

页: [1]
查看完整版本: 2812外部RAM