La frecuencia depende de dos cosas..
1) El cristal que estés usando
2) La config del Timer 
Ejemplo GP32 con un cristal de 10 MHz
10'000.000 / 4 = 2'500.000     // Cada instruccion se ejecuta a 4 ciclos del reloj por               eso el 4
2'500.000 MHz   --->   0,4 uS     
Entonces casa 0,4 uS ejecuta una instrucción
Ahora si se tiene un Preescaler de  % 4   en el timer, el conteo del mismo se ejecuta cada  
0.4 x 4 = 1.6 uS
Y lo ultimo que haría falta saber es el modulo del conteo para el Timer... para entener aun mas ver ejemplo
 
#include <hidef.h> 
#include <MC68HC908GP32.h> 
 
interrupt 4 void rsi_t1ch0 (void);
interrupt 6 void rsi_ov1 (void); 
 
void main(void) 
 
  CONFIG1|=0x01;
  DDRD=0x10;    
  T1SC  =0b01110010;         // Prescaler: Div entre 4 y se habilito
  T1SC0 =0b01010110;        // Config del PWM
  
// ****MODULOS DE CONTEO   ********\\  
  T1MOD=0x186A;             // 186A(6250)decimal x 1,6 us = 10 ms "periodo del PWM"
  T1CH0 =0x09C4;            // 09C4(2500)decimal x 1,6 us = 4  ms   "Ancho del pulso"
                 
  T1SC&=~(0x20);        
  EnableInterrupts;
  for(;;) {    }  
}
 
// VECTORES DE INTERRUPCION 
 
interrupt 4 void rsi_t1ch0 (void) {  T1SC0&=(~0x80); }
interrupt 6 void rsi_ov1   (void) {   T1SC&=(~0x80);  }
 
 
 
Ese codigo funciona para el Codewarrior version 3.0 que es la que uso...