Guía de introducción de XC8

MPLAB XC8 C es un compilador independiente, optimizado para ISO C90 (popularmente conocido como ANSI C). Es compatible con todos los microcontroladores PIC® de 8 bits: PIC10, PIC12, PIC16 y dispositivos de la serie PIC18, así como el dispositivo PIC14000.
El compilador está disponible para varios sistemas operativos populares. El compilador está disponible en tres modos de funcionamiento: gratuito, estándar o PRO. El estándar y modos de operación PRO son modos con licencia y requieren un número de serie para habilitarlos. El modo gratuito está disponible para clientes sin licencia. El compilador básico, el funcionamiento, los dispositivos compatibles y la memoria disponible son idénticos en todos los modos.
Los modos solo difieren en el nivel de optimización empleado por el compilador.

Este articulo proporciona un punto de partida para los programadores que recién comienzan con
el compilador MPLAB® XC8 C, especialmente aquellos que no están familiarizados con la programación o dispositivos Microchip.

Mientras que el compilador MPLAB XC8 C puede apuntar a cientos de dispositivos PIC de 8 bits, esta guía utiliza el microcontrolador PIC18F87J11 (MCU) con un PIC18 PICDEM Explorer Board.
Sin embargo, la información presentada en este documento se puede usar junto con el compilador XC8 C para crear y compilar el código equivalente para casi cualquier MCU de 8 bits.

Esta guía describe el uso del compilador del MPLAB X Integrated Development (IDE); sin embargo, también puede usarlo desde la línea de comando. Si usted tiene una placa de desarrollo, puede descargar y ejecutar código en su dispositivo. Tú también puede usar el simulador en MPLAB X IDE para confirmar el funcionamiento de su código.

Será guiado a través de la creación de un proyecto que puede construir y ejecutar. El proyecto muestra un LED que está conectado a un pin de puerto. Para lograr esto, las siguientes acciones presentadas deben seguirse:

• Incluya <xc.h> en su (s) archivo (s) fuente.
• Configure los bits de Configuración del dispositivo usando la configuración pragma.
• Desactive cualquier periférico que use el pin (s) utilizado por el puerto.
• Inicialice el registro de dirección de datos del puerto y escriba valores en el pestillo del puerto.
• Use un retraso para asegurarse de que pueda ver los cambios de estado.

La guía asume que tiene el compilador MPLAB X IDE y MPLAB XC8 C instalado y activado (si corresponde) antes de comenzar. También puedes usar una versión de evaluación del compilador, o el compilador que funciona en modo gratuito.
Para obtener asistencia para instalar o activar el compilador, consulte Instalación y licencias
Compiladores MPLAB XC C (DS50002059). El documento se puede descargar desde
Sitio web de Microchip Technology, wwww.microchip.com.

CREACIÓN DE UN PROYECTO EN MPLAB X IDE

Esta sección describe cómo crear un proyecto en MPLAB X IDE usando el MPLAB XC8
Compilador C, solo se deben seguir los pasos otorgados por el asistente de creación de nuevo proyecto.
El proceso se explica en los siguientes pasos:
El paso 1 establece el tipo de proyecto.
El paso 2 selecciona el dispositivo de destino.
El paso 3 selecciona el encabezado del dispositivo.
El paso 4 selecciona la herramienta para ejecutar el código del proyecto.
El paso 5 solo se aplica a algunas selecciones de la herramienta de depuración.
El paso 6 selecciona la herramienta para compilar el código fuente.
El paso 7 especifica el nombre y la ruta del proyecto.
El paso 8 completa la creación del proyecto.

CÓDIGO FUENTE

El código presentado aquí es en realidad un pequeño programa que podría ser la base de todos
sus proyectos MPLAB XC8. Aunque podría interpretarse como trivial, el código es completamente
válido, y compila y ejecuta, según sea necesario.

El proceso de creación de código se explica en los siguientes pasos vinculados:
El paso 1 crea un nuevo archivo fuente.
El paso 2 ingresa un nombre adecuado para el archivo fuente.
El paso 3 agrega código de esqueleto
El paso 4 guarda tu trabajo.


Este código inicial se puede utilizar para comenzar cada proyecto construido con MPLAB XC8. C.
Cada programa C debe tener una, y solo una, función llamada main (); sin embargo, el
prototipo exacto para esta función puede variar de compilador a compilador. Para todos los compiladores MPLAB XC, puede usar el prototipo que se muestra arriba. Como main () devuelve un int, debe haber una declaración de devolución con un valor de retorno especificado. El valor 0 indica que ese main () regresó exitosamente.
La inclusión del archivo de encabezado, <xc.h>, permite que el código en este archivo fuente tenga acceso al compilador o características específicas del dispositivo. Dado que tal acceso es común, necesitará incluirlo en prácticamente todos sus archivos de origen.

