导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→硬件:老古:8019[easy]

 *第1102篇: 硬件:老古:8019

  
楼 主:easy 2001年11月15日20:38
 硬件:老古:8019
大虾:我在读的时候,是先inportb ISR 和 IMR 的bit 0,如果这两位都为1,
我就执行我的接收程序,我在接收时,先读出前18个byte,根据byte 3,4得到
RBCR0,1(byte 2得到BNRY),然后,再接受,收完之后再调整bnry,没有想您
提到的那样,收一页,就bnry++一下,数据不对呀,看来我应该调整。另外,我
常常没法接收数据,明明
那边的PC在不停的往我的NIC里发数据,而我就是没有中断(ISR),为什么?附:
 outportb(0x300,0x21);
 temp1=inportb(0x307);
 outportb(0x300,0xa1);
 temp2=inportb(0x30f);
 temp1=1&temp1;
 temp2=1&temp2;
 temp=temp1&temp2;
 if(temp)
 { Receive( );
   Adjust_BNRY( );
 }
 我printf ( )  temp1,在&操作之前,temp1=0xc0;
 我一直用等待中断,就是不给中断,为什么?大虾,指点。
  
2楼:老古 2001年11月15日20:57
 0x21,0xa1都是stop位置1,将停止接收,不能置位stp,要置位sta
  
3楼:老古 2001年11月15日20:57
 改为0x22, 0xa2
  
4楼:easy 2001年11月16日12:23
 真的是
大虾不愧是大虾,果然如此!
但是我读出来的数据还是不对,我把我的把程序写一下,大虾指点:
 在此之前是初始化NIC,处于接收等待状态(300H=0x22)
Receive( )
{     //变量声明不写了
  outportb(0x309,nextpage);//nextpage 是指向下一包的起始地址,初始化为00x4d
                           //在每次接收完一包后根据第二个信息控制byte调整,
                           //同时,也是让BNRY按此调整
  outportb(0x308,0);
  outportb(0x30a,18);      //这里,我先读前18个byte,一是为了得到信息控制字,二
  outportb(0x30b,0);       //是看看是否收得对
  outportb(0x300,0x12);    //开读remote DMA
  for(i=0;i<18;i++)
   { temp=inportb(0x310);
     rcvbuf[i]=temp;
     printf("%x\n",temp);   //显示前18个byte
   } 
 ……//还有一些就是把数据收了存起来,不浪费您时间了。
}
但是我每次收到显示出来都是一些毫不正确的:
1.比如说,受到广播包时应该是:
  | RSR的状态 |下一包的起始地址 | 长度低位 | 长度高位 |ff|ff|ff|ff|ff|ff|
  |……本NIC的MAC 6 bytes……|……
2.如是单播包则应该是:
  | RSR | nextpage |length | length| sending MAC | my MAC |…………
而我的却或是全0,或是全ff,或是全(别的数),反正,清一色一个数 
我想应该是 读写DMA时出错。怎么办?
  
5楼:老古 2001年11月16日15:52
 读dma的指令是0x0a,不是0x12
outportb(0x300,0x0a);    //开读remote DMA
  
  
6楼:easy 2001年11月16日17:53
 sorry,我的书写错误,我程序里是0a的
  
7楼:huangyan 2001年11月16日19:17
 easy,你读得正确吗?
老古说得对读DMA是0x0a,但我就是读不出来,老是少了奇数字节,无论在PC还是单片机都一
样。
easy,看样子你也是用PC,读的进展如何?
  
8楼:easy 2001年11月16日20:05
 huangyan老哥,你读的奇数字节少了是不是因为你的DCR设置的是8位DMA方式?查查看看。
我的程序里是0x0a,这里写的是笔误,但是含是没有正确数据
  
9楼:huangyan 2001年11月16日20:50
 没用,我设成16位( DCR=C8 C9 CB CD )均不行.
  
10楼:easy 2001年11月16日20:13
 老古说PC里DMA只有16位,真得吗?486,386 呢?

>>>>>>对该主题发表你的看法

本主题贴数10,分页: [第1页]


[上一篇主题]:谁能寄给我GPS资料,njchenmin@eyou.com

[下一篇主题]:初学者:请问斑竹:PROTEL中如何整体改变所有电容的封装RAD0.1改为RAD0.2!!多谢!!!