static void writeBuf(word len, const byte* data) { enableChip(); xferSPI(ENC28J60_WRITE_BUF_MEM); while (len--) xferSPI(*data++); disableChip(); }
static void WriteBuffer(word len, byte* data) { enableChip(); sendSPI(ENC28J60_WRITE_BUF_MEM); while (len--) sendSPI(*data++); disableChip(); }
void enc28j60WriteOp(uint8_t op, uint8_t address, uint8_t data) { enableChip(); sendSPI(op | (address & ADDR_MASK)); sendSPI(data); disableChip(); }
static void readBuf(uint16_t len, byte* data) { //this bit ipsis literis from Seradisis's port enableChip(); SPI.transfer(ENC28J60_READ_BUF_MEM); while (len--) { *data++ = SPI.transfer(0x00); } disableChip(); }
void enc28j60WriteBuffer(uint16_t len, uint8_t* data) { enableChip(); sendSPI(ENC28J60_WRITE_BUF_MEM); while (len--) sendSPI(*data++); disableChip(); }
static void readBuf(word len, byte* data) { enableChip(); xferSPI(ENC28J60_READ_BUF_MEM); while (len--) { xferSPI(0x00); *data++ = SPDR; } disableChip(); }
static void writeBuf(uint16_t len, const byte* data) { //this bit ipsis literis from Seradisis's port enableChip(); SPI.transfer(ENC28J60_WRITE_BUF_MEM); while (len--) SPI.transfer(*data++); disableChip(); }
void enc28j60ReadBuffer(uint16_t len, uint8_t* data) { enableChip(); sendSPI(ENC28J60_READ_BUF_MEM); while (len--) { sendSPI(0x00); *data++ = SPDR; } disableChip(); }
static void drop(word len) { enableChip(); xferSPI(ENC28J60_READ_BUF_MEM); while (len--) { xferSPI(0x00); SPDR; } disableChip(); }
static void ReadBuffer(word len, byte* data) { enableChip(); sendSPI(ENC28J60_READ_BUF_MEM); while (len--) { sendSPI(0x00); *data++ = SPDR; } disableChip(); *data='\0'; }
byte ENC28J60Driver::readOp (uint8_t op, uint8_t address) { enableChip(); xferSPI(op | (address & ADDR_MASK)); xferSPI(0x00); if (address & 0x80) xferSPI(0x00); uint8_t result = SPDR; disableChip(); return result; }
static byte readOp (byte op, byte address) { enableChip(); xferSPI(op | (address & ADDR_MASK)); xferSPI(0x00); if (address & 0x80) xferSPI(0x00); byte result = SPDR; disableChip(); return result; }
static byte readOp (byte op, byte address) { enableChip(); byte result; SPI.transfer(op | (address & ADDR_MASK)); result = SPI.transfer(0x00); if (address & 0x80) result = SPI.transfer(0x00); disableChip(); return result; }
void enc28j60WriteBuffer(uint16_t len, uint8_t* data) { if(len >= (MAX_FRAMELEN)) return; enableChip(); sendSPI(ENC28J60_WRITE_BUF_MEM); while (len--) sendSPI(*data++); disableChip(); }
void enc28j60ReadBuffer(uint16_t len, uint8_t* data) { enableChip(); sendSPI(ENC28J60_READ_BUF_MEM); while (len--) { sendSPI(0x00); *data++ = ReadSPDR(); } disableChip(); // Remove next line suggested by user epam - not needed // *data='\0'; }
void ADE7758::write8bits(char reg, unsigned char data) { enableChip(); delay(10); spi_transfer(REG_WRITE(reg)); delay(2); spi_transfer(data); delay(1); disableChip(); }
void ADE7758::write16bits(char reg, unsigned int data) { enableChip(); delay(10); spi_transfer(REG_WRITE(reg)); delay(2); spi_transfer((unsigned char)((data>>8)&0xFF)); delay(2); spi_transfer((unsigned char)(data&0xFF)); delay(1); disableChip(); }
uint8_t enc28j60ReadOp(uint8_t op, uint8_t address) { enableChip(); // issue read command sendSPI(op | (address & ADDR_MASK)); sendSPI(0x00); if (address & 0x80) sendSPI(0x00); byte result = SPDR; // release CS disableChip(); return result; }
unsigned char ADE7758::read8bits(char reg) { enableChip(); unsigned char ret; delay(10); spi_transfer(REG_READ(reg)); delay(2); ret=spi_transfer(0x00); delay(1); disableChip(); return ret; }
unsigned int ADE7758::read16bits(char reg) { enableChip(); unsigned int ret=0; unsigned char ret0=0; delay(10); spi_transfer(REG_READ(reg)); delay(2); ret=spi_transfer(0x00); delay(2); ret0=spi_transfer(0x00); delay(1); disableChip(); ret= (ret<<8)|ret0; return ret; }
static void writeBuf(uint16_t len, const byte* data) { enableChip(); if (len != 0) { xferSPI(ENC28J60_WRITE_BUF_MEM); SPDR = *data++; while (--len) { uint8_t nextbyte = *data++; while (!(SPSR & (1<<SPIF))) ; SPDR = nextbyte; }; while (!(SPSR & (1<<SPIF))) ; } disableChip(); }
static void readBuf(uint16_t len, byte* data) { uint8_t nextbyte; enableChip(); if (len != 0) { xferSPI(ENC28J60_READ_BUF_MEM); SPDR = 0x00; while (--len) { while (!(SPSR & (1<<SPIF))) ; nextbyte = SPDR; SPDR = 0x00; *data++ = nextbyte; } while (!(SPSR & (1<<SPIF))) ; *data++ = SPDR; } disableChip(); }
/* ======================================================================= */ ENC28J60Driver::ENC28J60Driver(uint8_t* macaddr, uint8_t csPin): EthernetDriver(macaddr){ this->sendBuffer = new ENC28J60Buffer(this,TXSTART_INIT+1, TXSTOP_INIT, MAX_FRAMELEN, 0,false); this->recvBuffer = new ENC28J60Buffer(this,RXSTART_INIT, RXSTOP_INIT, MAX_FRAMELEN, 0,true); this->stashBuffer = new ENC28J60Buffer(this,STASH_START_INIT, STASH_STOP_INIT, STASH_STOP_INIT - STASH_START_INIT +1, 0,false); if (bitRead(SPCR, SPE) == 0) initSPI(); selectPin = csPin; pinMode(selectPin, OUTPUT); disableChip(); writeOp(ENC28J60_SOFT_RESET, 0, ENC28J60_SOFT_RESET); delay(2); // errata B7/2 while (!readOp(ENC28J60_READ_CTRL_REG, ESTAT) & ESTAT_CLKRDY) ; gNextPacketPtr = RXSTART_INIT; writeReg(ERXST, RXSTART_INIT); writeReg(ERXRDPT, RXSTART_INIT); writeReg(ERXND, RXSTOP_INIT); writeReg(ETXST, TXSTART_INIT); writeReg(ETXND, TXSTOP_INIT); writeRegByte(ERXFCON, ERXFCON_UCEN|ERXFCON_CRCEN|ERXFCON_PMEN|ERXFCON_BCEN); writeReg(EPMM0, 0x303f); writeReg(EPMCS, 0xf7f9); writeRegByte(MACON1, MACON1_MARXEN|MACON1_TXPAUS|MACON1_RXPAUS); writeRegByte(MACON2, 0x00); writeOp(ENC28J60_BIT_FIELD_SET, MACON3, MACON3_PADCFG0|MACON3_TXCRCEN|MACON3_FRMLNEN); writeReg(MAIPG, 0x0C12); writeRegByte(MABBIPG, 0x12); writeReg(MAMXFL, MAX_FRAMELEN); writeRegByte(MAADR5, macaddr[0]); writeRegByte(MAADR4, macaddr[1]); writeRegByte(MAADR3, macaddr[2]); writeRegByte(MAADR2, macaddr[3]); writeRegByte(MAADR1, macaddr[4]); writeRegByte(MAADR0, macaddr[5]); writePhy(PHCON2, PHCON2_HDLDIS); SetBank(ECON1); writeOp(ENC28J60_BIT_FIELD_SET, EIE, EIE_INTIE|EIE_PKTIE); writeOp(ENC28J60_BIT_FIELD_SET, ECON1, ECON1_RXEN); this->revision = readRegByte(EREVID); // microchip forgot to step the number on the silcon when they // released the revision B7. 6 is now rev B7. We still have // to see what they do when they release B8. At the moment // there is no B8 out yet if (this->revision > 5) this->revision++; }
void ENC28J60Driver::writeOp (uint8_t op, uint8_t address, uint8_t data) { enableChip(); xferSPI(op | (address & ADDR_MASK)); xferSPI(data); disableChip(); }
static void writeOp (byte op, byte address, byte data) { enableChip(); SPI.transfer(op | (address & ADDR_MASK)); SPI.transfer(data); disableChip(); }
static void writeOp (byte op, byte address, byte data) { enableChip(); xferSPI(op | (address & ADDR_MASK)); xferSPI(data); disableChip(); }