Hallo Zusammen,
Ich habe einen PIC18F47Q43 mit einem ENC28J60 verbunden, funktioniert
soweit. Die IDE ist die MPLAB IDE v6.20. Der C-Compiler der XC8 Version
2.46.
Ich möchte ich die MAC-Adresse wie zuvor die IP-Adressen aus dem EEPROM
auslesen. wenn ich die Speicher manuell nacheinander abfrage, dann geht
das auch. sobald ich hier eine Schleife einsetze, ist diese immer in
einer Endlosschleife.
1. manuelles Einlesen der MAC-Adresse, Code funktioniert
1 | // MAC-Adresse auslesen
|
2 | MC.NW_MAC[0] = DATAEE_ReadByte(0xFA);
|
3 | MC.NW_MAC[1] = DATAEE_ReadByte(0xFB);
|
4 | MC.NW_MAC[2] = DATAEE_ReadByte(0xFC);
|
5 | MC.NW_MAC[3] = DATAEE_ReadByte(0xFD);
|
6 | MC.NW_MAC[4] = DATAEE_ReadByte(0xFE);
|
7 | MC.NW_MAC[5] = DATAEE_ReadByte(0xFF);
|
2. Schleife funktioniert nicht, wird kompiliert und übertragen. Sie
bleibt jedoch laut Debugger und ein paar Tests hier hängen, und befindet
sich dort auch in eine Endlos-Schleife.
1 | int_Offset = 0;
|
2 | for (int_Adresse = 0xFA; int_Adresse <= 0xFF; int_Adresse++)
|
3 | {
|
4 | MC.NW_MAC[int_Offset] = DATAEE_ReadByte(int_Adresse);
|
5 | int_Offset++;
|
6 | }
|
3. Diese modifizierte Schleife funktioniert. Dies entspricht nicht der
Norm einer Schleife,
1 | int_Offset = 0;
|
2 | for (int_Adresse = 0xFA; int_Adresse <= 0xFF; int_Adresse++)
|
3 | {
|
4 | MC.NW_MAC[int_Offset] = DATAEE_ReadByte(int_Adresse);
|
5 | int_Offset++;
|
6 |
|
7 | if (int_Offset == 0xFF)
|
8 | {
|
9 | break;
|
10 | }
|
11 | }
|
Bin mal auf Eure Rückmeldungen gespannt. Ich bin glücklich dass ich ein
funktionierendes Projekt, allerdings würde ich gerne den Grund kennen.
Die Schleife geht bei den IP-Adressen ja auch.
Viele Grüße
Ingo