void
Enc28J60Network::writeOp(uint8_t op, uint8_t address, uint8_t data)
{
  CSACTIVE;
  // issue write command
  SPI.transfer(op | (address & ADDR_MASK));
  SPI.transfer(data);
  CSPASSIVE;
}
void Enc28J60Network::writeByte(uint16_t addr, uint8_t data)
{
  writeRegPair(EWRPTL, addr);

  CSACTIVE;
  SPI.transfer(ENC28J60_WRITE_BUF_MEM);
  SPI.transfer(data);
  CSPASSIVE;
}
uint8_t Enc28J60Network::readByte(uint16_t addr)
{
  writeRegPair(ERDPTL, addr);

  CSACTIVE;
  SPI.transfer(ENC28J60_READ_BUF_MEM);
  uint8_t data = SPI.transfer(0x00);
  CSPASSIVE;
  return data;
}
void
Enc28J60Network::writeBuffer(uint16_t len, uint8_t* data)
{
  CSACTIVE;
  // issue write command
  SPI.transfer(ENC28J60_WRITE_BUF_MEM);
  while (len--) {
    SPI.transfer(*data++);
  }
  CSPASSIVE;
}
void
Enc28J60Network::readBuffer(uint16_t len, uint8_t* data)
{
  CSACTIVE;
  // issue read command
  SPI.transfer(ENC28J60_READ_BUF_MEM);
  while (len--) {
    *data++ = SPI.transfer(0x00);
  }
  CSPASSIVE;
}
uint8_t
Enc28J60Network::readOp(uint8_t op, uint8_t address)
{
  CSACTIVE;
  // issue read command
  SPI.transfer(op | (address & ADDR_MASK));
  byte result = SPI.transfer(0x00);
  if (address & 0x80)
    result = SPI.transfer(0x00);	
  CSPASSIVE;
  return result;
}
Exemple #7
0
/** Receive a byte from the card */
static  uint8_t spiRec(void)
{
#ifndef USE_SPI_LIB
    spiSend(0XFF);
    return SPDR;
#else
    return SPI_for_SD.transfer(0xFF);
#endif
}
Exemple #8
0
/** Send a byte to the card */
static void spiSend(uint8_t b)
{
#ifndef USE_SPI_LIB
    SPDR = b;
    while (!(SPSR & (1 << SPIF)));
#else
    SPI_for_SD.transfer(b);
#endif
}