Welcher Timer für was?

Das hängt vom PWM Modus ab. Da gibt es zig verschiedene. Auf dem Arduino läuft Timer0 auf Fast PWM und Timer1 und Timer2 in phase-correct PWM

Schau ins Datenblatt

Den Teil verstehe ich aber auch nicht komplett. Bei MaxEmbedded gibt es auch zwei Tutorials zu PWM:
http://maxembedded.com/2011/08/07/avr-timers-pwm-mode-part-i/
http://maxembedded.com/2012/01/07/avr-timers-pwm-mode-part-ii/

Da steht z.B.:

The following code discusses how to create a PWM signal of a desired duty cycle. If you wish to change its frequency, you need to alter the TOP value, which can be done using the ICRx register (which is not supported by 8-bit timers). For 16-bit Timer1, it can be varied using ICR1A. I will discuss about this soon when we discuss about servo control.

Ok, das mit dem Compare Register war dann falsch. Das ändert den Duty Cycle. Aber es geht auch anders.

Ob das jetzt Arduino Code oder AVR C ist, ist egal. Der Code da lässt sich sehr leicht anpassen. Reinen Arduino Code auf der Ebene ist eher selten, da das kein Anfänger Thema ist.