You are on page 1of 13

PLL Prescaler Selection bits:

PLLDIV = 1 No prescale (4 MHz oscillator input drives PLL directly)


PLLDIV = 2 Divide by 2 (8 MHz oscillator input)
PLLDIV = 3 Divide by 3 (12 MHz oscillator input)
PLLDIV = 4 Divide by 4 (16 MHz oscillator input)
PLLDIV = 5 Divide by 5 (20 MHz oscillator input)
PLLDIV = 6 Divide by 6 (24 MHz oscillator input)
PLLDIV = 10 Divide by 10 (40 MHz oscillator input)
PLLDIV = 12 Divide by 12 (48 MHz oscillator input)
System Clock Postscaler Selection bits:
CPUDIV = OSC1_PLL2 [Primary Oscillator Src: /1][96 MHz PLL Src: /2]
CPUDIV = OSC2_PLL3 [Primary Oscillator Src: /2][96 MHz PLL Src: /3]
CPUDIV = OSC3_PLL4 [Primary Oscillator Src: /3][96 MHz PLL Src: /4]
CPUDIV = OSC4_PLL6 [Primary Oscillator Src: /4][96 MHz PLL Src: /6]
USB Clock Selection bit (used in Full-Speed USB mode only; UCFG:FSEN =
1):
USBDIV =
1
USB clock source comes directly from the primary oscillator block
with no postscale
USBDIV =
2
USB clock source comes from the 96 MHz PLL divided by 2
Oscillator Selection bits:
FOSC = XT_XT XT oscillator (XT)
FOSC = XTPLL_XT XT oscillator, PLL enabled (XTPLL)
FOSC = ECIO_EC EC oscillator, port function on RA6 (ECIO)
FOSC = EC_EC EC oscillator, CLKO function on RA6 (EC)
FOSC =
ECPLLIO_EC
EC oscillator, PLL enabled, port function on RA6 (ECPIO)
FOSC = ECPLL_EC
EC oscillator, PLL enabled, CLKO function on RA6
(ECPLL)
FOSC =
INTOSCIO_EC
Internal oscillator, port function on RA6, EC used by USB
(INTIO)
FOSC = INTOSC_EC
Internal oscillator, CLKO function on RA6, EC used by
USB (INTCKO)
FOSC = INTOSC_XT Internal oscillator, XT used by USB (INTXT)
FOSC = INTOSC_HS Internal oscillator, HS oscillator used by USB (INTHS)
FOSC = HS HS oscillator (HS)
FOSC = HSPLL_HS HS oscillator, PLL enabled (HSPLL)
Fail-Safe Clock Monitor Enable bit:
FCMEN = OFF Fail-Safe Clock Monitor disabled
FCMEN = ON Fail-Safe Clock Monitor enabled
Internal/External Oscillator Switchover bit:
IESO = OFF Oscillator Switchover mode disabled
IESO = ON Oscillator Switchover mode enabled
Power-up Timer Enable bit:
PWRT = ON PWRT enabled
PWRT = OFF PWRT disabled
Brown-out Reset Enable bits:
BOR = OFF Brown-out Reset disabled in hardware and software
BOR = SOFT
Brown-out Reset enabled and controlled by software (SBOREN
is enabled)
BOR =
ON_ACTIVE
Brown-out Reset enabled in hardware only and disabled in
Sleep mode (SBOREN is disabled)
BOR = ON
Brown-out Reset enabled in hardware only (SBOREN is
disabled)
Brown-out Reset Voltage bits:
BORV = 46 4.6V
BORV = 43 4.3V
BORV = 28 2.8V
BORV = 21 2.1V
USB Voltage Regulator Enable bit:
VREGEN = OFF USB voltage regulator disabled
VREGEN = ON USB voltage regulator enabled
Watchdog Timer Enable bit:
WDT = OFF WDT disabled (control is placed on the SWDTEN bit)
WDT = ON WDT enabled
Watchdog Timer Postscale Select bits:
WDTPS = 1 1:1
WDTPS = 2 1:2
WDTPS = 4 1:4
WDTPS = 8 1:8
WDTPS = 16 1:16
WDTPS = 32 1:32
WDTPS = 64 1:64
WDTPS = 128 1:128
WDTPS = 256 1:256
WDTPS = 512 1:512
WDTPS = 1024 1:1024
WDTPS = 2048 1:2048
WDTPS = 4096 1:4096
WDTPS = 8192 1:8192
WDTPS = 16384 1:16384
WDTPS = 32768 1:32768
PORTB A/D Enable bit:
PBADEN = PORTB<4:0> pins are configured as digital I/O on Reset
OFF
PBADEN = ON
PORTB<4:0> pins are configured as analog input channels on
Reset
Low-Power Timer 1 Oscillator Enable bit:
LPT1OSC = OFF Timer1 configured for higher power operation
LPT1OSC = ON Timer1 configured for low-power operation
MCLR Pin Enable bit:
MCLRE = OFF RE3 input pin enabled; MCLR pin disabled
MCLRE = ON MCLR pin enabled; RE3 input pin disabled
Stack Full/Underflow Reset Enable bit:
STVREN = OFF Stack full/underflow will not cause Reset
STVREN = ON Stack full/underflow will cause Reset
Single-Supply ICSP Enable bit:
LVP = OFF Single-Supply ICSP disabled
LVP = ON Single-Supply ICSP enabled
Boot Block Size Select bit:
BBSIZ = BB1K 1KW Boot block size
BBSIZ = BB2K 2KW Boot block size
Dedicated In-Circuit Debug/Programming Port (ICPORT) Enable bit:
ICPRT = OFF ICPORT disabled
ICPRT = ON ICPORT enabled
Extended Instruction Set Enable bit:
XINST =
OFF
Instruction set extension and Indexed Addressing mode disabled
(Legacy mode)
XINST =
ON
Instruction set extension and Indexed Addressing mode enabled
Code Protection bit:
CP0 = ON Block 0 (000800-001FFFh) or (001000-001FFFh) is code-protected
CP0 =
OFF
Block 0 (000800-001FFFh) or (001000-001FFFh) is not code-
protected
Code Protection bit:
CP1 = ON Block 1 (002000-003FFFh) is code-protected
CP1 = OFF Block 1 (002000-003FFFh) is not code-protected
Boot Block Code Protection bit:
CPB = ON
Boot block (000000-0007FFh) or (000000-000FFFh) is code-
protected
CPB =
OFF
Boot block (000000-0007FFh) or (000000-000FFFh) is not code-
protected
Write Protection bit:
WRT0 = ON Block 0 (000800-001FFFh) or (001000-001FFFh) is write-protected
WRT0 =
OFF
Block 0 (000800-001FFFh) or (001000-001FFFh) is not write-
protected
Write Protection bit:
WRT1 = ON Block 1 (002000-003FFFh) is write-protected
WRT1 = OFF Block 1 (002000-003FFFh) is not write-protected
Configuration Register Write Protection bit:
WRTC = ON Configuration registers (300000-3000FFh) are write-protected
WRTC = OFF Configuration registers (300000-3000FFh) are not write-protected
Boot Block Write Protection bit:
WRTB = ON
Boot block (000000-0007FFh) or (000000-000FFFh) is write-
protected
WRTB =
OFF
Boot block (000000-0007FFh) or (000000-000FFFh) is not write-
protected
Table Read Protection bit:
EBTR0 = Block 0 (000800-001FFFh) or (001000-001FFFh) is protected from
ON table reads executed in other blocks
EBTR0 =
OFF
Block 0 (000800-001FFFh) or (001000-001FFFh) is not protected
from table reads executed in other blocks
Table Read Protection bit:
EBTR1 =
ON
Block 1 (002000-003FFFh) is protected from table reads executed in
other blocks
EBTR1 =
OFF
Block 1 (002000-003FFFh) is not protected from table reads
executed in other blocks
Boot Block Table Read Protection bit:
EBTRB =
ON
Boot block (000000-0007FFh) or (000000-000FFFh) is protected from
table reads executed in other blocks
EBTRB =
OFF
Boot block (000000-0007FFh) or (000000-000FFFh) is not protected
from table reads executed in other blocks


