阅读:1742回复:3
pci9052中断读取数据死机问题求教?
pc通过9052读取pci板卡上dpram的数据,宽度16位。采集卡数据存放dpram中,写满后向pc发中断请求读取。
板卡和上位机测试程序在一台工控机上运行良好。更换其他工控机,每次都在中断读取数据时候死机。把EEPROM中数据宽度改为32位后,正常响应中断。 这样一来,高位的数据就读不到了。因为dpram是16位的。 我硬件上是这样接线的: LBE1作为LA1,然后LA1-LA13与dpram的A0-A12相连,映射基地址membase后,在此基础上加偏移量读取ram数据.但每次实际偏移量和程序偏移量相差2倍才能访问; 比如读取dpram中0x02的内容,在程序中就要写read(membase+0x04)才能实现 所以,本来是8k的dpram,就要在EEprom分派16k的映射空间。 是不是这里有问题呢? 盼望各位过路高手指点 |
|
沙发#
发布于:2004-10-23 09:28
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2004-10-23 20:10
你是说eeprom中的配置吗?
配成16位的在中断中就死机了。 我原来配成16位的宽度,返回ax16位数据 后来为了提高速度,在程序中可以返回32位数据,一切正常 unsigned int Read_mem(unsigned long addr) { asm{ push ds mov ax,0 mov ds,ax mov esi,addr mov eax,[esi] pop ds } return _EAX; } 现在换了台机子就不行了,可能是时序问题 我现在也不明白为什么能读到32位数据 |
|
地板#
发布于:2005-07-19 11:33
双口RAM应该改为8位模式,在局部寄存器中设置,如果为16位,也要设置,而且在响应中断的时候最好不要跟踪
|
|