Zu 2.:

Code:
ISR(TIMER1_COMPA_vect){
        PORTB ^= PORTB;               // invertiert PORTB zB
}


void init_Timer1CompMatch(){       //zB Timer1 Compare Match initialisieren
       TCCR1X = xy;                         // hier die entsprechenden Bit setzen wie im Datenblatt beschrieben, je nach Anwendungsfall
       // und alle weiteren möglichen Register einstellen
       sei();
}

void init_Ports(){}                         // Ports = Ausgänge usw

int main (void){
      init_Ports();                        
      init_Timer1CompMatch();
      while(1){}

}
Invertieren so wie im Beispiel
10Takte/s sind 10Hz !
Du musst den Simulator separat einstellen mit 16MHz
Optimierung muss ein sein, wie Sternst sagt.