El planteo original usaba un counter y dos timers, usando 3 canales del CTC
El counter se inicializaba en 1 y se usaba para interrumpir cada vez que la rueda pasa frente al sensor de posición. Con nuestro controlador de interrupciones esto no hace falta, se conecta el sensor directamente al controlador de interrupciones.
Un timer se usa para medir el tiempo correspondiente a cada sector. El equivalente con nuestros es usar un controlador de interrupciones y un bloque timer. El tiempo en que expira este timer debe ser 1/16 del tiempo de vuelta anterior. Esto puede hacerse dividiendo por 16 el valor inicial o multiplicando por 16 el valor delprescaler.
El otro timer se utiliza para medir el tiempo de vuelta, que se utiliza para configurar el timer anterior al comienzo de la siguiente vuelta. Este timer es el que podría suprimirse y calcular el tiempo de vuelta como sugieren ustedes, sumando la cantidad de sectores que pasaron y sumando además la cuenta parcial del último sector. Hay que hacer las cuentas para ajustar el tiempo de timeout que se pedía para el caso en que el disco gira demasiado lento. La ventaja de resolverlo como proponen ustesdes es que se usa menos hardware, la desventaja es que el software queda más complejo. Esta situación de "trade-off" entre la complejidad del hardware y el software se da muy a menudo.
julio