PLL Prescaler Selection:

La funcin 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 configuracin 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 funcin 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 configuracin 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 seal entra alPLL Postcaler que con su divisin 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.


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 divisin de frecuencia tanto de la seal de entrada de
96 MHz o del cristal u oscilador de entrada.

Veamos la configuracin con el 96 MHz PLL:

Dado que en la aparte de PLL Prescaler Selection tuvimos obligatoriamente que
configurar la divisin 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 seal de 48 MHz de
reloj. La segunda podramos 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 seal de hasta 48 MHz este es nuestro
registro a configurar.

Configuracin para el Oscilador Source:

Este mismo Fuse tiene un efecto en su momento en nuestra Fuente de Oscilacin
y es que podemos dividirla tambin, 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 configuracin;

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

Estamos diciendo que no habr divisin ya que 8 MHz entre /1 es 8. Caso
diferente si nosotros escogemos la siguiente configuracin.

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

Aqu nosotros estaramos obteniendo 2.67 MHz (8/3 = 2.67).


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 divisin 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 sern proporcionados desde el oscilador primario.


Oscillator Selection:

Aqu se escoge el tipo de oscilador que se usara, para mayor informacin leer la
seccin 2.2 Oscillator Types del datasheet.

Sin embargo a causa de las explicacin de los 3 fuses anteriores me tomare el
tiempo de explicar 2 opciones. Ntese 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 debern escoger esa
configuracin.

