找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5596|回复: 1
打印 上一主题 下一主题
收起左侧

ENC28J60大量数据时无法中断

[复制链接]
跳转到指定楼层
楼主
ID:82083 发表于 2015-6-6 21:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  使用ENC28J60移植uip搭建网络,以太网控制器收到数据时,会产生中断,于是把中断口连接到GPIO口,设置为外部中断,当接收到数据时,进入中断把中断标志ETH_INT置1,然后轮询ETH_INT为1时接收数据;

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

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

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

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

   

这种方式经测试运行非常稳定,现在就干脆不用中断了。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:630615 发表于 2022-3-20 23:13 | 只看该作者
谢谢分享,解决了我的问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表