ENC28J60 nimmt nur ARP Requests oder Broadcast an

#4786200
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
};
Gast #4786219
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?
Gast #4786227
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
Gast #4786389
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.