ENC28J60 nimmt nur ARP Requests oder Broadcast an

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
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
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
>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

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.