/* Code to test wiznet WIZ810MJ module See: Current features: * Read register/address values * Write register/address values * Configure networking to enable ping * Terrible hacked-together code License: LGPL (Although note spi_transfer comes from the Playground originally.) */ // Define SPI-related pins #define PIN_DATA_OUT 11 // MOSI (Master Out / Slave In) #define PIN_DATA_IN 12 // MISO (Master In / Slave Out) #define PIN_SPI_CLOCK 13 // SCK (Serial Clock) #define PIN_SLAVE_SELECT 10 // SS (Slave Select) #define PIN_RESET 9 // WIZnet module /RESET #define WIZNET_OPCODE_READ 0x0F #define WIZNET_OPCODE_WRITE 0xF0 #define DUMMY_DATA 0xFF void setup () { Serial.begin(9600); Serial.println("Setup enter..."); Serial.print("SPCR: "); Serial.println(SPCR, BIN); // Configure SPI // Configure I/O pins pinMode(PIN_DATA_OUT, OUTPUT); pinMode(PIN_DATA_IN, INPUT); pinMode(PIN_SPI_CLOCK, OUTPUT); pinMode(PIN_SLAVE_SELECT, OUTPUT); digitalWrite(PIN_SLAVE_SELECT, HIGH); // Disable slave // Configure SPI Control Register (SPCR) (All values initially 0) // Bit Description // 7 SPI Interrupt Enable -- disable (SPIE --> 0) // 6 SPI Enable -- enable (SPE --> 1) // 5 Data Order -- MSB 1st (DORD --> 0) (Slave specific) // 4 Master/Slave Select -- master (MSTR --> 1) // 3 Clock Polarity -- (CPOL --> 0) (Slave specific) ("Mode") // 2 Clock Phase -- (CPHA --> 0) (Slave specific) // 1 SPI Clock Rate Select 1 -- } (SPR1 --> 0) // 0 SPI Clock Rate Select 0 -- } fOSC/4 (SPR0 --> 0) ("Fastest" but see SPI2X in SPSR) SPCR = (1<