Vous êtes sur la page 1sur 4

Configuración de Fuses PIC18F4550 en mikroC

MATERIA: THS - 600”A”

NOMBRE: ALVARO AREQUIPA BARRA

FECHA: 17/04/2017

¿Fusibles?

Los bit's de configuración o también llamados "fusibles" permiten configurar ciertas funciones en los microcontroladores PIC. La
cantidad de funciones dependen del microcontrolador, por ejemplo, en el 16F84A existen 4 funciones, en el 16F88 son alrededor de
13 funciones.

¿Para qué sirven?

Nos permiten configurar algunas funciones del micro, como el tipo de oscilador, la proteccion de codigo, habilitar el perro guardian
(evita que se quede pegado el micro), habilitar el reset maestro, habilitar un reset inicial, habilitar reset por bajo voltage en la
fuente, habilita el modo "depurador" o debugger, entre otros.

¿Cuándo se usan?

Si estamos usando alguno de los programadores de Microchip como el pickit2 o el pickit3, debemos escribir la configuracion de estos
fusibles en la cabecera de nuestro código fuente, antes de compilar.

Funciones que nos brinda mikroC

En su apartado Edit Project del cual es indispensable para poder configurar los registros del microcontrolador.

Otras IDE's como CCS es común que las personas tiendan a declarar esta configuración en la cabecera de su código, aunque también
posee un modo interactivo que es el Project Wizard para crear un nuevo proyecto, no es muy común su uso. También mikroC posee
esta misma capacidad aunque siempre es más cómodo configurar estos registros desde el Project Wizard o después en el Edit
Project.

Los siguientes fuses son:

1. PLL Prescaler Selection:

La función de este Fuse es dividir la frecuencia de entrada del Oscilador (OS1 y OS2) a las siguientes escalas: /No divide (1), /2, /3, /4,
/5, /6, /10, /12. Esto mediante la configuración de PLLDIV el cual funciona como un multiplexor, ejemplo si ponemos un cristal de
20MHz y configuramos “Divide by 5 (20 MHz oscillator input)” estaremos dividiendo FOSC entre 5 por lo que tendremos 4MHz a la
salida del MUX.
En su caso si ponemos “No prescaler (4 MHz oscillator input drives PLL directly)” estamos en su momento desactivando la función de
divisor, nuestro oscilador es de 4 MHz de estrada, darse cuenta que esto es un paso importante ya que dependiendo del oscilador
que estemos conectando a nuestro microcontrolador será la configuración de este fuse.

La finalidad, es obtener siempre 4 Mhz de frecuencia que son necesarios para hacer funcionar el siguiente circuito que genera a
partir de 4 MHz de frecuencia una salida de 96 MHz, esta señal entra al “PLL Postcaler” que con su división de /1,/2,/3,/4 podemos
obtener frecuencias de 48,32,24,16 MHz. Aquí llegamos a un punto que puede ser muy útil para nosotros, ya que a partir de un
cristal de 4 MHz u otro valor podemos obtener una frecuencia de hasta 48 MHz de reloj de trabajo.

2. System Clock Postscaler Selection:

Este tienes dos funciones, uno ya tocamos en el fuse de arriba y es que este fuse es el encargado de hacer la división de frecuencia
tanto de la señal de entrada de 96 MHz o del cristal u oscilador de entrada.

Veamos la configuración con el 96 MHz PLL:

Dado que en la aparte de PLL Prescaler Selection tuvimos obligatoriamente que configurar la división de nuestra entrada de reloj,
para así poder generar 4 Mhz siempre para poder luego convertirlos a 96 MHz de frecuencia, lamentablemente no podemos usar
esta frecuencia como de trabajo, sin embargo podemos dividirla en /2,/3,/4,/6 para así obtener 48,32,24,16 MHz como frecuencias
de reloj, esto es útil por dos cosas, una ya que para poder usar en su momento el modulo USB que trae integrado el
microcontrolador es necesario tener una señal de 48 MHz de reloj. La segunda podríamos decir que es la misma solo que explicare
mejor, en su momento si no deseamos usar el modulo USB pero deseamos que con nuestro oscilador de 4 MHz o diferente obtener
una señal de hasta 48 MHz este es nuestro registro a configurar.

Configuración para el Oscilador Source:

Este mismo Fuse tiene un efecto en su momento en nuestra Fuente de Oscilación y es que podemos dividirla también, por ejemplo,
tomaremos el ejemplo de un Cristal de 8 MHz como fuente de reloj, nos fijamos que el fuse trae las siguientes escalas /1,/2,/3,/4.
Esto significa que si escogemos la configuración;

