/* Code to test MCP23S08 SPI B-bit I/O expander See: */ // Define SPI-related pins #define PIN_DATA_OUT 11 // MOSI (Master Out / Slave In) #define PIN_DATA_IN 12 // MISO (Master In / Slave Out) #define PIN_SPI_CLOCK 13 // SCK (Serial Clock) #define PIN_SLAVE_SELECT 10 // SS (Slave Select) void setup () { Serial.begin(9600); Serial.println("Setup enter..."); Serial.print("SPCR: "); Serial.println(SPCR, BIN); // Configure SPI // Configure I/O pins pinMode(PIN_DATA_OUT, OUTPUT); pinMode(PIN_DATA_IN, INPUT); pinMode(PIN_SPI_CLOCK, OUTPUT); pinMode(PIN_SLAVE_SELECT, OUTPUT); digitalWrite(PIN_SLAVE_SELECT, HIGH); // Disable slave // Configure SPI Control Register (SPCR) (All values initially 0) // Bit Description // 7 SPI Interrupt Enable -- disable (SPIE --> 0) // 6 SPI Enable -- enable (SPE --> 1) // 5 Data Order -- MSB 1st (DORD --> 0) (Slave specific) // 4 Master/Slave Select -- master (MSTR --> 1) // 3 Clock Polarity -- (CPOL --> 0) (Slave specific) ("Mode") // 2 Clock Phase -- (CPHA --> 0) (Slave specific) // 1 SPI Clock Rate Select 1 -- } (SPR1 --> 0) // 0 SPI Clock Rate Select 0 -- } fOSC/4 (SPR0 --> 0) ("Fastest" but see SPI2X in SPSR) SPCR = (1<