Guten Morgen liebes mikrocontroller.net-Forum. Wie ihr es bestimmt schon an der Überschrift gesehen habt, habe ich ein Problem mit meinem ENC28J60. Der ENC28J60 ist über das SPI-Interface an einem ATmega32@16MHz angeschlossen mit einem SPI-Clocktakt von freq/2. Der ENC26J60 ist auf einem Board von Amazon (http://www.amazon.de/gp/product/B00PL70YF8?psc=1&redirect=true&ref_=oh_aui_detailpage_o01_s00) verlötet, Silicon Revision 7. Nun zu meinem eigentlichen Problem: ich schaffe es einfach nicht, die MAC-Adresse richtig in die MAC-Register MAADR6:MAADR1 hineinzubekommen. Ich habe schon versucht, die MAC-Adresse in der richtigen Reihenfolge in die Register reinzubekommen wie auch in der Reihenfolge, die die Register vorgeben. Trotzdem kriege ich, egal wie rum ich es drehe, nicht die MAC-Adresse in der richtigen Reihenfolge ausgelesen. Momentan habe ich als MAC-Adresse 00:60:08:7C:75:13, dementsprechend müssten die Werte also, wenn man von Register 0 in Bank 3 ausgeht in der Reihenfolge 75:13:08:7C:00:60 vorliegen. Dem ist aber leider nicht so. Wenn ich die Register in dieser Reihenfolge auslese (über RS232), kommt seltsamer weise 60:75:13:08:7C:00 raus, das Byte, das also als letztes im Speicher stehen sollte, steht also an erster Stelle, sonst ist alles korrekt. Ich weiss echt ums verrecken nicht, woran das liegt. Ich hoffe, jemand von von euch kann mir irgendwie Helfen. Der dazugehörige Code ist im Anhang. Ich wünsche euch noch einen schönen Tag Philipp
Das sieht für mich nach einer Vertauschung der Bytes in größeren Speicherplätzen aus. Könnte durchaus daran liegen, dass die Byte-Order deines Computers anders ist, als du denkst. Da verhalten sich die Rechner Architekturen nicht alle gleich. http://de.wikipedia.org/wiki/Byte-Reihenfolge
Also könnte man theoretisch die Register aus dem ENC einfach über einen Port am ATmega über LEDs ausgeben, um den Umweg über den PC provisorisch zu vermeiden?
Ich habe jetzt mal nur versucht, 0x75 in Register 0 in Bank 3 zu schreiben und hab dann wieder die ersten 6 Register ausgegeben und sehr komischer weise kam dort 0x75, 0x75, 0x00, 0x00, 0x00, 0x00 raus. Er hat also die 0x75, aus welchem Grund auch immer, zwei mal geschrieben, und zwar in Register 0 und in Register 1. Was ist da bloß los?
Hi Lt. Datenblatt muss beim Lesen der MAC-Register ein zusätzliches Dummybyte eingefügt werden (Datenblatt FIGURE 4-4). Das fehlt in deinem Programm. MfG Spess
Heißt also, dass wenn ich den Befehl + Daten (Adresse) schicke, dass ich nicht ein Byte sonder zwei zurück bekomme?
Und es löste sich in Wohlgefallen auf. Ich danke euch allen, die mir geholfen haben, jetzt funktioniert es! Ich wünsche euch noch einen, schönen, sonnigen Tag und eine gute Woche!
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.