timer interrupt - variabili globali che non si aggiorano - noInterrupt che va.

Devi dichiarare SetPin volatile. Ti lascio al K&R per la spiegazione ;).

Comunque visto che è una variabile che occupa più di un byte, disabilitare gli Interrupt mentre ne cambi il valore è una buona idea per garantire l'atomicità della cosa.