Iniciación a la programación de los PIC32

 

Para ello desde el MPLAB seleccionamos New File según se muestra en la figura de abajo:

 

Proyecto 8

 

Nos aparecerá el cuadro de edición de programas, donde tendremos que escribir el código fuente de nuestra aplicación:

 

Proyecto 9

 

En el escribiremos el siguiente código:

 
///////////////////////////////////////////////////// 
// Ejemplo: Secuencia de luces. Coche fantástico   // 
// Microcontrolador: PIC 32                        // 
// IDE: MPLAB                                      // 
// Compilador: C32                                 // 
// Autor: Biblioman                                // 
///////////////////////////////////////////////////// 
 
#include <plib.h> //Librería de periféricos 
 
void delay_ms(int valor);//Declaración función retardo 
 
//Función retardo 
void delay_ms(int valor) 
 { 
 int i; 
 for(i=0; i<valor; i++); 
 } 
 
void main(void)//Función principal 
 { 
 
 TRISE = 0;      // Toda la PORTD como salida 
 PORTE=1;        //inicializo PORTE 
 delay_ms(150000);//llamada a la función retardo 
 
 while(1) // Bucle infinito 
 { 
 
 while(PORTE<=0x40) 
 { 
 PORTE=PORTE*2; 
 delay_ms(150000); 
 } 
 while(PORTE>=0x02) 
 { 
 PORTE=PORTE /2; 
 delay_ms(150000); 
 } 
 } 
 
} 
 

Comentario del programa

Como veis el código no es tan diferente del empleado en CCS, vamos a ver las diferencias que hay a la vez que empezamos a ver algunas características hardware de estos nuevos PIC. En este ejemplo se hace uso de los puertos de entrada y salida. El PIC 32MX360F512L dispone de siete puertos de entrada y salida de 16 bits cada uno de ellos distribuidos de la siguiente manera:

 

PINTipo
RA0-RA15 E/S
RB0-RB15 E/S
RC0-RC15 E/S
RD0-RD15 E/S
RE0-RE15 E/S
RF0-RF15 E/S
RG0, RG1, RG4-RG15 E/S
RG2, RG3 E

 

Nuestro ejemplo solo utiliza 8 bits del puerto E, por lo que los otros ocho quedan disponibles para otros menesteres.

 

Otro dato que tenemos que tener en cuenta es que estos microcontroladores utilizan una interfaz nueva denominada JTAG que se encuentra multiplexada a través de los pines RA0, RA1, RA4 y RA5 del puerto A. Esta interfaz la utiliza el Starter Kit para la programación y depuración del PIC32 á través del PIC18, según se muestra en la figura de abajo:

 

Esquema bloque de conexiones

 

Estos pines vienen configurados por defecto para su uso con la interfaz JTAG, por lo que no tendremos que configurarlos en nuestro código, salvo tener en cuenta que estos pines están reservados y no los podremos utilizar en nuestros programas con esta placa de desarrollo. La placa de desarrollo Explorer 16 utiliza los programadores/depuradores ICD2 ó ICD3 y el MPLAB Real ICE a través del puerto ICSP/ICD. por lo que si se podrían utilizar estos pines siempre y cuando se deshabilite previamente la interfaz JTAG en el código de nuestro programa.

 

Dejemos de momento las características hardware, y volvamos al código de nuestro ejemplo. La primera instrucción que nos encontramos es la directiva: #include <plib.h>

El archivo de cabecera plib.h incluye a su vez a otros archivos de cabecera donde están definidas una serie de funciones y macros para facilitar el trabajar con todos los periféricos del PIC. Microchip dispone de un manual de esta librería, Podemos utilizar estas macros para el control de los puertos del PIC, pero también podemos utilizar el método tradicional que permite usar identificadores para los registros del PIC y trabajar con ellos directamente, al igual que hacíamos en CCS. En el ejemplo he utilizado esta última opción para que el código se parezca más al hecho para CCS.

 

Otro cosa que hay que tener en cuenta es que este compilador no soporta la representación de datos en binario, se soluciona rápidamente cambiando los valores a hexadecimal (0b00000000 por 0x00), realmente la notación binaria es cosa de algunos compiladores para microcontroladores incluyendo a CCS, ya que está notación no esta soportada por el estándar ANSI C.

 

Por último como gran diferencia con respecto al código en CCS es que en C32 no existe una función de retardo por software del tipo delay_ms() que tiene CCS. Por lo visto, esto es debido a la arquitectura del núcleo MIPS32 M4K que hace que el número de instrucciones ejecutadas por ciclo de reloj no sea constante, haciendo que no sea viable la programación de retardos por software.

 

Para este primer ejemplo se ha utilizado un rudimentario retardo a través de un bucle for. Los retardos precisos habrá que hacerlos utilizando los timers, para ello el PIC 32MX360F512L dispone de cinco timers y de un reloj en tiempo real RTCC (Real Time Clock Calendar), que nos permite trabajar directamente con unidades de tiempo de segundos, minutos, horas y fechas de manera fácil y precisa.

 

Esto son las diferencias que han sido necesarias aplicar para que funcione el programa ya hecho en CCS, de la secuencia de luces tipo coche fantástico.

 

Una vez que tenemos escrito nuestro programa en la ventana de edición, debemos agregar el archivo a nuestro proyecto, para ello seleccionamos File--> Save para guardar nuestro programa, en la ventana que nos aparece escribiremos un nombre para nuestro programa y que tenga por extensión .c, no hay que olvidarse de marcar la casilla "añadir archivo al proyecto", según se muestra en la figura de abajo.

 

Proyecto 10

 

MPLAB nos permite depurar el programa a través de varias herramientas, seleccionamos MPLAB SIM según se muestra en la figura de abajo.

 

Proyecto 11

 

Ahora ya lo tenemos todo preparado y llega el momento de compilar para comprobar que nuestro programa no tiene ningún error, seleccionaremos la opción "build All" para que MPLAB nos genere todos los archivos necesarios para ejecutar y depurar nuestro programa.

 

Proyecto 12

 

Si nuestro programa se ha compilado sin errores, nos aparecerá en la ventana de salida que nuestro proyecto se ha construido satisfactoriamente y a partir de ahora tendremos habilitados los botones de simulación.

 

Proyecto 13

 

Hay que decir que los PIC32 todavía no están modelados en Proteus, por lo que no dispondremos de esta herramienta de simulación para depurar nuestro programa, cuestión de tiempo también, que los fabricantes de Proteus integren este nuevo PIC en sus librerías.
Pero mientras tanto, tenemos MPLAB que también nos permite simular nuestro programa paso a paso, crear Break Point, ver el estado de los registros del PIC y muchas cosas mas.

 

Proyecto 14

 

Hasta aquí todo lo hecho se puede hacer sin tener que gastar un duro, utilizando las herramientas gratuitas que nos ofrece Microchip.

 

© 2007-2017 AquiHayapuntes.com