Ejemplo n.º 1
0
SPI::SPI(uint8_t mode, Order order) :
  m_list(NULL),
  m_dev(NULL),
  m_sem(1)
{
  // Initiate the SPI port and control for slave mode
  synchronized {
    bit_set(DDRB, Board::MISO);
    bit_mask_clear(DDRB, _BV(Board::MOSI) | _BV(Board::SCK) | _BV(Board::SS));
    SPCR = (_BV(SPIE) | _BV(SPE)
	    | ((order & 0x1) << DORD)
	    | ((mode & 0x3) << CPHA)); 
  }
}
Ejemplo n.º 2
0
SPI::SPI() :
  m_list(NULL),
  m_dev(NULL),
  m_busy(false)
{
  // Initiate the SPI data direction for master mode
  // The SPI/SS pin must be an output pin in master mode
  synchronized {
    bit_mask_set(DDRB, _BV(Board::MOSI) | _BV(Board::SCK) | _BV(Board::SS));
    bit_clear(DDRB, Board::MISO);
    bit_mask_clear(PORTB, _BV(Board::SCK) | _BV(Board::MOSI));
    bit_set(PORTB, Board::MISO);
  }
  // Other the SPI setup is done by the SPI::Driver::begin()
}