// Generic SPI write command void enc28j60_write_op(uint8_t cmd, uint8_t adr, uint8_t data) { enc28j60_select(); enc28j60_tx(cmd | (adr & ENC28J60_ADDR_MASK)); enc28j60_tx(data); enc28j60_release(); }
// Initiate software reset void enc28j60_soft_reset() { enc28j60_select(); enc28j60_tx(ENC28J60_SPI_SC); enc28j60_release(); enc28j60_current_bank = 0; _delay_ms(1); // Wait until device initializes }
// Generic SPI read command uint8_t enc28j60_read_op(uint8_t cmd, uint8_t adr) { uint8_t data; enc28j60_select(); enc28j60_tx(cmd | (adr & ENC28J60_ADDR_MASK)); if(adr & 0x80) // throw out dummy byte enc28j60_rx(); // when reading MII/MAC register data = enc28j60_rx(); enc28j60_release(); return data; }
// Initiate software reset void enc28j60_soft_reset() { enc28j60_select(); enc28j60_tx(ENC28J60_SPI_SC); enc28j60_release(); enc28j60_current_bank = 0; volatile uint32_t i; for (i=0; i<20000; i++) { } //_delay_ms(1); // Wait until device initializes }