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

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++;
}