[Primary Oscillator Src:/1][96 MHz PLL Src:/2]

Estamos diciendo que no habrá división ya que 8 MHz entre /1 es 8. Caso diferente si nosotros escogemos la siguiente configuración.

[Primary Oscillator Src:/3][96 MHz PLL Src:/4]

Aquí nosotros estaríamos obteniendo 2.67 MHz (8/3 = 2.67).

3. USB Clock Selection (used in Full-Speed USB mode only;UCFG):

Este fuse configura de donde proviene la velocidad de reloj para el Modulo USB. Si escoges:

 USB clock source comes from the 96 MHz PLL divided by 2.

Configuras que los 48 MHz que se necesitan para el modulo USB sean proporcionados de la división de 96 MHz divididos por dos que
son proporcionados por el Postcalador.

 USB clock source comes directly from the primary oscillator block with no postcale.

En este caso los 48 MHz serán proporcionados desde el oscilador primario.

4. Oscillator Selection:

Aquí se escoge el tipo de oscilador que se usara. Sin embargo a causa de las explicación de los 3 fuses anteriores me tomare el
tiempo de explicar 2 opciones. Nótese que entre la lista de opciones que posee el Microcontrolador existen cuatro que a mi parecer
juegan un papel importante y son:

HS oscillator, PLL enabled (HSPLL)


HS oscillator (HS)
XT oscillator, PLL enabled (XTPLL)
XT oscillator (XT)
Primero que nada recordar que; Osciladores de 4 MHz o menores son del tipo XT así que deberán escoger esa configuración.

Osciladores a mayores frecuencias son del tipo HS.

Nótese que este fuse de selección del tipo de Oscilador está ligado a los primeros 3, ya que al elegir la opción HS oscillator, PLL
enabled (HSPLL) estamos activando el uso del Postscaler dando la oportunidad de configurar el fuse System Clock Postscaler
Selection donde dependiendo de la escala de división obtendremos 48,32,24,16 MHz. Caso contrario es que si solo seleccionamos
HS oscillator (HS) estamos deshabilitando la opción del Postscaler y el fuse System Clock Postscaler Selection solo nos da la opción
de dividir o no a nuestro reloj principal.

Estos mismo efectos son para el XT oscillator, PLL enabled (XTPLL) y XT oscillator (XT).

La fuente de reloj primaria y la del USB son independientes y es que podemos hacer que el microcontrolador funciones
directamente con la fuente primaria y el USB con los 48 MHz proporcionados por el Postcaler o en su caso los dos a 48 MHz.

5. Fail - Safe Clock Monitor:

Como indica su nombre, el monitor para detectar un fallo de la fuente de reloj (Fail-Safe Clock Monitor - FSCM) monitorea el
funcionamiento externo y permite al microcontrolador continuar con la ejecución de programa en caso de que el oscilador falle por
alguna razón. En tal caso, el oscilador interno toma su función.

El monitor detecta un fallo al comparar las fuentes de reloj interno y externo. Si los pulsos del oscilador externo tardan más de 2mS
en llegar, la fuente de reloj será automáticamente cambiada por la interna. Así, el oscilador interno sigue funcionando controlado
por los bits del registro OSCCON. Si el bit OSFIE del registro PIE2 está a uno, se producirá una interrupción.

El reloj interno sigue siendo la fuente del reloj del sistema hasta que el dispositivo reinicie con éxito el oscilador externo que vuelve
a ser la fuente de reloj del sistema. De manera similar a casos anteriores, este módulo está habilitado al cambiar la palabra de
configuración justamente antes de que se inicie el proceso de programar el chip. Esta vez, esto se realiza al seleccionar la opción Fail-
Safe Clock Monitor.

6. Internal/External Oscillator Schitchover

El modo de cambio automático de velocidad de reloj se utiliza para reducir el consumo de corriente cuando el microcontrolador
funciona en modo de reposo.

Cuando se configura en modo LP, XT o HS, el oscilador externo se desactiva al pasar a modo de reposo para reducir el consumo de
corriente total del dispositivo. Cuando se cumplen las condiciones de "despertamiento", el microcontrolador no se pone a funcionar
inmediatamente puesto que tiene que esperar a que se estabilice la frecuencia de señal de reloj. Este tiempo muerto dura
exactamente 1024 pulsos, después de que el microcontrolador continúa con la ejecución del programa. El caso es que se ejecutan
sólo unas pocas instrucciones antes de que el microcontrolador vuelva al modo de reposo.

