导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→求助!!!!!!!!!!8019接收中断的配置问题!!小弟给[jingzhu420]

 *第16642篇: 求助!!!!!!!!!!8019接收中断的配置问题!!小弟给各位大侠鞠躬了!!!!!

  
楼 主:jingzhu420 2007年8月20日17:42
 求助!!!!!!!!!!8019接收中断的配置问题!!小弟给各位大侠鞠躬了!!!!!
我遇到的问题是这样的:我想让我的lwip能用中断的方式接收数据包,但是我在写完中断这部分程序后发现,当rtl8019as在接收到数据包后并没有发送中断信号给CPU(用示波器观察没有中断信号产生).用轮询的方式就可以接收到网络上的ARP广播,这说明数据包肯定是被8019接收到了,但是却没有产生中断,我怀疑是网卡初始化配置的问题,我将IMR写入了0xff,初始化代码如下:
想了好久都没想通,请各位大侠帮帮忙,给我这个菜鸟指点一下迷津,我给各位鞠躬了.
void NicInit(void)
{
 
 u8_t  i;
 u8_t  j;
 
 IODIR=IODIR|NET_RST;
 IOCLR=NET_RST;
 for(i=0;i  <200;i++)
 {
  for(j=0;j  <200;j++);
 }
 IOSET=NET_RST;
 for(i=0;i  <200;i++)
 {
  for(j=0;j  <200;j++);
 }
 IOCLR=NET_RST;
 for(i=0;i  <200;i++)
 {
  for(j=0;j  <200;j++);
 }
  
 WriteToNic(0x1f,0x00); 
  
 for(i=0;i  <200;i++)
 {
  for(j=0;j  <200;j++);
 }
 
 /**********************************************************************
 
 1.Reg00命令寄存器: CR,命令寄存器,地址偏移量00H,为一个字节
 位:  7   6   5   4   3   2   1   0 
 名字: PS1 PS0 RD2 RD1 RD0 TXP STA STP 
 //============================================
 2.
 RD2,RD1,RD0: 这3个位代表要执行的功能。
 0   0   1 : 读网卡内存
 0   1   0 : 写网卡内存
 0   1   1 : 发送网卡数据包
 1   *   * : 完成或结束DMA的读写操作
 //============================================
 3.TXP位置1时发送数据包,发完自动清零
 //============================================
 4.
 STA,STP:
  这两个位用来启动命令或停止命令
 1   0 
  
   启动命令
 0   1 
  
   停止命令
 //============================================
 ********************************************************/
 WriteToNic(0x00,0x21);   //使芯片处于停止模式,这时进行寄存器设置
 
 for(i=0;i  <200;i++)
 {
  for(j=0;j  <200;j++);
 } //延时10毫秒,确保芯片进入停止模式
 
 page(3);
 WriteToNic(0x04,0x00);  //CONFIG1 :enable interrupt

 
 page(0);
 
 WriteToNic(0x0a,0x00);   //清rbcr0
 WriteToNic(0x0b,0x00);   //清rbcr1
 WriteToNic(0x0c, 0xe4);  //RCR,监视模式,接收广播包
 WriteToNic(0x0d, 0xe2);  //TCR,loop back模式
 page(0);
 WriteToNic(0x01,0x4c);    //PSTART=0X4C
 WriteToNic(0x02,0x80);    //PSTOP=0X80
 WriteToNic(0x03,0x4c);    //bnry=0x4c;
 page(0);
 WriteToNic(0x04,0x40);  //TPSR,发送起始页寄存器
 WriteToNic(0x07,0xff);  //清除所有中断标志位,中断状态寄存器

 WriteToNic(0x0f,0xff);  //中断屏蔽寄存器, 写0的位置表示被屏蔽

 
 WriteToNic(0x0e,0xcb);  // 数据配置寄存器,8位dma方式
 page(1);
 WriteToNic(0x07,0x4d);  //curr=0x4d
 
 WriteToNic(0x01,0x52);  //PAR硬件的物理地址(MAC地址)
 WriteToNic(0x02,0x54);
 WriteToNic(0x03,0x4c);
 WriteToNic(0x04,0x19);
 WriteToNic(0x05,0xf7);
 WriteToNic(0x06,0x42);
 
 WriteToNic(0x08,0x00);  //MAR(全部写0,不接受多播)
 WriteToNic(0x09,0x00);
 WriteToNic(0x0a,0x00);
 WriteToNic(0x0b,0x00);
 WriteToNic(0x0c,0x00);
 WriteToNic(0x0d,0x00);
 WriteToNic(0x0e,0x00);
 WriteToNic(0x0f,0x00);
 
 WriteToNic(0x00,0x22);  //这时让芯片开始工作
 
 page(3);
 WriteToNic(0x04,0x80);  //CONFIG1 :enable interrupt
 
 page(0);
 WriteToNic(0x0c,0xcc);  //将芯片设置成正常模式,跟外部网络连接
 WriteToNic(0x0d,0xe0);
 WriteToNic(0x00,0x22);  //启动芯片开始工作
 WriteToNic(0x07,0xff);  //清除所有中断标志位
  
}

  
2楼:jingzhu420 2007年8月21日12:22
 自己顶
自己顶一下, 高手帮帮忙, 谢谢谢谢........

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

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


[上一篇主题]:[求助]急寻lxt905的封装图

[下一篇主题]:LM3S6965开发板新鲜出炉