2812外部RAM
我在2812写外部RAM时,仿真执行 *(ExRamStart+Start+i)=i;————当ExRamStart=0x80000,Start=0,i=1时,会同时写数据进0x80001和0x8011. 多次测试的结果吗 发现有没有规律会不会是地址线上有两个脚短路在一起 后面一个地址是不是少0了啊 我写错了,是0x80010.是多次的结果,单步调试时 *(ExRamStart+Start+i)=i;两个地方的值都改变了。如果是0x80010时,0x80000也会变。但0x80020开始就不会了。 没看到下面是也会的,0x80020和0x80030一起改变 是不是硬件出错了,地址连线短路 测过了,没短路。好像是第五位地址线同时可以为1和0造成的。0x80020=1000 0000 0000 0010 0000B而0x80030=1000 0000 0000 0011 0000B 如果没短路,检查看看有没有这两根线有没有1根虚焊 测过了,2812和RAm的第五位地址线是相接的 如果是地址线短路或开路,你一次操作也只能修改一个地址的内容,不会同时修改两个地址的内容啊。所以与地址线无关。
确实奇怪,检查下代码? 发现清0时,也有这个问题。代码的话,很简单啊,只是*(ExRamStart+Start+i)=i;。 要不怎样检查代码,求教
百分之九十九点九,硬件。
fd122312qyh 发表于 2014-6-25 18:56 static/image/common/back.gif
要不怎样检查代码,求教
嵌入式的系统遇到问题时一定要软硬件一起看。
你这个问题,
1.可以让硬件用示波器看看到底是一次写操作还是真的就写了两次,到底是发的什么地址和什么数据,这些都是可以从波形上看出来的。
2.软件方面,你可以去掉变量之类的,用最简单的方式直接往特定的地址(比如0x80000,0x80010,0xaaaa,0x5555等)写特定的内容比如0xAA或0x55,单步去跟踪,这样硬件容易抓波形,软件也可以排除其他可能性。
解决问题,思路是最重要的,其次是多点耐心,没有头绪地瞎猜是不行的。
页:
[1]