Osciladores a mayores frecuencias son del tipo HS.

Ntese que este fuse de seleccin del tipo de Oscilador esta ligado a los primeros
3, ya que al elegir la opcin 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 divisin
obtendremos 48,32,24,16 MHz. Caso contrario es que si solo seleccionamos HS
oscillator (HS) estamos deshabilitando la opcin del Postscaler y el fuse System
Clock Postscaler Selectionsolo nos da la opcin 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.


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 ejecucin de programa en caso de
que el oscilador falle por alguna razn. En tal caso, el oscilador interno toma su
funcin.

El monitor detecta un fallo al comparar las fuentes de reloj interno y externo. Si los
pulsos del oscilador externo tardan ms de 2mS en llegar, la fuente de reloj ser
automticamente 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 interrupcin.

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 mdulo est habilitado al
cambiar la palabra de configuracin justamente antes de que se inicie el proceso
de programar el chip. Esta vez, esto se realiza al seleccionar la opcin Fail-Safe
Clock Monitor.


Internal/External Oscillator Schitchover

El modo de cambio automtico de velocidad de reloj se utiliza para reducir el
consumo de corriente cuando el microcontrolador funciona en modo de reposo.
De qu se trata todo esto?.

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 seal de reloj. Este tiempo muerto dura exactamente
1024 pulsos, despus de que el microcontrolador contina con la ejecucin del
programa. El caso es que se ejecutan slo unas pocas instrucciones antes de que
el microcontrolador vuelva al modo de reposo.

Eso significa que la mayora de tiempo as como la mayora de corriente de
bateras se ha perdido en vano. El caso se soluciona utilizando el oscilador interno
para ejecutar el programa durante la duracin de 1024 pulsos. Tan pronto como se
estabilice la frecuencia del oscilador externo, l retoma automticamente "el papel
principal". Todo el procedimiento se habilita al poner a uno el bit de palabra de
configuracin. Para programar el microcontrolador, es necesario seleccionar la
opcin Int-Ext Switchover (conmutacin interna/externa) por software.


Power-up Timer

Este temporizador emplea el oscilador INTRC como fuente de reloj. Proporciona
un retardo fijo de 62 ms durante el encendido. Esta diseado para mantener al PIC
en reset mientras la fuente de alimentacion se estabiliza y puede ser habilitado o
deshabilitado (leer el registro necesario en la documentacion de cada MCU).

Para el 18F4550 leer 4.5.1 de la hoja de datos.


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 alimentacin VCC baja de un cierto valor que es
configurable. Se configura activndolo 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 conjuncin 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 tensin de alimentacin nuestro PIC no est
haciendo cosas errticas hasta quedarse sin alimentacin para funcionar, como
por ejemplo lo que ocurrira si tu programa hace uso extensivo de la EEPROM,
metiendo el PIC en un modo seguro mucho antes de que la caida de tensin
provoque un malfuncionamiento. Al volver la tensin nominal y des-resetearse el
PIC, el Power-up Timer espera an un poco para volver a poner en marcha el
PIC, esto es as para asegurarnos que la tensin ha vuelto de forma estable y no
se trata de picos que suben y bajan.

