Per velocizzare l'ISR sarebbe meglio evitare il salto alla funzione e usare PORT anziché digitalWrite:
ISR(TIMER1_OVF_vect) // interrupt service routine
{
TCNT1 = timer1_counter; // preload timer
static byte Pin1 = LOW;
if (clkPin1 >= SetPin1)
{
if(Pin1) PORTB|=B00100000;
else PORTB&=B11011111;
Pin1=!Pin1;
clkPin1 = 0;
}
else clkPin1++;
}