Scusami, colpa mia, credo di non averlo esplicitato da nessuna parte, ma da progetto e` cosi`:
- GPA0-7 sono led e pulsanti 0-7
- GPB0-1 sono led e pulsanti 8-9
- GPB2-3 sono i pulsanti -/+ 10
Tornando alla questione dei led... per costruzione (vedi le uniche righe che scrivono su quelle porte, 211-217 e 157-169) il software imposta a livello
basso solo una porta alla volta delle 16 dell'I/O expander, incluse quelle non utilizzate, quindi non puo` accendersi piu` di un led alla volta (o tutti tranne uno se la logica e` invertita, ovvero led messi a massa anziche` a 5V).
Secondo me e` un problema di comunicazione tra atmega e mcp23s17, controllerei i pin A0-2 (sempre a massa), CS (NB questo e` diverso per i 2 i/o expander), SI,SO,SCK. Se ancora non va proverei a scambiare i due i/o expander, non si sa mai che uno sia fritto...
P.S. Non centra niente con il problema che hai, e` solo una nota, con l'mcp23s17, avendo l'indirizzo hardware variabile puoi anche fare una modifica volendo. Puoi usare lo stesso pin CS per entrambi gli i/o expander, dare due indirizzi diversi agli expander con i pin A0-2 e modificare leggermente il software. In realta` con solo 2 expander non e` che sia un gran vantaggio pero` volendo si puo`.