domingo, 18 de marzo de 2012

Palabras de configuración de los PIC

Cuando vamos a usar un PIC que no conocemos, muchas dudas es que no sabemos con certeza las palabras de configuración de los PIC. La realidad es que si usamos el MPLAB v8 o el MPLAB X te vienen ya incluido, sólo hay que buscarlos.



Los PICs que más me preguntan los visitantes son esta pequeña lista.

PIC12F508A
__CONFIG   _CP_OFF & _WDT_ON & _MCLRE_ON & _ExtRC_OSC

PIC12F629
__CONFIG   _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT

PIC16F84A
__CONFIG   _CP_OFF & _WDT_ON & _PWRTE_ON & _RC_OSC
 
PIC16F628A
__CONFIG   _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT

PIC16F88
__CONFIG    _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _INTRC_IO
     __CONFIG    _CONFIG2, _IESO_OFF & _FCMEN_OFF

PIC16F886
__CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
 __CONFIG    _CONFIG2, _WRT_OFF & _BOR21V

PIC16F887
__CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
    __CONFIG    _CONFIG2, _WRT_OFF & _BOR21V

PIC16F1827
__CONFIG _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_OFF & _MCLRE_ON & _CP_OFF & _CPD_OFF & _BOREN_OFF & _CLKOUTEN_ON & _IESO_OFF & _FCMEN_OFF
    __CONFIG _CONFIG2, _WRT_OFF & _PLLEN_OFF & _STVREN_OFF & _BORV_19 & _LVP_OFF

PIC18F2550
CONFIG    FOSC = XT_XT (En realidad es una gran lista. En el MPLAB v8, puedes verlos en la barra de herramientas arriba, Configure-->Configuration Bits).

PIC18F4550
CONFIG    FOSC = XT_XT (Lo mismo arriba).

Hay visitantes que no tienen instalado el MPLAB en este momento, así, este documento les puede ayudar y ahorrar tiempo.

La ubicación se encuentra en este directorio:
C:\Archivos de programa\Microchip\MPASM Suite\Template\Code


Si quieres encontrar donde están los templates, por ejemplo, del PIC16F88, encuentras el archivo llamado 16F88TEMP.ASM y lo abres.

Puede dar el caso que quieras cambiar la configuración del oscilador interno al exteno y que sea del cuarzo. Un ejemplo abajo.

LIST P=16F88 ; Procesador.
#INCLUDE ; Definición de los operandos utilizados.

__CONFIG _CONFIG1, _CP_OFF & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC

; _CP_OFF: Protección de código DESACTIVADO.
; _DEBUG_OFF: Debug en circuito DESACTIVADO.
; _WRT_PROTECT_OFF: Protección a escritura en memoria de programa DESACTIVADO.
; _CPD_OFF: Protección de código de datos DESACTIVADO.
; _LVP_OFF: Programación en baja tensión DESACTIVADO.
; _BODEN_OFF: Reset por Brown-out DESACTIVADO.
; _MCLRE_ON: Reset por pin externo ACTIVADO.
; _PWRTE_ON: Retraso al reset ACTIVADO.
; _WDT_OFF: Watchdog DESACTIVADO.
; _XT_OSC: Oscilador externo del tipo XT.

__CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF

; _IESO_OFF: Modo de intercambio de externo a interno DESACTIVADO.
; _FCMEN_OFF: Monitor de CLK DESACTIVADO.



Hay que encontrar las directivas del PIC16F88 que está en la ubicación:
C:\Archivos de programa\Microchip\MPASM Suite

 
El archivo se llama P16F88.INC y lo abrimos para localizar la palabra de configuración del oscilador externo de cuarzo.

Si abriste el archivo P16F88.INC con el notepad de Windows, pulsa "Control B" y busca "CONFIG1 Options", de todas las configuraciones que hay, se usa el _XT_OSC, por ejemplo el oscilador XT a 4MHz o el 20MHz.

Puedes simplificar el __CONFIG sólo introduciendo hexadecimales en vez de los textos aunque resulte más engorroso de interpretar. Cuando lo tengas configurados la configuración de Bits en el MPLAB, lo miras y apuntas.

Ejemplo 1:

    LIST        P=16F88
    INCLUDE       
        __CONFIG    _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC
        __CONFIG    _CONFIG2, _IESO_OFF & _FCMEN_OFF


Ejemplo 2:

    LIST        P=16F88
    INCLUDE       
        __CONFIG    _CONFIG1, 0x3F21
        __CONFIG    _CONFIG2, 0x3FFC 


Los dos ejemplos son exactamente lo mismo, sólo que te ahorra tiempo y espacio en escribirlo, aún así, es más aconsejable, legible y recomendable el primer ejemplo. Puedes buscar más información en las ayudas del MPLAB escribiendo __config.

NOTA:

No olvidar que "_ _ CONFIG" tiene dos guiones bajo, no uno. Se escribe así __CONFIG. Es importante tenerlo encuenta ya que los primeros programas puedes poner solo uno guión bajo y es un error frecuente.

Autor: Ángel Acaymo M.G.

17 comentarios:

