holger schrieb:
>>nein er hat eine mac-addresse, diese kann man überschreiben muss
> man
>>aber nicht.
>>
>>auszug aus dem datenblatt:
>>
>>"8.6.1. preprogrammed mac address
>>as shipped, each ENCX24J600 device has been preprogrammed with a unique
>>MAC address.
>
> Dann hättest du vieleicht mal sagen sollen um welchen ENC es
> sich dreht. Das kann hier ja keiner raten. Genausowenig kann man
> raten was die anderen nicht gezeigten Codeteile machen.
>
> Viel Glück noch.
gehts noch einwenig unfreundlicher bitte?! ok die eine angabe vergessen,
aber ich hatte erwähnt das ich über SPI die richtigen werte bekomme,
also kann es nicht daran liegen das der ENC keine MAC-Addresse hat!
hier nochmal mein debuggprozess:
--> ruft getMac1() auf
mittels
wird Bank 3 des ENC selektiert.
1 | return Byte2Op((BYTE)(RCR|0x04),0x00);
|
--> rufe Byte2Op auf und gebe den Wert zurück.
Byte2Op ruft den Wert eines Bytes einer Stelle in der Mac-Addresse ab!
1 | BYTE Byte2Op(BYTE code, BYTE data) {
|
2 | BYTE answer = 0;
|
3 | ENC_CS = 0;
|
4 | SPI_IF = 0;
|
5 | SPI_BUF = code;
|
6 | WaitForSend();
|
7 | answer = SPI_BUF;
|
8 | SPI_BUF = data;
|
9 | WaitForSend();
|
10 | answer = SPI_BUF; <-- an dieser stelle bekommt answer den wert des empfangenen bytes
|
11 | ENC_CS = 1;
|
12 | return answer; <-- Wert wird zurückgegeben
|
13 | }
|
1 | unsigned char getMac1(){
|
2 | ByteOp(B3SEL);
|
3 | return Byte2Op((BYTE)(RCR|0x04),0x00); <-- gibt Wert von answer zurück
|
4 | }
|
1 | delayms(500);
|
2 | LCD_Line1();
|
3 | mac1 = getMac1(); <-- hier kommt dieser Wert nie an
|
4 | LCD_hex(getMac1()); <-- in dieser Codezeile hat mac1 immer noch den wert 0x00
|
5 | LCD_string("-");
|
6 | mac2 = getMac2(); <-- das gleiche mit dem zweiten byte
|
7 | LCD_hex(mac2); <-- mac2 bleibt bei 0x00
|
8 | LCD_string("-");
|
9 | LCD_hex(getMac3());
|
10 | LCD_string("-");
|
11 | LCD_hex(getMac4());
|
12 | LCD_string("-");
|
13 | LCD_hex(getMac5());
|
14 | LCD_string("-");
|
15 | LCD_hex(getMac6());
|
denke nicht das noch andere programmteile benötigt werden, falls ja
bitte sagen
edit:
also der Wert geht beim return der getMac()-Funktion verloren
1 | unsigned char getMac2(){
|
2 | BYTE buffer = 0;
|
3 | ByteOp(B3SEL);
|
4 | buffer = Byte2Op((BYTE)(RCR|0x05),0x00); //hier wird der richtige wert übergeben
|
5 | LCD_hex(buffer); //hier wird der wert richtig ausgegeben
|
6 | return buffer; //hier zurück gegeben allerdings kommt der wert nie bei mac2 in der main-methode an
|
7 | }
|