Interrupciones con timer

Hola a todos. De primera entrada les contaré a qué se debe la pregunta.

El plan está en reproducir un stream de audio proveniente de la PC (mediante USB; o mejor dicho, puerto serial). Un programa lee un archivo WAV, y envía los bytes mediante el puerto serial del Arduino. Este último los transforma en ciclos de trabajo para dos pines PWM (para crear un pseudo-DAC estéreo). Los cambios del ciclo de trabajo se deben hacer en momentos muy precisos (22500 veces por segundo o cada 45 uS, para ser exacto).

He indagado sobre el tema, y (a mi parecer) las respuestas más relevantes las encontré aquí y aquí. Pero resulta que de tanto intentar comprender los registros del microcontrolador casi me explota la cabeza, y acabé "sin entender ni jota". Lo único que me quedó claro es que con modificar cierto registro se modifica el ciclo de trabajo del PWM de cierto pin.

Si hay alguien por aquí que sepa sobre el tema de los timers, que por favor me aclare las siguientes dudas:

  • Qué registros debo cambiar para disparar una interrupción en el timer1? La interrupción se debe disparar cada 725 ciclos del reloj (prescaler en 1).
  • Qué registros debo cambiar para que el timer0 (pines 5 y 6) genere señales PWM con la frecuencia más alta posible? A mayor frecuencia PWM, mejor desempeñan los filtros pasa-bajos.

Se lo agradecería un montón... :)

PD: dudas fuera del tema, pero por si me las quieren aclarar también:

#define SERIAL_RX_BUFFER_SIZE 1024

Es la forma correcta de agrandar el búfer de bytes recibidos?

Un ATmega328P podrá soportar tasas de baudios mayores a 115200?