Eso significa que la mayoría de tiempo así como la mayoría de corriente de baterías se ha perdido en vano. El caso se soluciona
utilizando el oscilador interno para ejecutar el programa durante la duración de 1024 pulsos. Tan pronto como se estabilice la
frecuencia del oscilador externo, él retoma automáticamente "el papel principal". Todo el procedimiento se habilita al poner a uno
el bit de palabra de configuración. Para programar el microcontrolador, es necesario seleccionar la opción Int-Ext Switchover
(conmutación interna/externa) por software.

7. Power-up Timer

Este temporizador emplea el oscilador INTRC como fuente de reloj. Proporciona un retardo fijo de 62 ms durante el encendido. Está
diseñado para mantener al PIC en reset mientras la fuente de alimentación se estabiliza y puede ser habilitado o deshabilitado.

8. Brown-out Reset

El Brown-out Reset es un sistema muy simple que hace que el PIC entre en modo Reset, no hace nada, si la alimentación VCC baja de
un cierto valor que es configurable. Se configura activándolo en el registro correspondiente y seleccionando el nivel de voltaje por
debajo del cual queremos que el PIC permanezca reseteado. Lo suyo es trabajar en conjunción con el Power-up Timer que
debidamente configurado lo que hace es "liberar" el Reset tras un tiempo programado despues de haberse estabilizado el PIC.

Esto es lo que hace; al caer la tensión de alimentación nuestro PIC no esté haciendo cosas erráticas hasta quedarse sin alimentación
para funcionar, como por ejemplo lo que ocurriría si tu programa hace uso extensivo de la EEPROM, metiendo el PIC en un modo
seguro mucho antes de que la caida de tensión provoque un malfuncionamiento. Al volver la tensión nominal y des-resetearse el
PIC, el Power-up Timer espera aún un poco para volver a poner en marcha el PIC, esto es así para asegurarnos que la tensión ha
vuelto de forma estable y no se trata de picos que suben y bajan.

Los modos de configuración de ambos y qué posibilidades tienen hay que mirarlos en el Datasheet de cada micro en particular.

9. Brown-out Reset Voltage

Este fuse es parte del Brown-out Reset.

10. USB Voltege Regulator

Este habilita o deshabilita la utilización del regulador interno del Vbus para el USB.

11. Watchdog Timer

El "Watch Dog Timer" o "Temporizador Perro guardián" lo que hace fundamentalmente es resetear el micro tras un periodo de
tiempo determinado. Su funcionamiento es similar a la Interrupción por Desbordamiento de un Timer, que se produce cuando un
Timer que es incrementado continuamente pasa de su valor máximo al mínimo para comenzar de nuevo a contar.

En el caso del WDT en lugar de saltar una interrupción se genera un reset automático en el momento de producirse dicho
desbordamiento. Pero evidentemente en condiciones normales, nuestro micro funcionando correctamente, no debería producirse
dicho reset automático. Su aplicación es muy util cuando se diseña aplicaciones que dependen de recepción de valores por
comunicación externa.

12. Watchdog Timer Postscale

Selección de bits para la configuracion del Watchdog Timer y para ello debe de habilitar el uso de este.

CCP2 MUX bit

Pertenece al módulo Capture/Compare/PWM.

13. PORTB A/D

Esta función habilita o no la conversión Analogica-Digital. Si uno requiere hacerlo manualmente debe de configurar los registros
ADCON o ANSEL correspondientes en el MCU.

14. Low-Power Timer 1 Oscillator


15. MCLR Pin

Este fuse es para habiltar o no la funcion de Reset Maestro Externo. En ocaciones y como es este el caso, la función de Reset está en
un bit de un puerto que puede ser de I/O funtion. En el 18FX550 está ubicado en el RE3. En ocasiones por cuestiones de uso del
puerto o por ahorro de espacio en placa se desactiva el MCLR y desde este fuse podemos hacerlo.

16. Stack Full/Underflow Reset


17. Low Voltage Program

Este fuse se habilita cuando nuestro MCU pertenece a la familia de los nanoWatt TECHNOLOGY, en su caso si usara un PIC18LF4550.
Ésta familia necesita desde su programación el uso de otros voltajes y consideraciones.

19.Background Debug:

Este fuse es dependiente si habilitamos o usaremos la funcion de In-Circuit Debug.

Los restantes fuses como el Code Protection (Block 0 -3) y los siguientes, tienen la finalidad de proteger nuestro código de lecturas o
escrituras por medio de debugers, esto es útil cuando no deseamos que alguien pueda obtener nuestro código fuente si es que
estamos comercializando el circuito como ejemplo o por otras circunstancias.

Vous aimerez peut-être aussi