极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: zcbzjx

【翻译教程】enc28J60 和 Arduino (1)——ping通你的Arduino

  [复制链接]
发表于 2014-4-19 15:42:14 | 显示全部楼层
老师您好,我的程序是:#include <EtherCard.h>
static byte mymac[] = {0x74,0x69,0x69,0x2D,0x30,0x31};
static byte myip[] = {111,113,20,21};
byte Ethernet::buffer[700];

void setup () {

  Serial.begin(25000);
  Serial.println("PING Demo");

  if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
    Serial.println( "Failed to access Ethernet controller");

  if (!ether.staticSetup(myip))
    Serial.println("Failed to set IP address");
}

void loop() {

  ether.packetLoop(ether.packetReceive());
}
我的enc28J60是从淘宝里买的这个http://item.taobao.com/item.htm?id=21579360796,接线是按照你说的那样接的,目前的问题有:1、enc28J60 发热厉害;2、串口显示也不对,如图所示
希望能指导一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-4-28 16:17:06 | 显示全部楼层
问一下,我将程序下好了,ping不通,且程序死了,#include <EtherCard.h>
static byte mymac[] = {0x74,0x69,0x69,0x2D,0x30,0x31};
static byte myip[] = {192,168,1,123};
byte Ethernet::buffer[50];

void setup () {

  Serial.begin(9600);
  Serial.println("PING Demo");

  if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
    Serial.println( "Failed to access Ethernet controller");
    else  
   { Serial.println( "Success to access Ethernet controller");}//测试用

  if (!ether.staticSetup(myip))
    Serial.println("Failed to set IP address");
     else  
   { Serial.println( "Success to set IP address");}//测试用
}

void loop() {
  Serial.println( "I am work");//测试用
  ether.packetLoop(ether.packetReceive());
}
回复 支持 反对

使用道具 举报

发表于 2014-5-4 19:32:47 | 显示全部楼层
”不客气,希望大家都把自己的经验分享出来,帮助别的玩家,这样我们这样的非专业玩家才可以玩得更好“
楼主这句话让人感觉很温暖

回复 支持 反对

使用道具 举报

发表于 2014-5-4 20:03:52 | 显示全部楼层
halioo 发表于 2014-4-19 15:42
老师您好,我的程序是:#include
static byte mymac[] = {0x74,0x69,0x69,0x2D,0x30,0x31};
static byte ...

1、发热问题估计是电源接的不对,ENC28J60用的是3.3V电压 ,你查一下。
2、串口不对,是你不串口波特率设置的不对。Serial.begin(25000);改成Serial.begin(9600);再试试。

回复 支持 反对

使用道具 举报

发表于 2014-5-20 17:12:53 | 显示全部楼层
谢谢,我来学习了。
回复 支持 反对

使用道具 举报

发表于 2014-7-1 17:15:10 | 显示全部楼层
请问老师。为什么我的就ping不通呢??怎么都不通。一直提示我无法连接到主机。我把波特率改成9600也还是不行。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2014-7-4 09:23:30 | 显示全部楼层
学习到很多关键的东西!
回复 支持 反对

使用道具 举报

发表于 2014-7-22 10:33:10 | 显示全部楼层
我想问下子网掩码的事,在定义中没有定义子网掩码,使用ether.printIp("Netmask:\t", ether.mymask);看到显示是0.0.0.0,而使用dhcp后显示是255.255.255.0,请问这个有影响吗?如果子网掩码是255.255.0.0的网段怎么办?
回复 支持 反对

使用道具 举报

发表于 2014-7-25 17:06:30 | 显示全部楼层
我为什么ping不通呢?
回复 支持 反对

使用道具 举报

发表于 2014-7-27 23:35:47 | 显示全部楼层
svw 发表于 2014-2-22 11:36
弱弱问下,mac不是硬件烧死的吗?难道出厂后还可以软件设定?

同问啊,MAC地址不应该是出厂前写在网络模块里面的吗?不是世上独一无二的?

请问在没有连上网ping通之前,如何知道这个网络模块的真正MAC地址呢?
回复 支持 反对

使用道具 举报

发表于 2014-8-7 20:31:55 | 显示全部楼层
能不能弄出来和此enc库一样的w5100的库文件?因为我买的以太网板子是w5100,在这方面还是小白,谢谢
回复 支持 反对

使用道具 举报

发表于 2014-8-8 04:12:36 | 显示全部楼层
我试了好多次

换过IDE 版本,换个 模块,换过MAC地址,换过片选脚,一直都是卡在

ether.begin(sizeof Ethernet::buffer, mymac, 10)

这个函数就卡死了!

我进 EtherCard.cpp 文件,看 这个函数定义,加入 println 语句查,串口出界就会出现乱码

请问这是怎么回事啊?

当我每个语句进行查的时候,发现是

好像是 enc28j60.cpp 这个类的 函数  initialize  里面的这句话,形成了死循环

while (!readOp(ENC28J60_READ_CTRL_REG, ESTAT) & ESTAT_CLKRDY);;

这个循环判断,是什么意思,代表什么意义?
回复 支持 反对

使用道具 举报

发表于 2014-8-20 13:55:34 | 显示全部楼层
我用的是2560,同一网段,
问题一:看你ping的程序我应该接哪里(我现在接的是CS==53)
问题二:程序卡在ether.begin(sizeof Ethernet::buffer, mymac, 10)一直出不来,我单独调试都不行。
库时最新的,我猜测是CS接错了,但不懂看IDE的接线!!
我是哪里出错了?
回复 支持 反对

使用道具 举报

发表于 2014-9-10 12:00:14 | 显示全部楼层
yhy630 发表于 2014-4-28 16:17
问一下,我将程序下好了,ping不通,且程序死了,#include
static byte mymac[] = {0x74,0x69,0x69,0x2D, ...

是库的问题,可以ping 通了
回复 支持 反对

使用道具 举报

发表于 2014-9-10 12:01:00 | 显示全部楼层
halioo 发表于 2014-4-19 15:42
老师您好,我的程序是:#include
static byte mymac[] = {0x74,0x69,0x69,0x2D,0x30,0x31};
static byte ...

波特率不对
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-4 07:30 , Processed in 0.052879 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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