En XC8 la configuración se setea mediante un Macro en el archivo "pic.h" y se escribe así "__CONFIG( bitsDeConfiguración )".
Cada línea "__CONFIG" representa una palabra de configuración. Para que funcione correctamente se deben escribir en el orden en el que aparecen en el PIC.
Ejemplo para el PIC16F88:
__CONFIG(MCLRE_ON & CP_OFF & CPD_OFF & LVP_OFF & BOREN_OFF & WDTE_OFF & FOSC_INTOSCIO & PWRTE_OFF); __CONFIG(IESO_OFF & FCMEN_OFF);
Las distintos bytes de configuración se concatenan mediante el caracter "&". Estos van a ser propios de cada pic. Por ejemplo, en la configuración anterior estamos indicando que el pin 4 actuará de Reset cuando no reciba corriente (MCLRE_ON) y utilizará el oscilador interno (FOSC_INTOSCIO).
Si en lugar de querer utilizar el oscilador interno se quisiera utilizar uno externo de 20Mhz la configuración cambiaría a:
__CONFIG(MCLRE_ON & CP_OFF & CPD_OFF & LVP_OFF & BOREN_OFF & WDTE_OFF & FOSC_HS & PWRTE_OFF); __CONFIG(IESO_OFF & FCMEN_OFF);
Como recomendación, estas configuraciones las coloco en un archivo de código separado. Esto me permite poder cambiar las diferentes configuraciones o generar archivos Template para crear nuevos proyectos. Ej.:
"configuration_bits.c".
Aparte de la configuración hay 2 librerías extra que siempre agrego a mis proyectos:
- stdint.h: define los distintos tipos de datos de forma precisa y sin importar la arquitectura del procesador/controlador: Ej.: uint8_t : este tipo define que la variable es un entero de 8 bits sin signo
-stdbool.h: define tipos de datos boolean, por ej.:bool
ej.: bool inputValid = true;
Con la sintaxis anterior, el siguiente código queda más fácil de seguir:
bool inputValid = false; while(!inputValid) { // Leer un valor desde el pin 0 del puerto B if (PORTBbits.RB0) { inputValid = true; } }
Si no utilizamos stdbool.h quedaría así, por ejemplo:
uint8_t inputValid = 0; while(!inputValid) { // Leer un valor desde el pin 0 del puerto B if (PORTBbits.RB0) { inputValid = 1; } }
Saludos,
No hay comentarios:
Publicar un comentario