Forum: Mikrocontroller und Digitale Elektronik ENC28J60 MAC-Adresse setzen nicht richtig möglich


von Philipp (Gast)


Angehängte Dateien:

Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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

von Philipp (Gast)


Lesenswert?

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?

von Philipp (Gast)


Lesenswert?

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?

von spess53 (Gast)


Lesenswert?

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

von Philipp (Gast)


Lesenswert?

Heißt also, dass wenn ich den Befehl + Daten (Adresse) schicke, dass ich 
nicht ein Byte sonder zwei zurück bekomme?

von Philipp (Gast)


Lesenswert?

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