Forum: Mikrocontroller und Digitale Elektronik ENC28J60 nimmt nur ARP Requests oder Broadcast an


von BerndB (Gast)


Lesenswert?

Hallo,

bei meinem Versuch (nach Ulrich Radig) auf einen "ping" zu antworten 
habe ich das Problem, das der Interrupt meines ENC28J60 nur bei einem 
ARP oder Broadcast funktioniert und nicht bei einem ICMP zum Beispiel.

Kann mir jemand helfen?

Mit Dank,
Bernd

von Little B. (lil-b)


Lesenswert?

Ich verwende auch den ENC28j60, an einem STM32F4 Discovery Board.

Ich habe ebenfalls das Phänomen, dass keine PING-pakete empfangen 
werden.
Alles andere funktioniert jedoch einwandfrei. TCP, UDP, ARP, alles kein 
problem. HTTP, DHCP, DNS, NTP, LLMNR sind alle getestet

meine config:
1
const uint8_t enc28j60_InitScript[] = {
2
//    Size of junk    Data
3
    0x07,        0x48,0x40,0x06,0xFF,0x1F,0x40,0x06,    // set buffer pointer for rx, set read pointer to start
4
    0x03,        0x40,0x40,0x06,              // set spi read address to start
5
    0x02,        0x9F,0x01,                // switch to register bank 1
6
    0x02,        0x58,0x60,                // receive filter: all frames with correct crc
7
    0x02,        0x9F,0x02,                // switch to register bank 3
8
    0x07,        0x40,0x80,0x00,0xFF,0xE1,0xFF,0xFF,    // write own mac address
9
    0x02,        0xBF,0x01,                // switch to bank 2
10
    0x02,        0x40,0x0D,                // Enable Pause Control, enable MAC receive
11
    0x02,        0x42,0xB1,                // Enable Padding, CRC and Full Duplex
12
    0x02,        0x44,0x15,                // Set back to back inter packet gap
13
    0x03,        0x46,0x12,0x0C,              // Set non back to back inter packet gap
14
    0x03,        0x4A,0xEE,0x05,              // MTU is 1518
15
    0x05,        0x54,0x12,0x00,0x12,0x00,        // enable link change interrupt in PHY
16
    0x02,        0x5F,0x04,                // switch to register bank 0, enable receiver
17
    0x02,        0x5B,0xD8,                // enable interrupts
18
};

von BerndB (Gast)


Lesenswert?

Danke für deine Info,

bist du denn der Meinung das der ENC28J60 nicht für "ping"
geeignet ist?
Kann ich nicht glauben!

Gruß,
Bernd

von Bernd (Gast)


Lesenswert?

BerndB schrieb:
> Hallo,
>
> bei meinem Versuch (nach Ulrich Radig) auf einen "ping" zu antworten
> habe ich das Problem, das der Interrupt meines ENC28J60 nur bei einem
> ARP oder Broadcast funktioniert und nicht bei einem ICMP zum Beispiel.
>
> Kann mir jemand helfen?

Bei mir funktioniert Ping. Welche Firmware verwendest du?

von BerndB (Gast)


Lesenswert?

Oh danke,

den ping sende ich von einem Windows-XP Rechner.

Folgendes passiert:
Auf ping 192.168.0.91 bekommt mein ENC28J60 ein Interrupt (ARP 0x0806) 
und ich kann die Anforderung bearbeiten und sende ein Paket mit den 
entsprechenden Daten als IP 0x0800 opcode = 2 zurück.
Darauf schickt der PC ein ICMP-Paket und ich bekomme aber kein Interrupt 
darauf!

Das ist mein Problem!

Bernd

von Georg G. (df2au)


Lesenswert?

BerndB schrieb:
> Das ist mein Problem!

Dann nimm den Drahthai und lass ihn den Verkehr analysieren. Eventuell 
ist an deinem ARP-Response Päckchen etwas falsch.

von Netzwerkanfänger (Gast)


Lesenswert?

BerndB schrieb:
> ENC28J60 nimmt nur ARP Requests oder Broadcast an

Kann gar nicht sein. Der ENC28J60 nimmt alles an was er
auf der LAN-Leintung bekommt, sogar die Pakete die er
gar nicht haben will.

Entscheidend ist was der daran hängende Controller damit macht.

von BerndB (Gast)


Lesenswert?

>Dann nimm den Drahthai und lass ihn den Verkehr analysieren. Eventuell
>ist an deinem ARP-Response Päckchen etwas falsch.

Leider nicht! Nach Wireshark ist alles ok, und mit "arp -a" kann ich
den Eintrag in der Tabelle (PC) sehen.
Bei "Ulrich Radig" wird nach "ICMP" ausgewertet, also muß doch der 
ENC28J60 das ICMP-Paket empfangen können und einen Interrupt auslösen!

Woran kann das liegen das das bei mir nicht klappt??

Gruß,
Bernd

von BerndB (Gast)


Lesenswert?

Fehler gefunden: ERXFCON stand auf 1010 0001
Wie gesagt nur Broadcast's empfangen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.