MCP23S17 per comandare dei relay

Il pin SS vedo che si trova nella porta B ma nella prima posizione della porta, cioè in PB0 (pin19).

Nel codice mi pare che c'è una constante "#define SS" che non viene usata, beh usala più o meno così:

#define SPI_SS 0b00000001

Nel codice sostituisci :

PORTB |= 0b00000100
con
PORTB |= SPI_SS

Anche quando rimette il bit a zero usando "&=" al posto di "|=" devi fare la sostituzione.
PS: non mi ricordo il codice.

Sempre che tu non abbia già provato senza risolvere.

Ciao.