Como se mencionó anteriormente, el nuevo programa es un programa C válido. Esto significa que puede ser compilado.
MPLAB X IDE sabe qué compilador ejecutar al construir su código fuente, pero las opciones se pueden usar para alterar cómo funciona el compilador. Las opciones predeterminadas son aceptables para la mayoría de los proyectos. Si necesita ajustar las opciones del compilador, puede hacerlo desde el cuadro de diálogo Propiedades del proyecto. Abra este diálogo usando el botón superior a la izquierda en tablero del proyecto. Desde este diálogo también puede cambiar otras atributos del proyecto, como el dispositivo o compilador asociado a su proyecto.

ESPECIFICACIÓN DE BITS DE CONFIGURACIÓN DE DISPOSITIVOS

Aunque el nuevo programa es un programa C válido, es poco probable que se ejecute correctamente en el dispositivo. Todos los dispositivos Microchip PIC de 8 bits deben configurarse para garantizar la correcta operación. Algunas configuraciones afectan el funcionamiento fundamental del dispositivo, como aquellos para el reloj de instrucciones. Si esa configuración es incorrecta, es posible que el reloj no se ejecute.
Las opciones de configuración se especifican mediante bits especiales en el dispositivo. El MPLAB XC8 C Compiler utiliza pragmas que le permiten especificar la configuración del bit de configuración en su código. Los valores derivados de estos pragmas se fusionan con los compilados en la imagen binaria de su proyecto y se descarga a su dispositivo.
La cantidad y el tipo de configuración varían de un dispositivo a otro. Consulta la Hoja de datos para la MCU que está utilizando para conocer qué controla cada configuración. En este caso, el dispositivo es un PIC18F87J11, la hoja de datos es PIC18F87J11(DS39778), y puede descargarse de www.microchip.com.
La forma más fácil de completar los pragmas que se necesitan para configurar su dispositivo es usando la Ventana de Bits de Configuración, una característica de MPLAB X IDE. Los siguientes pasos describen cómo usar la ventana para obtener la información para completar los pragmas.

Seleccione Ventana> Vistas de memoria PIC> Bits de configuración en los menús. La ventana,
similar a la que se muestra en la Figura, enumera información relacionada con Ubicaciones y valores de bit de configuración.


Las columnas Nombre y Campo te ayudarán a encontrar la configuración equivalente en la ficha de datos del dispositivo.
La columna Categoría describe lo que controla la configuración.
La columna Configuración muestra el estado actual de esa configuración.

Presta especial atención a la siguiente configuración, que seguramente causará que el tiempo de ejecución falle si no están especificados correctamente:

Sección del oscilador
Esto debe coincidir con el de los circuitos del oscilador de su hardware. Si esto no es correcto,
el reloj del dispositivo puede no funcionar. Si está utilizando el simulador como una herramienta de depuración, esta configuración puede ser ignorada. Por lo general, las placas de desarrollo utilizan osciladores de cristal de alta velocidad.

Temporizador de vigilancia
Se recomienda que deshabilite este temporizador hasta que sea necesario. Esto previene restablecimientos inesperados.

Código de protección
Desactive la protección del código, hasta que se requiera. Esto asegura que el dispositivo esté completamente accesible.

Conjunto de instrucciones extendido
Esta configuración de PIC18 debe estar deshabilitada. El compilador MPLAB XC8 C no soporta este conjunto de instrucciones.
Cambie la configuración haciendo clic en la línea correspondiente en la columna Configuración y
eligiendo configuración apropiada en la lista desplegable.

Haga clic en el botón Generar código fuente para salir. El código generado aparecerá en la ventana de Fuente de Bits de Configuración.

Copia el código de esta ventana a un archivo de origen de su elección.
No es un código ejecutable y debe colocarse fuera de las definiciones de funciones. El código
ha sido copiado al archivo main.c (se omiten los comentarios para mayor claridad), como se muestra a continuación.


ACCEDER A LOS REGISTROS DE DISPOSITIVOS

El código que se compiló en la sección anterior todavía no tiene función de tiempo de ejecución. Es
tiempo para configurar el dispositivo para realizar una tarea. Esta sección explica cómo acceder al
los registros de función especial (SFR) del dispositivo y enciender un LED conectado a un puerto.
El siguiente código establece la dirección de datos para el puerto D, luego escribe un valor para ese puerto


En este código, se usan identificadores especiales para representar los SFR. Estos identificadores son asociados con variables que se definen mediante la inclusión de <xc.h>. Ellos pueden ser
usados como cualquier otra variable C, pero a cada uno se le asigna una dirección que los mapea
sobre el registro que representan. Tenga en cuenta que escribir en estas variables escribe en el registro, y en consecuencia podría cambiar el estado del dispositivo. Simplemente el acto de leer
estas variables podrían, en ocasiones, afectar el dispositivo.
Los identificadores mencionados anteriormente son los mismos que los nombres de los registros que representan, como se especifica en la hoja de datos del dispositivo. Sin embargo, eso puede no ser siempre el caso, particularmente con los identificadores que representan bits dentro de los SFR.
Para saber qué nombres usar al acceder a los SFR en el dispositivo, siga estos pasos para encontrar los nombres de registro utilizados para cualquier dispositivo.