Natalia dijo...

Hola, todo ok lo que explicas, ahora a mi me surgio lo siguiente.

Teniendo un hex para un proyecto, quise cambiarle la configuración de osc externo a osc interno.

La cuestión que el pickit me decia cual era la palabra de configuración. Entonces la busqué en el hexadecimal con el word pad. Pero nunca la encontré ...

Cuando se pone la configuration word por programa, ¿donde demonios va a parar esta? muchas gracias.

Si es posible contestame a andrespirolo@hotmail.com xq no se si esto me avisa que me contestas. ¿das clases particulares? saludos.

Meta dijo...

Hola:

Antes de grabar el PIC con un programa, el que dispona, puedes modificar su configuración en él. No hace falta tocar el hex para nada.

Un cordial saludo.

Edwin Ardila dijo...

Cordial Saludo. Ing Exclente su documentacion acerca de como son los __CONFIG en los Pics, me puede colaborar como le digo al PIC 16F648A que va a trabajar con un cristal externo de 16MHz. si Le es posible me puede contestar a: abc.electronica@yahoo.com
Gracias por su atencion.

Meta dijo...

Buenas:

Simplemente usas un oscilador externo de cuarzo de 16 Mhz, luego configuras en HS en la palabra de configuración.

Desde 4 MHz hasta los 20 MHz se cibfigura como HS. Si usas solo 4 MHz te vale XT y HS.

Un saludo.

abe_af dijo...

Hola, alguien sabe como podria obtener la Fosc a la que esta operando el microcontrolador, tal vez con alguna funcion o directiva? La finalidad es poder escribir un programa que pueda ajustar timers y prescaladores, postcalers en funcion de Fosc, es decir, independientemente de la configuracion del oscilador el programa debe conocer el valor de Fosc.

Meta dijo...

Respuesta por un usuario de foros de electrónica.

http://www.forosdeelectronica.com/f24/obtener-fosc-microcontrolador-108430/#post863239

Suerte.

Richard Alonso dijo...

hola me gustaria saber que fuses tengo que marcar y cuales no en el pic PIC 16F690,hago los programas en simulacion y andan de lujo,la cosa tambien es que programo en basic no se que marcar en el programa para que indique lo q quiero en lcd,por ejemplo para el 16f659 pongo CMCON=7 Y CON ESO MUESTRA CARACTERES EN LCD,SI NO LO PONGO NO MUESTRA NADA, mi correo es serviceelectronica@hotmail.com gracias

Richard Alonso dijo...

perdon el pic puse 659 era el 16f628a

Meta dijo...

Muy buenas Ricardo:

La configuración depende de lo que quieras. Antes que nada, en la hija de datos te dice que es y para qué es.

En caunto al LCD, no tiene nada que ver.

Un saludo.

Richard Alonso dijo...

muchas gracias,podras indicarme que fuses marcar,solo para un programa comun,como si hiciera un programa para que encienda algun led con el PIC 16F690,a la hora de cargar ese pic no me doy cuenta cuales fuses marcar,te estaria muy agradaceido,saludos desde uruguay

Meta dijo...

Hi:

Lo de marcar, más bien configurar, depende de lo que quieras.

¿Usas oscilador interno o externo?
Ahí es lo que tienes que congifugrar.

¿Qué PIC exactamente es el que quieres?

M enombra uno diferente cada rato. ;)

Si no toca la configuraciçon, quedará por defecto.

Por cierto, más delante subiré este documento, mejorado y actualizado tanto para pdf como xps para su fácil exportación.

Saludos.

Carlos Bermudez dijo...

Muchisimas gracias por la informacion, saludos!

Meta dijo...

De nada. Me alegro que te haya servido. ;)

Pancho Pérez dijo...

me pueden ayudar.

necesito ocupar un oscilador externo de 32 MHz para una pic 16f887, ocupare el timer1 y los pines osc1 y osc2. cómo lo configuro

Meta dijo...

Hola:

El PIC16F887 soporta hasta 20 MHz.

Hoja de datos del PIC16F887:
http://ww1.microchip.com/downloads/en/DeviceDoc/41291G.pdf

Con el PIC18F4550 de los mismos pines a 48 MHz con la configuración.

Hoja de Datos:
http://ww1.microchip.com/downloads/en/DeviceDoc/39632e.pdf

Más detalles:
http://www.forosdeelectronica.com/f24/pic-soporte-mas-40-mhz-44093/#post368000

El PIC16F887 se le puede dopar a 22 MHz pero se recalienta un poco y es estable, si te pasas puede que se queme. Puedes aumentar un poco más con un ventilador y disipador, si te pasas, será inestable. No es la mejor opción.

Hay PIC32 entre 80 MHz y 200 MHz a parte de ello, también con encapsulados tipo DIP40.

Saludos.

John Ramos dijo...

Ayudame para hacer un ascensor con el 16f1827 gracias johnjrg11@gmail.com ayudame bro

Meta dijo...

Hola John Raqmos:

Aquí te lo explican.
http://electronica-pic.blogspot.com.es/2010/11/ascensor-de-5-plantas.html

Saludos.