MCP23S17 per comandare dei relay

In questa maniera cambi lo stato di tutti i pin della porta G, non solo del pin PG5, però.
Inoltre non imposti la direzione del pin prima, nel senso che all'avvio tutti i pin sono INPUT per cui mettendo su HIGH il pin non fai altro che attivare la pull-up interna.

Tu invece devi mettere il pin in OUTPUT prima, per cui devi scrivere 1 sul bit PG5 della porta G.

DDRG |= (1<<5); //imposta il pin come OUTPUT
PORTG &= ~(1<<5); mette il pin a LOW

Per riportarlo su HIGH:

PORTG |= (1<<5);