Forum: Mikrocontroller und Digitale Elektronik ENC28J60 Problem mit Empfang


von Johannes (Gast)


Lesenswert?

Hallo!
Ich habe mir ein TestProgramm für den enc28j60 geschrieben.
Zum Testen schicke ich einen Ping an irgendeine Adresse, sodass im 
Sekundentakt ein ARP-Paket bei mir ankommt. allerdings kommen nur die 
ersten 4 Pakete heil an, danach gibt es in etwa 8 von 10 Fällen ein 
unerwartetes Ergebnis:
Wenn ich das erste Paket bekomme, dann wird es ab Adresse 0x0000 im 
Speicher abgelegt. Die ersten Beiden Bytes (00 46) stellen den Zeiger 
auf das Nächste Paket dar; es liegt bei 0x0046
Wenn das nächste Paket gekommen ist, dann kann ich es auch ab dieser 
Adresse finden. das Nächste ist dann bei 0x008C, dann bei 0x00D2 und 
schließlich bei 0x0118. Also immer
im Abstand von 0x46 und Der Pointer zeigt immer Richtig auf das nächste 
Paket, außer ab 0x0118. hier finde ich nur Datenmüll, auf den ersten 
Blick, dann fiel mir auf, dass das Paket schon an der Adresse 0x00FC zu 
finden ist. also bei 0xD2 + 0x2A. Ab hier stimmt dann der Pointer auf 
das Nächste Paket wieder , welches ich dann in 0x0140 finde, was gerade 
0xFC + 0x46 ist.
Abhilfe schafft also die Zeile if(NextPacketPointer==0x118) 
NextPacketPointer=0xFC
Das Kuriose ist allerdings, dass dieses Problem nicht immer auftritt. 
Manchmal arbeitet das Programm auch
ganz normal und Ich bekomme ein ordentliches Paket an der Stelle 0x0118 
abgeliefert. Ich bekomme also immer die richtigen Daten, allerdings 
manchmal an der falschen Stelle geliefert.
was kann das sein?

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.