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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.