Der Code müsste doch so stimmen oder??
Was Allgemeines:
Wenn du Fragen zu Code hast, dann poste alles, was zu diesem Code dazugehört. Wie soll dir irgendjemand hier sagen können, ob z.B. die Zeile "ADDRESS_H = getHighAddress(registers);" richtig ist, wenn wir weder das Makro "ADDRESS_H" kennen, noch die Funktion "getHighAddress"?
Was Konkretes:
Code:
WIZ_CONFIG &= ~WR; // WR low setzen -> write enabled
_delay_us(0.010);
DATA_L = value;
Das ist verkehrt herum, und das Delay ist überflüssig, bzw. sogar schädlich. Du hast dich von dem Diagramm im Datenblatt verwirren lassen.
tDATAs | Data Setup Time after /WR low | MIN 7 ns | MAX 7ns + 7XPLL_CLK
Das bedeutet nicht, dass du die Daten in diesem Bereich ausgeben musst. Es bedeutet, dass der W5300 in diesem Bereich anfängt, die Daten einzulesen. Sie müssen also zwingend schon vorher "da" sein. Am einfachsten und sichersten erreicht man das, indem man erst die Daten ausgibt, und dann WR auf Low zieht.
PS: Und lösche den anderen Thread bevor da noch jemand antwortet.
Lesezeichen