| 115 | | /* |
| 116 | | Serial.println("Configure device..."); |
| 117 | | |
| 118 | | // default gateway |
| 119 | | writeAddressValue(0x00, 0x01, 0xC0); |
| 120 | | writeAddressValue(0x00, 0x02, 0xA8); |
| 121 | | writeAddressValue(0x00, 0x03, 0x02); |
| 122 | | writeAddressValue(0x00, 0x04, 0x65); |
| 123 | | |
| 124 | | // subnet mask |
| 125 | | writeAddressValue(0x00, 0x05, 0xFF); |
| 126 | | writeAddressValue(0x00, 0x06, 0xFF); |
| 127 | | writeAddressValue(0x00, 0x07, 0xFF); |
| 128 | | writeAddressValue(0x00, 0x08, 0x00); |
| 129 | | |
| 130 | | // source hardware address (MAC?) |
| 131 | | writeAddressValue(0x00, 0x09, 0x00); |
| 132 | | writeAddressValue(0x00, 0x0A, 0xDE); |
| 133 | | writeAddressValue(0x00, 0x0B, 0xAD); |
| 134 | | writeAddressValue(0x00, 0x0C, 0xBE); |
| 135 | | writeAddressValue(0x00, 0x0D, 0xEF); |
| 136 | | writeAddressValue(0x00, 0x0E, 0x00); |
| 137 | | |
| 138 | | // source ip address |
| 139 | | |
| 140 | | writeAddressValue(0x00, 0x0F, 0xC0); |
| 141 | | writeAddressValue(0x00, 0x10, 0xA8); |
| 142 | | writeAddressValue(0x00, 0x11, 0x02); |
| 143 | | writeAddressValue(0x00, 0x12, 0x69); |
| 144 | | |
| 145 | | |
| 146 | | // Serial.println("SKIP: source ip address"); |
| 147 | | |
| 148 | | Serial.println("End configure device..."); |
| 149 | | */ |
| 188 | | byte readAddressValue(byte addressHiByte, byte addressLowByte) { |
| 189 | | // TODO: use a word for the address instead |
| 190 | | |
| 191 | | byte data = 0x00; |
| 192 | | |
| 193 | | digitalWrite(PIN_SLAVE_SELECT, LOW); // Enable slave |
| 194 | | |
| 195 | | // TODO: Check response values? e.g. 0x00, 0x01, 0x02 |
| 196 | | spi_transfer(WIZNET_OPCODE_READ); |
| 197 | | spi_transfer(addressHiByte); |
| 198 | | spi_transfer(addressLowByte); |
| 199 | | |
| 200 | | data = spi_transfer(DUMMY_DATA); |
| 201 | | |
| 202 | | digitalWrite(PIN_SLAVE_SELECT, HIGH); // Disable slave |
| 203 | | |
| 204 | | return data; |
| 205 | | } |
| 206 | | |
| 207 | | |
| 208 | | void writeAddressValue(byte addressHiByte, byte addressLowByte, byte targetValue) { |
| 209 | | // TODO: use a word for the address instead |
| 210 | | |
| 211 | | digitalWrite(PIN_SLAVE_SELECT, LOW); // Enable slave |
| 212 | | |
| 213 | | // TODO: Check response values? e.g. 0x00, 0x01, 0x02 |
| 214 | | spi_transfer(WIZNET_OPCODE_WRITE); |
| 215 | | spi_transfer(addressHiByte); |
| 216 | | spi_transfer(addressLowByte); |
| 217 | | |
| 218 | | spi_transfer(targetValue); |
| 219 | | |
| 220 | | digitalWrite(PIN_SLAVE_SELECT, HIGH); // Disable slave |
| 221 | | } |
| 222 | | |
| 223 | | // From Playground |
| 224 | | char spi_transfer(volatile char data) |
| 225 | | { |
| 226 | | SPDR = data; // Start the transmission |
| 227 | | while (!(SPSR & (1<<SPIF))) // Wait for the end of the transmission |
| 228 | | { |
| 229 | | }; |
| 230 | | return SPDR; // return the received byte |
| 231 | | } |
| 232 | | |