El paso 1 crea un archivo fuente que incluye <xc.h>.
El paso 2 verifica la adecuación del dispositivo, crea el código y verifica si hay errores.
El paso 3 examina el archivo preprocesado producido por el compilador en el paso 2.

Es importante tener en cuenta que este archivo preprocesado es un archivo intermedio, cualquier
los cambios que realice se perderán la próxima vez que construya.

DESACTIVAR PERIFÉRICOS QUE COMPARTAN PINES DE PUERTO

Esta sección describe el código adicional que se debe agregar al proyecto de muestra para
asegurarse de que el valor almacenado en el pestillo del puerto se presente en los pines del dispositivo. El no incluir este código es una razón común por la que muchos programas sencillos de inicio no funcionan como se esperaba.
Los dispositivos Microchip PIC de 8 bits tienen una gran cantidad de periféricos a bordo, pero un
número limitado de pines. Las líneas IO de muchos periféricos pueden compartir el mismo pin.
Pero, solo un periférico puede usar un pin en cualquier momento dado.
Los puertos IO digitales se tratan igual que cualquier otro periférico, a menos que se trate de un puerto de uso asignado de un pin, no está conectado al mundo exterior. En muchos casos, por defecto, los puertos no están conectados a los pines.
Para saber qué periféricos comparten un pin, consulte la hoja de datos del dispositivo. Los diagramas de pin proporcionan una referencia rápida, pero muchas hojas de datos del dispositivo PIC tienen una sección que explica el uso asociado con cada pin.
Utilice los siguientes pasos para determinar qué periféricos pueden necesitar inicializarse para que
el puerto se conecte a los pines del puerto.

El paso 1 localiza la Descripción de E / S  o una tabla similar en la hoja de datos del dispositivo.
El paso 2 se enfoca en el primer periférico alternativo listado en la tabla.
El paso 3 determina qué escribir en los SFR para desactivar el periférico.
El paso 4 repite este proceso para cualquier otro periférico enumerado en la tabla del paso 1.


IMPLEMENTACIÓN DE UN BUCLE PRINCIPAL

Tal como está, el sencillo programa de prueba que ejecutamos en la sección previa ejecuta un par
de declaraciones luego termina. Después de que la ejecución llegue al final de main (),salta de vuelta al vector Restablecer. El dispositivo luego ejecuta la función main () nuevamente. Estos resets suaves no son deseables. En esta sección, se introducen otras características del compilador. Aprenderás cómo cambiar el programa para que escriba diferentes valores en los LED, y cómo ajustar main () para que nunca termine.
En el siguiente código, evitamos que main () termine al agregar un bucle infinito.
Dentro de este ciclo asignamos el valor de un contador (portValue) al pestillo del puerto y
incremente este contador para que el valor del puerto cambie con el tiempo. Una rutina de demora también es agregada para que se puedan ver los estados individuales de los LED.


Construye y ejecuta este código. Si está utilizando hardware, asegúrese de que los LED conectados al puerto cuentan los valores binarios de 0 a 0xFF.
Tenga en cuenta que el puerto en sí no se incrementó. Usando un registro de puerto en tales expresiones puede desencadenar problemas de lectura, modificación y escritura. Usa siempre una variable para mantener el valor que deseas en el puerto a asumir. Modifique esta variable según sea necesario, luego asigne el valor de esta variable al puerto o puerto de cierre.
La rutina de retardo utilizada aquí (observe el carácter de guion bajo) es en realidad una función incorporada del compilador, pero puede encontrar ayuda para esto y las funciones de la biblioteca de compilación en los apéndices de la Guía del usuario del compilador MPLAB XC8 C.
Sin el retraso, los LED parpadearían tan rápido que parecerían estar apenas iluminados. Es posible que deba ajustar la longitud de retardo para adaptarse a la frecuencia de reloj de su dispositivo.

CONCLUSIÓN


Usando los conceptos y métodos básicos presentados en esta guía, podrá escribir programas bastante avanzados para un dispositivo PIC de 8 bits. Podrás configurar el dispositivo correctamente, determinar los nombres de todos los SFR y los bits SFR utilizados por su dispositivo.
Además, puede hacer que los periféricos del dispositivo activen interrupciones y tengan su código
para responder a estos eventos.
Es importante estar familiarizado con el lenguaje estándar C89 ANSI C implementado por
este compilador, La Guía del usuario del compilador MPLAB XC8 C (DS50002053) tiene más
información detallada sobre el funcionamiento del compilador y la sintaxis no estándar. Esta
documento se puede encontrar en el directorio de DOCS del directorio de instalación del compilador. Eso también se puede acceder haciendo clic en el botón de Ayuda del compilador (el botón azul "?" en la parte inferior de la fila vertical de botones en el tablero.

Fuente: MPLAB XC8 Getting Started Guide.

Comentarios

Entradas más populares de este blog

Resistencias

Prefijos del sistema internacional de medidas