Blog

November 6, 2017

Tutoriales PIC32MM0064GPL028 – Hola mundo PIC32MM –

Este proyecto muestra la implementación del primer programa de prueba para un microcontrolador de la familia PIC32MM. Se basa en el proyecto implementado en la página web https://www.codeproject.com/Articles/1198462/King-MM-The-joys-of-a-Harmony-less-life-Part-PIC-M en el cual, el autor muestra un programa de ejemplo blink para este microcontrolador. Adicionalmente se ha modificado este proyecto para poder utilizar el retardo necesario para el blink a partir de una macro #define, siendo este un retardo en lenguaje ASM o lenguaje C, y con ello apreciar las mayores diferencias de estos dos lenguajes en cuanto a eficiencia y exactitud.

Creación del proyecto

El primer paso es la creación del proyecto. Para este caso se utilizó el programa MPLABX IDE v3.65 con el compilador XC32 v4.44. Lo primero es crear el proyecto. Para esto damos click en el icono  , el cual nos abrirá una ventana para la creación del proyecto paso a paso. Después de escoger el proyecto como proyecto estándar (Microchip Embedded -> Standalone Project) seleccionamos el dispositivo a utilizar (para este caso PIC32MM0064GPL028).

Ahora, escogemos la herramienta del hardware a utilizar. Para este caso se recomienda usar las herramientas PICKIT3 ICD3, las cuales están disponibles para programar este dispositivo.

    

Por último, seleccionamos el compilador a utilizar y la dirección de guardado del proyecto.

    

Nota: Antes de crear un proyecto es necesario instalar el compilador a utilizar. Además, se recomienda que la ruta de guardado sea corto (aproximadamente de 64 caracteres).

Creación – Adición de archivos

Una vez creado el proyecto, continuamos a crear los ficheros necesarios para la implementación del proyecto. Con el compilador XC32 para programar microcontroladores de microchip de 32 bits en lenguaje C, se tienen básicamente 2 tipos de archivos posibles para la creación de proyectos en lenguaje C:

  • Archivos con extensión .h: Utilizado generalmente como archivos para la implementación de librerías.
  • Archivos con extensión .c: Utilizado generalmente como archivos para la implementación de código de propósito general.

Para crear archivos con extensión .h, éstos deben ser creados e incluidos en la carpeta del proyecto Header Files. Para la creación de archivos con la extensión .c es necesario ser creados e incluidos en la carpeta del proyecto Source Files.

Adicionalmente existe un tipo de archivo adicional utilizado en las familias de micros PIC16, PIC24, dsPICs Y PIC32 para acoplar lenguaje ASSEMBLER con lenguaje C. Estos archivos tienen la extensión .S. Lastimosamente a la hora de crear este tipo de archivos y adjuntarlos a la carpeta Source Files, estos archivos son creados con la extensión .s (minúscula) por MPLABX IDE, y a su vez son interpretados como un error. Es necesario alterar la extensión de estos archivos .s a .S en la raíz del archivo para que no ocurran errores a la hora de compilar el proyecto. 

   

Para este proyecto se crearon los siguientes archivos con los nombres Config32MM0064GPL028.h, blink_32MM0064GPL028.c util.S:

A continuación se expone el contenido de cada archivo.

Configuración de fusibles – configuraciones iniciales –

Todo dispositivo programable necesita de configuraciones iniciales para su correcto funcionamiento. MPLABX IDE posee una herramienta para facilitar este proceso. En el menú Production -> Set Configuration Bits se despliega una amplia lista de estas configuraciones:

En la imagen se observan las configuraciones utilizadas para este proyecto, además de la descripción y la función de cada uno (columnas Category Setting). Luego de realizar estas configuraciones, al oprimir el botón Generate Source Code to Output se abrirá una nueva ventana con el código de estas configuraciones. Éste código se agregó al archivo Config32MM0064GPL028.h

 

Retardo en ASM

El código expuesto a continuación fue tomado de KINGMM, el cual muestra un retardo en lenguaje ASM. Este código debe ser copiado en el archivo util.S 

Código principal – Retardo en C

En la primera parte del archivo se muestra el cambio del retardo de lenguaje ASM y lenguaje C. Para esto se utilizó una macro que permite cambiar (con el valor de la macro) entre un retardo y otro:

Nota: El retardo se logró con la instrucción for de C.

Ahora se configura el oscilador, para garantizar un oscilador interno a 8 MHz. Luego se configura los puertos como digitales y salidas por medio de los registros ANSELx y TRISx, respectivamente. El método main se encarga de llamar a estos métodos de configuración.

       

Compilación y programación

Luego de tener el proyecto completo (el cual se puede descargar aquí), a continuación se debe compilar y verificar que no posea errores. Para esto se utiliza la herramienta Build Main Project Clean and Build Main Project mediante los iconos  . Al finalizar la correcta compilación, si el programa no presenta errores, debería salir una ventana con la siguiente información:

Ahora bien, ya puede ser programado el microcontrolador. Para esto puede programarse desde esta misma interfaz. Si se requiere alimentar el microcontrolador con el mismo hardware (PICKIT3 o ICD3) de programación para programarlo, es necesario activa la opción Power target circuit from ICD 3 (PICKIT 3) en Power en las opciones de configuración del proyecto.

   

Si se decide no programar el dispositivo con el voltaje que posee el programador, este procedimiento no es necesario. Por último, para programar el dispositivo, se utiliza el el icono Make and Program Device Main Project  . Al finalizar el proceso debe salir una ventana similar a esta:

Visualización

Video1    Video2

Aprende, Tutoriales Básicos
About Johan