Linux/Windows V0022/1.0 ethernet problem SOLVED

I found it. It was in the w5100.h file starting at line 253 in my version. The new compiler version did not like the old way.

The old code:

#define __SOCKET_REGISTER16(name, address)                   \
  static void write##name(SOCKET _s, uint16_t _data) {       \
    writeSn(_s, address,   _data >> 8);                      \
    writeSn(_s, address+1, _data & 0xFF);                    \
  }                                                          \
  static uint16_t read##name(SOCKET _s) {                    \
    uint16_t res = readSn(_s, address);                      \
    res = (res << 8) + readSn(_s, address + 1);              \
    return res;                                              \
  }

The new code:

#define __SOCKET_REGISTER16(name, address)                   \
  static void write##name(SOCKET _s, uint16_t _data) {       \
    writeSn(_s, address,   _data >> 8);                      \
    writeSn(_s, address+1, _data & 0xFF);                    \
  }                                                          \
  static uint16_t read##name(SOCKET _s) {                    \
    uint16_t res = readSn(_s, address);                      \
    uint16_t res2 = readSn(_s,address + 1); 			\
    res = res << 8;						\
    res2 = res2 & 0xFF;						\
    res = res | res2;						\
    return res;                                              \
  }

Works great now! :slight_smile:

This means I have a current version running!
One bug/fix in avr-libc, one in wiring.h, and one in the ethernet library.