标题: ENC28J60大量数据时无法中断 [打印本页]

作者: qinqin    时间: 2015-6-6 21:28
标题: ENC28J60大量数据时无法中断
  使用ENC28J60移植uip搭建网络,以太网控制器收到数据时,会产生中断,于是把中断口连接到GPIO口,设置为外部中断,当接收到数据时,进入中断把中断标志ETH_INT置1,然后轮询ETH_INT为1时接收数据;

   在使用中发现:在接收少量数据时,可以正常运行,但是连续发送大量数据时,一段时间后单片机就无法收到;甚至持续ping一段时间就会无响应。

   检查问题时,发现竟然无法进入中断;反复调试结果还是不行,不知道是什么问题导致的,上网也没找到比较有用的结论。

   后来想到额一个解决办法,在主循环中直接通过SPI接口读取ENC28J60的对应寄存器来获取状态;

  EPKTCNT是以太网数据包计数寄存器,当接收到一个数据包并将其完整写入缓冲器时,EPKTCNT寄存器将递增,所以只要EPKTCNT非0即代表有未处理数据,因此在轮询中使用 enc28j60Read(EPKTCNT)函数来判断是否有数据并进行处理。

   

这种方式经测试运行非常稳定,现在就干脆不用中断了。
作者: nnnnnnnnnnnnn    时间: 2022-3-20 23:13
谢谢分享,解决了我的问题




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1