Los modos de configuracin de ambos y qu posibilidades tienen hay que mirarlos
en el Datasheet de cada micro en particular.


Brown-out Reset Voltage

Este fuse es parte del Brown-out Reset, para saber mas sobre su configuracin ir
al Register 23-3 y a la seccin 28.1 de la hoja de datos.


USB Voltege Regulator

Este habilita o deshabilita la utilizacion del regulador interno del Vbus para el
USB. Ver 17.2.2.8 para mayor detalle.


Watchdog Timer

El "Watch Dog Timer" o "Temporizador Perro guardin" lo que hace
fundamentalmente es resetear el micro tras un periodo de tiempo determinado. Su
funcionamiento es similar a la Interrupcin por Desbordamiento de un Timer, que
se produce cuando un Timer que es incrementado continuamente pasa de su valor
mximo al mnimo para comenzar de nuevo a contar.

En el caso del WDT en lugar de saltar una interrupcin se genera un reset
automtico en el momento de producirse dicho desbordamiento. Pero
evidentemente en condiciones normales, nuestro micro funcionando
correctamente, no debera producirse dicho reset automtico. Su aplicacin es
muy util cuando se disea aplicaciones que dependen de recepcion de valores por
comunicacin externa.

Watchdog Timer Postscale:

Seleccin de bits para la configuracion del Watchdog Timer y para ello debe de
habilitar el uso de este. Mas informacion ir al apartado 25.2 de la hoja de datos.


CCP2 MUX bit:

Pertenece al modulo Capture/Compare/PWM. Mas informacion leer la seccin
15.1.2.


PORTB A/D:

Esta funcion habilita o no la conversion Analogica-Digital. Si uno requiere hacerlo
manualmente debe de configurar los registros ADCON o ANSEL correspondientes
en el MCU. Mas informacion leer laseccin 21.0 de la hoja de datos que trata de
la conversion A/D.


Low-Power Timer 1 Oscillator:

El detalle de su funcionamiento esta en la Seccin 12.3.2.


MCLR Pin:

Este fuse es para habiltar o no la funcion de Reset Maestro Externo. En ocaciones
y como es este el caso, la funcion de Reset esta en un bit de un puerto que puede
ser de I/O funtion. En el 18FX550 esta 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. Mas informacion seccin 4.2.

Stack Full/Underflow Reset:

Vea la seccin 4.0, 5.1.2.2 y 5.1.2.4.


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 programacin el uso de otros voltajes y consideraciones.


Dedicated In-Circuit Debug/Programming Port (ICPORT):

Mas informacion seccin 25.7.


Extended Instruction Set:

En el caso del C para PC s ha sido siempre un tema de discusin, una y otra vez
escuchamos que los PIC no son aptos para ser programados en C, escuchamos
muchas veces que lo mejor que existe para micros en general es assembler, y si,
hace diez aos eso era verdad!!!! Por ejemplo la serie 16xx de PIC no es
adecuada para ser programada en C, su CPU no est optimizada para eso y unas
pocas lneas de cdigo agotar su memoria (nuevos MCU de la familia 16F
empiezan a salir optimizados) sin embargo a partir de la serie 18 de PC s lo
primero que leemos en su manual es:

C Compiler Optimized Architecture, Optional extended instruction set designed to
optimize re-entrant code.

Su CPU est preparada para ser programada en C y es una opcin programarlos
en assembler (lo cual me lleva a pensar como seria programar una aplicacin
USB, o la simple accin de tomar cincuenta muestras en un canal analgico y
promediarlas, un verdadero dolor de cabeza).

Recomiendo leer mas sobre este tema en la seccin 26.0, 26.2 y el siguiente link
de la pagina de
mikroElektronika. http://www.mikroe.com/forum/viewtopic.php?t=1859.


Background Debug:

Este fuse es dependiente si habilitamos o usaremos la funcion de In-Circuit
Debug. Ver registro 25-6de la hoja de datos.

Los restantes fuses como el Code Protection (Block 0 -3) y los siguientes, tienen la
finalidad de proteger nuestro codigo de lecturas o escrituras por medio de
debugers, esto es util cuando no deseamos que alguien pueda obtener nuestro
codigo fuente si es que estamos comercializando el circuito como ejemplo o por
otras circunstancias. Ver registro 25-6 de la hoja de datos.

You might also like