dsPIC33F – Capítulo 1: El OSCILADOR

Tras llevarme los últimos días cacharreando con el oscilador de mi primer dsPIC33F (un 33FJ64MC706 montado sobre dsRRBOARD) voy a escribir lo que he descubierto sobre esa pequeña maravilla.

 



El oscilador de dicho micro más bien debería llamarse, el conjunto de osciladores, porque como podéis ver en este esquema dispone de un montón de alternativas para hacer funcionar el corazón de nuestro magnífico dsPIC33F.

Los modos de funcionamiento que pone a nuestra disposición son:

  • Oscilador Interno: que puede entrar directo al micro, con división por 16, con división por N o a través del módulo PLL
  • Oscilador Primario: con configuraciones HS, XT y EC, que también puede entrar directo al micro o a través del PLL
  • Oscilador Interno de bajo consumo: es un oscilador especial que funciona a una frecuencia de 32KHz a piñón fijo
  • Oscilador Secundario: podemos meter otro oscilador por la patilla del timer y utilizarlo como motor del micro aunque en este caso no disponemos de PLL

Lo mejor de todo es que nuestra pequeña maravilla nos permite cambiar dinámicamente en plena ejecución entre las distintas modalidades de oscilador, lo que convierte a nuestro micro en un arma muy versátil en aplicaciones donde el control de tiempos sea crítico o donde haya que cuidar mucho el consumo.

A este respecto, también pone a nuestra disposición un post-divisor que sólo afecta a la CPU, al que los chicos de Microchip han bautizado como DOZE. La característica de este divisor es que permite marcar un ritmo a la CPU hasta 256 veces inferior al del clock principal, con lo que el consumo baja en esa relación, pero manteniendo los periféricos a todo trapo.
¿Que para qué sirve?, pues imagina un entorno donde las comunicaciones entre nuestro micro y otros dispositivos (RAM, ADC,…) vayan a toda leche, pero sin embargo la capacidad de gestión no sea crítica.

El módulo PLL aporta una flexibilidad extraordinaria, puesto que de una frecuencia de origen es capaz de obtener 512*32*3 = 49152 combinaciones distintas.

Para colmo, el oscilador interno que por defecto trabaja a 7,37 MHz puede «tunearse» desde 6,48MHz hasta 8,22MHz en micropasos de aproximadamente 30KHz.

Pues estas características, y algunas más que descubriréis en la datasheet son capaces de hacer volar a nuestro micro a 55MIPS. Sí, he dicho bien, el límite teórico es de 40MIPS pero el mío ha estado trabajando toda una mañana a 55MIPS sin despeinarse.

Además, me quedo muy tranquilo porque tiene un bit que le protege contra subidas de temperatura. Por fin podemos hacer overclocking sin miedo a freir nuestros micros.

Os recomiendo lo probéis, seguro que no os decepciona. Si os da miedo enfrentaros a la datasheet, he preparado un asistente de configuración que genera el código automáticamente para configurar nuestro oscilador en C30.

Aquí algunos ejemplos:

OSCILADOR INTERNO + PLL VOLANDO A 41MIPS

OSCILADOR INTERNO DIV 32 A 128Khz

Espero que lo disfrutéis por lo menos la mitad que yo.

Share