uint8_t enc28j60_readOp(uint8_t op, uint8_t address) { csactive(); SPDR = op | (address & ADDR_MASK); waitspi(); SPDR = 0x00; waitspi(); if (address & 0x80) { SPDR = 0x00; waitspi(); } cspassive(); return SPDR; }
void enc28j60WriteBuffer(uint16_t len, uint8_t* data) { CSACTIVE; // issue write command SPDR = ENC28J60_WRITE_BUF_MEM; waitspi(); while(len) { len--; // write data SPDR = *data; data++; waitspi(); } CSPASSIVE; }
void enc28j60_readBuffer(uint16_t len, uint8_t* data) { csactive(); SPDR = RBM; waitspi(); while (len) { len--; SPDR = 0x00; waitspi(); *data = SPDR; data++; } *data='\0'; cspassive(); }
void enc28j60ReadBuffer(uint16_t len, uint8_t* data) { CSACTIVE; // issue read command SPDR = ENC28J60_READ_BUF_MEM; waitspi(); while(len) { len--; // read data SPDR = 0x00; waitspi(); *data = SPDR; data++; } *data='\0'; CSPASSIVE; }
/* Write a byte on SPI */ void dotmatrixSPIWrite(uint8_t data) { uint8_t dummy = 0; /* Wait for empty transmit buffer */ while ( !( UCSR0A & (1<<UDRE0)) ); // write data dummy = UDR0; UDR0 = data; waitspi(); }
uint8_t enc28j60ReadOp(uint8_t op, uint8_t address) { CSACTIVE; // issue read command SPDR = op | (address & ADDR_MASK); waitspi(); // read data SPDR = 0x00; waitspi(); // do dummy read if needed (for mac and mii, see datasheet page 29) if(address & 0x80) { SPDR = 0x00; waitspi(); } // release CS CSPASSIVE; return(SPDR); }