Hola Buen día!
Estuve intentando realizar este ejercicio de la rampa de aceleración con 2 Timers. El Timer 1 se utiliza para la generación de los pulsos de frecuencia variable mientras que el Timer 0 se utiliza para el conteo del intervalo de tiempo de 100ms entre cambios de frecuencia del oscilador. El asunto es que no funciona (al menos en el simulador). En cambio el oscilador continúa pulsando a la frecuencia inicial de 50 Hz.
Estuve realizando el debug del programa desde el simulador y aparentemente la rutina de servicio por el evento de que han transcurrido los 100ms se ejecuta correctamente en la primera sucesión del evento. En el siguiente evento de la rutina de servicio parece ser que las instrucciones ejecutadas en el llamado previo han sido revertidas, el registro OCR1A tiene el valor que tenía antes de que se ejecutara la ISR así como también el OCR0A. Si se me puede dar ayuda estaría agradecido!
A continuación dejo el archivo de texto con el código del programa y el archivo del simulador junto con capturas sucesivas del debug del programa.
En el ejercicio utilizo un prescaler x8 utilizo el WGM CTC en ambos TIMERS