SlideShare una empresa de Scribd logo
1 de 29
Descargar para leer sin conexión
2010
Iniciación a la programación de
                      los PIC32




                      Biblioman
                      www.aquihayapuntes.com
                      13/02/2010
Iniciación a la programación de los PIC32               2


Iniciación a la programación de los PIC32

                         Con este artículo empezamos con una serie de ejemplos
                         dedicada a la programación de los PICs de la gama alta de
                         Microchip, los de 32 bits. Primeramente voy a describir las
diferentes herramientas que necesitaremos para empezar a experimentar con estos
dispositivos, que empezaron su andadura a finales del 2007 y que a pesar de que ya hay
abundante documentación y ejemplos en ingles, la información en Español es escasa por
no decir nula.




Hardware necesario

Microchip ha desarrollado dos tipos de kit básicos de aprendizaje para el desarrollo con
estos dispositivos:



       La placa de desarrollo Explorer 16:




                                            www.aquihayapuntes.com | Biblioman    2
Iniciación a la programación de los PIC32                3


Como se ve en la figura de arriba, además de la placa se necesitan los módulos que
incluyen los Microcontroladores que pueden ser de 16 ó 32 bits. Y tendremos que tener
también el programador/depurador: ICD2, ICD3 ó el MPLAB REAL ICE.



       La plataforma Starter Kit




A medida que microchip a ido mejorando las funcionalidades de estos PIC ha ido
sacando nuevos kit para esta placa de desarrollo, actualmente disponemos de los
siguientes: DM320001, DM320003, DM320004. Esta última incluye un PIC de la
familia PIC32MX7 con 128 kbytes de memoria RAM, conectividad Ethernet de 10/100
Mbit/s, dos controladores CAN 2.0b, USB Host, Device y OTG, 6 puertos UART, 5
puertos I2C , 4 SPI y 16 canales de DMA.



Estos tres kit tienen muy limitado su comunicación con el exterior, solo disponen de tres
leds y tres pulsadores conectados de manera fija al puerto D. Para mejorar esto se
incluye como opcional (yo diría imprescindible) una placa de expansión la DM320002:



                                           www.aquihayapuntes.com | Biblioman     3
Iniciación a la programación de los PIC32                    4




Para ello el Starter Kit dispone de un conector en la parte de atrás que permite su
conexión con la placa de expansión:




                                            www.aquihayapuntes.com | Biblioman        4
Iniciación a la programación de los PIC32                5


Y que nos permite tener acceso a todos los pines del Microcontrolador. En la figura de
abajo se muestra el Starter Kit ensamblado en la placa de expansión.




¿la cuestión es que kit elegir?

La placa de desarrollo Explorer 16 ó Starter Kit. Cualquiera de ellas sirve para empezar
a programar estos dispositivos, sin embargo personalmente he preferido el Starter Kit +
la placa de expansión. Este kit permite programar y depurar nuestro programa
directamente desde el MPLAB, sin necesidad de ningún programador adicional, para
ello el kit incluye el PIC18LF4550, que sirve para controlar la comunicación USB entre
el MPLAB y el PIC 32, además si tenemos la placa de expansión nuestro kit de
aprendizaje se convierte fácilmente en una placa para desarrollar prototipos ya que
podemos conectar cualquier placa que desarrollemos nosotros mismos directamente a
los pines del PIC, como veremos más adelante en el ejemplo que vamos hacer.

Software necesario

       MPLAB: El famoso IDE de desarrollo de Microchip que ha utilizado desde
       siempre para facilitar la edición y depuración de programas en los PIC de todas
       sus familias. Aunque no es software libre es gratis y se puede descargar desde la
       página de Microchip desde aquí
       Compilador: los PIC32 son totalmente diferentes en arquitectura a sus
       sucesores, en este caso Microchip en vez de desarrollar su propio núcleo de
       microprocesador a adquirido el MIPS32 M4K, el cual ha mejorado y adaptado a

                                           www.aquihayapuntes.com | Biblioman     5
Iniciación a la programación de los PIC32                  6


       los puertos y periféricos que disponen todos los PIC. El MIPS32 está pensado
       para ser programado en C, aunque es posible programar un PIC32 en
       ensamblador y Microchip incluye algunos ejemplos de como hacerlo, es mucho
       más difícil que hacerlo con uno de 8 bits. Compiladores de C disponibles para
       estos PICs tenemos el de Microchip MPLAB C32 compiler que dispone de una
       versión de estudiante cuya única limitación es que como máximo permite
       generar 64 KB de código compilado. Como alternativa al compilador de
       Microchip tenemos en C el que nos ofrece HI-TECH, que también dispone de
       una versión Lite. De momento CCS no dispone de ninguna versión de
       compilador que soporte estos dispositivos, es lógico pensar que tarde o temprano
       se actualice si no quiere quedarse atrás con respecto a otros compiladores. Puede
       que mucha gente piense que para las aplicaciones que hace con
       microcontroladores no necesitará nunca un microcontrolador de 32 bits y que
       con los que hay de 8 y 16 bits les llega mas que sobrado, sin embargo puede que
       al final esta tecnología se abarate y acabe por imponerse y tengamos que utilizar
       un PIC32, aunque solo sea para hacer parpadear un led (esto son solo
       suposiciones mías), pero sin duda es algo a tener en cuenta a la hora de decidirse
       a aprender a programar estos dispositivos.

Nota: Buscando en Internet encontré byvac un interprete en basic para PIC32.



El compilador que voy a utilizar en este primer ejemplo y en posteriores será el C32 de
Microchip.

Comenzando la instalación del Software

El kit de desarrollo Starter Kit incluye: la placa, el software, el cable USB de conexión
con el ordenador y el código fuente de varios ejemplos, es decir, todo preparado para
que en menos de media hora hayamos compilado y probado nuestro primer ejemplo.




                                            www.aquihayapuntes.com | Biblioman      6
Iniciación a la programación de los PIC32                  7




La instalación del software es de lo más sencillo, al estilo windows: siguiente->
siguiente y FIN.




                                           www.aquihayapuntes.com | Biblioman       7
Iniciación a la programación de los PIC32                 8




Pulsamos sobre instalación desde el CD y el asistente nos indica las aplicaciones que se
van a instalar, según se muestra en la figura de abajo se instalará en nuestro ordenador:
el IDE MPLAB, el compilador C32 (versión de evaluación) y los proyectos de ejemplo.




                                           www.aquihayapuntes.com | Biblioman      8
Iniciación a la programación de los PIC32              9




Crear nuestro primer proyecto

Vamos a ver paso a paso como crear nuestro primer proyecto para PIC32, como
compilarlo con el compilador C32 y ejecutarlo en la placa Starter Kit.



1. Abrimos el MPLAB y seleccionamos Project --> Project Wizard...




                                        www.aquihayapuntes.com | Biblioman    9
Iniciación a la programación de los PIC32                10




2. Pulsamos siguiente para iniciar la creación del proyecto con el asistente.




                                            www.aquihayapuntes.com | Biblioman   10
Iniciación a la programación de los PIC32               11




3. En la siguiente ventana seleccionamos el tipo de PIC




                                          www.aquihayapuntes.com | Biblioman   11
Iniciación a la programación de los PIC32            12




4. Seleccionamos el compilador C32




                                     www.aquihayapuntes.com | Biblioman   12
Iniciación a la programación de los PIC32                13




5. Le damos el nombre a nuestro proyecto y lo guardamos en el directorio que
queramos.




                                         www.aquihayapuntes.com | Biblioman    13
Iniciación a la programación de los PIC32                 14




6. Añadimos los archivos existentes a nuestro proyecto. Como vamos a crear un
proyecto desde cero, no añadimos ninguno y pulsamos sobre siguiente:




                                         www.aquihayapuntes.com | Biblioman     14
Iniciación a la programación de los PIC32                15




7. Pulsamos en finalizar para que el MPLAB nos genere los archivos de nuestro
proyecto




8. Ahora viene el paso más difícil, escribir el código fuente de nuestro primer programa
para el PIC32. Podría haber elegido uno de los que trae Microchip en los ejemplos del
kit. Pero teniendo en cuenta que sigue abierto el curso de programación PIC en C con el
compilador CCS y que no lo voy a dejar a medio, lo que voy hacer es adaptar los
ejemplos que vayamos realizando en el tutorial de CCS a este compilador. Esta claro
que no nos servirán las funciones pre-construidas que incorpora CCS, pero estamos
trabajando en C un lenguaje de alto nivel, veremos que todo lo que cumpla con el
estándar es aplicable a este compilador también.



Quizás la mayoría asocie las aplicaciones con PIC32 con aplicaciones avanzadas que
utilizan la pila de comunicación TCP/IP ó un ejemplo que incluya la comunicación con
un puerto USB 2.0. Sin duda con este tipo de aplicaciones es donde sacaremos el mayor
partido a estos microcontroladores, pero este va ha ser un tutorial que va a empezar
desde cero con este tipo de PIC, al estilo del curso de programación en C con CCS, por
lo que sus ejemplos trataran de como ir poco a poco utilizando los recursos de este PIC:
Puertos de E/S, timers, convertidores A/D, ejemplos con teclados, LCD, etc. Recursos

                                           www.aquihayapuntes.com | Biblioman    15
Iniciación a la programación de los PIC32              16


que son comunes a los PIC de categorías inferiores, pero que son imprescindible
conocer también en este tipo de PIC. Así que como primer ejemplo vamos a empezar
con uno que ya teníamos hecho, la secuencia de luces utilizando operadores
matemáticos




                                        www.aquihayapuntes.com | Biblioman   16
Iniciación a la programación de los PIC32                17


Iniciación a la programación de los PIC32 - Ejemplo secuencia de luces.

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




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




                                             www.aquihayapuntes.com | Biblioman   17
Iniciación a la programación de los PIC32              18




En el escribiremos el siguiente código:

view source
print?
01./////////////////////////////////////////////////////
02.// Ejemplo: Secuencia de luces. Coche fantástico    //
03.// Microcontrolador: PIC 32                         //
04.// IDE: MPLAB                                       //
05.// Compilador: C32                                  //
06.// Autor: Biblioman                                 //
07./////////////////////////////////////////////////////
08.
09.#include <plib.h> //Librería de periféricos
10.
11.void delay_ms(int valor);//Declaración función retardo
12.
13.//Función retardo
14.void delay_ms(int valor)
15. {
16. int i;
17. for(i=0; i<valor; i++);
18. }
19.
20.void main(void)//Función principal

                                          www.aquihayapuntes.com | Biblioman   18
Iniciación a la programación de los PIC32                    19


21. {
22.
23. TRISE = 0;      // Toda la PORTD como salida
24. PORTE=1;        //inicializo PORTE
25. delay_ms(150000);//llamada a la función retardo
26.
27. while(1) // Bucle infinito
28. {
29.
30. while(PORTE<=0x40)
31. {
32. PORTE=PORTE*2;
33. delay_ms(150000);
34. }
35. while(PORTE>=0x02)
36. {
37. PORTE=PORTE /2;
38. delay_ms(150000);
39. }
40. }
41.
42.}

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:



    PIN         Tipo
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,
                E/S
RG4-RG15
RG2, RG3        E



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


                                           www.aquihayapuntes.com | Biblioman        19
Iniciación a la programación de los PIC32                  20




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:




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

                                           www.aquihayapuntes.com | Biblioman      20
Iniciación a la programación de los PIC32                 21


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.




                                          www.aquihayapuntes.com | Biblioman     21
Iniciación a la programación de los PIC32              22




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




                                        www.aquihayapuntes.com | Biblioman   22
Iniciación a la programación de los PIC32                23




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.




                                          www.aquihayapuntes.com | Biblioman    23
Iniciación a la programación de los PIC32                 24




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.




                                          www.aquihayapuntes.com | Biblioman     24
Iniciación a la programación de los PIC32                 25




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.




                                          www.aquihayapuntes.com | Biblioman     25
Iniciación a la programación de los PIC32                 26


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




                                           www.aquihayapuntes.com | Biblioman     26
Iniciación a la programación de los PIC32                 27


Iniciación a la programación de los PIC32 - Simulación real del ejemplo.

Para el que se decida adquirir la placa de desarrollo a llegado el momento de probar
nuestro ejemplo en un circuito real, para ello he creado una pequeña placa prototipo con
ocho led y que se conectan a los 8 primeros pines del puerto E del PIC, a través de la
placa de expansión según se muestra en la figura de abajo:




Después solo nos queda conectar el Starter Kit a través del cable USB a nuestro
ordenador. Desde el MPLAB seleccionamos Debugger-> Select tool -> PIC32MX
Starter Kit




                                              www.aquihayapuntes.com | Biblioman   27
Iniciación a la programación de los PIC32                 28




Si la conexión ha tenido éxito nos saldrá la caja de herramientas para programar y
depurar nuestro PIC, donde pulsaremos sobre Program All Memories para cargar
nuestro programa en el PIC. Si todo ha ido bien nos aparecerá: Programming Done en
la ventana de salida y a partir de ahora podremos ejecutar y simular paso a paso nuestro
programa desde el interior del PIC, igual que si tuviéramos conectado el
programador/depurador ICD3 de Microchip.




Aquí tenéis un pequeño vídeo del programa funcionando:

Ver vídeo.




                                           www.aquihayapuntes.com | Biblioman     28
Iniciación a la programación de los PIC32                   29




www.aquihayapuntes.com

Tutorial creado por Biblioman.
Versión 1.00
http://www.aquihayapuntes.com/curso-pic32.html

Portado a PDF por Meta.
http://electronica-pic.blogspot.com

Cualquier sugerencia, duda o cualquier comentario, puedes realizarla en el foro aquí:
http://www.aquihayapuntes.com/foro/viewtopic.php?f=20&t=46&sid=f3bb3a346d246efb53a
2c46f8363533e

Puede haber futuras actualizaciones, mejoras y contenidos.


                                                       www.aquihayapuntes.com | Biblioman   29

Más contenido relacionado

Destacado

Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
Introduccion a las herramientas libres GNU/Linux para la programacion de micr...Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
Introduccion a las herramientas libres GNU/Linux para la programacion de micr...georgeguitar
 
Pic problemas resueltos
Pic problemas resueltos Pic problemas resueltos
Pic problemas resueltos GM Lamo
 
Gea fuente de_voltaje
Gea fuente de_voltajeGea fuente de_voltaje
Gea fuente de_voltajeMarco Silva
 
Comunicación via bluetooth
Comunicación via bluetoothComunicación via bluetooth
Comunicación via bluetoothMarco Silva
 
Diapositivas pic 18f452 microprocesadores
Diapositivas pic 18f452  microprocesadoresDiapositivas pic 18f452  microprocesadores
Diapositivas pic 18f452 microprocesadoresjoselin33
 
Juego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87xJuego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87xConstructora Kaizen
 
Programador usb 2011_pickit2 modificado
Programador usb 2011_pickit2 modificadoProgramador usb 2011_pickit2 modificado
Programador usb 2011_pickit2 modificadoUniversidad mariana
 
Tutorial de diseño de circuitos impresos por técnica de termotransferible
Tutorial de diseño de circuitos impresos por técnica de termotransferibleTutorial de diseño de circuitos impresos por técnica de termotransferible
Tutorial de diseño de circuitos impresos por técnica de termotransferibleUniversidad mariana
 
Tutorial comunicación bluetooth con módulos rn42 y rn41_by_ editronikx
Tutorial comunicación bluetooth con módulos rn42 y rn41_by_ editronikxTutorial comunicación bluetooth con módulos rn42 y rn41_by_ editronikx
Tutorial comunicación bluetooth con módulos rn42 y rn41_by_ editronikxUniversidad mariana
 
Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550 Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550 Alejandra Ruiz
 
Bootloader USB Multiplataforma para pic18f4550
Bootloader USB Multiplataforma para pic18f4550Bootloader USB Multiplataforma para pic18f4550
Bootloader USB Multiplataforma para pic18f4550Biblioman Aquihayapuntes
 

Destacado (20)

OSCILOSCOPIO
OSCILOSCOPIOOSCILOSCOPIO
OSCILOSCOPIO
 
Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
Introduccion a las herramientas libres GNU/Linux para la programacion de micr...Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
Introduccion a las herramientas libres GNU/Linux para la programacion de micr...
 
Pic problemas resueltos
Pic problemas resueltos Pic problemas resueltos
Pic problemas resueltos
 
Gea fuente de_voltaje
Gea fuente de_voltajeGea fuente de_voltaje
Gea fuente de_voltaje
 
Comunicación via bluetooth
Comunicación via bluetoothComunicación via bluetooth
Comunicación via bluetooth
 
Diapositivas pic 18f452 microprocesadores
Diapositivas pic 18f452  microprocesadoresDiapositivas pic 18f452  microprocesadores
Diapositivas pic 18f452 microprocesadores
 
Juego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87xJuego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87x
 
Programador usb 2011_pickit2 modificado
Programador usb 2011_pickit2 modificadoProgramador usb 2011_pickit2 modificado
Programador usb 2011_pickit2 modificado
 
Presentacion
PresentacionPresentacion
Presentacion
 
PEP Comida - Jasone
PEP Comida - JasonePEP Comida - Jasone
PEP Comida - Jasone
 
Tutorial ii proyectos en basic proton
Tutorial ii   proyectos en basic protonTutorial ii   proyectos en basic proton
Tutorial ii proyectos en basic proton
 
Tutorial de diseño de circuitos impresos por técnica de termotransferible
Tutorial de diseño de circuitos impresos por técnica de termotransferibleTutorial de diseño de circuitos impresos por técnica de termotransferible
Tutorial de diseño de circuitos impresos por técnica de termotransferible
 
pic 18f4550
pic 18f4550 pic 18f4550
pic 18f4550
 
Tutorial comunicación bluetooth con módulos rn42 y rn41_by_ editronikx
Tutorial comunicación bluetooth con módulos rn42 y rn41_by_ editronikxTutorial comunicación bluetooth con módulos rn42 y rn41_by_ editronikx
Tutorial comunicación bluetooth con módulos rn42 y rn41_by_ editronikx
 
50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanol50824079 datasheet-pic18f4550-espanol
50824079 datasheet-pic18f4550-espanol
 
Contadores y visualización por display 2
Contadores y visualización por display 2Contadores y visualización por display 2
Contadores y visualización por display 2
 
Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550 Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550
 
Interrupciones y Temporizadores
Interrupciones y TemporizadoresInterrupciones y Temporizadores
Interrupciones y Temporizadores
 
Bootloader USB Multiplataforma para pic18f4550
Bootloader USB Multiplataforma para pic18f4550Bootloader USB Multiplataforma para pic18f4550
Bootloader USB Multiplataforma para pic18f4550
 
Control lcd 16X2 proton
Control lcd 16X2 protonControl lcd 16X2 proton
Control lcd 16X2 proton
 

Similar a Iniciación a la programación PIC32

Similar a Iniciación a la programación PIC32 (20)

Curso MPLAB pic 1 1p
Curso MPLAB pic 1 1pCurso MPLAB pic 1 1p
Curso MPLAB pic 1 1p
 
Labview & pic
Labview & picLabview & pic
Labview & pic
 
Como programar un PIC
Como programar un PICComo programar un PIC
Como programar un PIC
 
Mce pic18 preview
Mce pic18 previewMce pic18 preview
Mce pic18 preview
 
Microcontrolador pic
Microcontrolador picMicrocontrolador pic
Microcontrolador pic
 
Mundodelos pic
Mundodelos picMundodelos pic
Mundodelos pic
 
Pbpesp
PbpespPbpesp
Pbpesp
 
PROGRAMACION DE LOS PIC 2021-1.pdf
PROGRAMACION DE LOS  PIC 2021-1.pdfPROGRAMACION DE LOS  PIC 2021-1.pdf
PROGRAMACION DE LOS PIC 2021-1.pdf
 
Pinguino aetel
Pinguino aetelPinguino aetel
Pinguino aetel
 
Tutorial proton part 2
Tutorial proton part 2Tutorial proton part 2
Tutorial proton part 2
 
Mplab Inicio Rapido
Mplab Inicio RapidoMplab Inicio Rapido
Mplab Inicio Rapido
 
Como programar en Arduino
Como programar en ArduinoComo programar en Arduino
Como programar en Arduino
 
02 programar
02 programar02 programar
02 programar
 
02 programarpic
02 programarpic02 programarpic
02 programarpic
 
Pic libre
Pic librePic libre
Pic libre
 
Como programar un pic en 4 pasos
Como programar un pic en 4 pasosComo programar un pic en 4 pasos
Como programar un pic en 4 pasos
 
"Hola Mundo" C18, PIC18F y MPLAB
"Hola Mundo"  C18,  PIC18F y MPLAB"Hola Mundo"  C18,  PIC18F y MPLAB
"Hola Mundo" C18, PIC18F y MPLAB
 
Empezando con las librerías gráficas de microchip
Empezando  con las librerías gráficas de  microchipEmpezando  con las librerías gráficas de  microchip
Empezando con las librerías gráficas de microchip
 
P01.Desarrollo de aplicaciones con mplab
P01.Desarrollo de aplicaciones con mplabP01.Desarrollo de aplicaciones con mplab
P01.Desarrollo de aplicaciones con mplab
 
C21cm23-Ponce B Jesus-Tendencias microcontroladores
C21cm23-Ponce B Jesus-Tendencias microcontroladoresC21cm23-Ponce B Jesus-Tendencias microcontroladores
C21cm23-Ponce B Jesus-Tendencias microcontroladores
 

Iniciación a la programación PIC32

  • 1. 2010 Iniciación a la programación de los PIC32 Biblioman www.aquihayapuntes.com 13/02/2010
  • 2. Iniciación a la programación de los PIC32 2 Iniciación a la programación de los PIC32 Con este artículo empezamos con una serie de ejemplos dedicada a la programación de los PICs de la gama alta de Microchip, los de 32 bits. Primeramente voy a describir las diferentes herramientas que necesitaremos para empezar a experimentar con estos dispositivos, que empezaron su andadura a finales del 2007 y que a pesar de que ya hay abundante documentación y ejemplos en ingles, la información en Español es escasa por no decir nula. Hardware necesario Microchip ha desarrollado dos tipos de kit básicos de aprendizaje para el desarrollo con estos dispositivos: La placa de desarrollo Explorer 16: www.aquihayapuntes.com | Biblioman 2
  • 3. Iniciación a la programación de los PIC32 3 Como se ve en la figura de arriba, además de la placa se necesitan los módulos que incluyen los Microcontroladores que pueden ser de 16 ó 32 bits. Y tendremos que tener también el programador/depurador: ICD2, ICD3 ó el MPLAB REAL ICE. La plataforma Starter Kit A medida que microchip a ido mejorando las funcionalidades de estos PIC ha ido sacando nuevos kit para esta placa de desarrollo, actualmente disponemos de los siguientes: DM320001, DM320003, DM320004. Esta última incluye un PIC de la familia PIC32MX7 con 128 kbytes de memoria RAM, conectividad Ethernet de 10/100 Mbit/s, dos controladores CAN 2.0b, USB Host, Device y OTG, 6 puertos UART, 5 puertos I2C , 4 SPI y 16 canales de DMA. Estos tres kit tienen muy limitado su comunicación con el exterior, solo disponen de tres leds y tres pulsadores conectados de manera fija al puerto D. Para mejorar esto se incluye como opcional (yo diría imprescindible) una placa de expansión la DM320002: www.aquihayapuntes.com | Biblioman 3
  • 4. Iniciación a la programación de los PIC32 4 Para ello el Starter Kit dispone de un conector en la parte de atrás que permite su conexión con la placa de expansión: www.aquihayapuntes.com | Biblioman 4
  • 5. Iniciación a la programación de los PIC32 5 Y que nos permite tener acceso a todos los pines del Microcontrolador. En la figura de abajo se muestra el Starter Kit ensamblado en la placa de expansión. ¿la cuestión es que kit elegir? La placa de desarrollo Explorer 16 ó Starter Kit. Cualquiera de ellas sirve para empezar a programar estos dispositivos, sin embargo personalmente he preferido el Starter Kit + la placa de expansión. Este kit permite programar y depurar nuestro programa directamente desde el MPLAB, sin necesidad de ningún programador adicional, para ello el kit incluye el PIC18LF4550, que sirve para controlar la comunicación USB entre el MPLAB y el PIC 32, además si tenemos la placa de expansión nuestro kit de aprendizaje se convierte fácilmente en una placa para desarrollar prototipos ya que podemos conectar cualquier placa que desarrollemos nosotros mismos directamente a los pines del PIC, como veremos más adelante en el ejemplo que vamos hacer. Software necesario MPLAB: El famoso IDE de desarrollo de Microchip que ha utilizado desde siempre para facilitar la edición y depuración de programas en los PIC de todas sus familias. Aunque no es software libre es gratis y se puede descargar desde la página de Microchip desde aquí Compilador: los PIC32 son totalmente diferentes en arquitectura a sus sucesores, en este caso Microchip en vez de desarrollar su propio núcleo de microprocesador a adquirido el MIPS32 M4K, el cual ha mejorado y adaptado a www.aquihayapuntes.com | Biblioman 5
  • 6. Iniciación a la programación de los PIC32 6 los puertos y periféricos que disponen todos los PIC. El MIPS32 está pensado para ser programado en C, aunque es posible programar un PIC32 en ensamblador y Microchip incluye algunos ejemplos de como hacerlo, es mucho más difícil que hacerlo con uno de 8 bits. Compiladores de C disponibles para estos PICs tenemos el de Microchip MPLAB C32 compiler que dispone de una versión de estudiante cuya única limitación es que como máximo permite generar 64 KB de código compilado. Como alternativa al compilador de Microchip tenemos en C el que nos ofrece HI-TECH, que también dispone de una versión Lite. De momento CCS no dispone de ninguna versión de compilador que soporte estos dispositivos, es lógico pensar que tarde o temprano se actualice si no quiere quedarse atrás con respecto a otros compiladores. Puede que mucha gente piense que para las aplicaciones que hace con microcontroladores no necesitará nunca un microcontrolador de 32 bits y que con los que hay de 8 y 16 bits les llega mas que sobrado, sin embargo puede que al final esta tecnología se abarate y acabe por imponerse y tengamos que utilizar un PIC32, aunque solo sea para hacer parpadear un led (esto son solo suposiciones mías), pero sin duda es algo a tener en cuenta a la hora de decidirse a aprender a programar estos dispositivos. Nota: Buscando en Internet encontré byvac un interprete en basic para PIC32. El compilador que voy a utilizar en este primer ejemplo y en posteriores será el C32 de Microchip. Comenzando la instalación del Software El kit de desarrollo Starter Kit incluye: la placa, el software, el cable USB de conexión con el ordenador y el código fuente de varios ejemplos, es decir, todo preparado para que en menos de media hora hayamos compilado y probado nuestro primer ejemplo. www.aquihayapuntes.com | Biblioman 6
  • 7. Iniciación a la programación de los PIC32 7 La instalación del software es de lo más sencillo, al estilo windows: siguiente-> siguiente y FIN. www.aquihayapuntes.com | Biblioman 7
  • 8. Iniciación a la programación de los PIC32 8 Pulsamos sobre instalación desde el CD y el asistente nos indica las aplicaciones que se van a instalar, según se muestra en la figura de abajo se instalará en nuestro ordenador: el IDE MPLAB, el compilador C32 (versión de evaluación) y los proyectos de ejemplo. www.aquihayapuntes.com | Biblioman 8
  • 9. Iniciación a la programación de los PIC32 9 Crear nuestro primer proyecto Vamos a ver paso a paso como crear nuestro primer proyecto para PIC32, como compilarlo con el compilador C32 y ejecutarlo en la placa Starter Kit. 1. Abrimos el MPLAB y seleccionamos Project --> Project Wizard... www.aquihayapuntes.com | Biblioman 9
  • 10. Iniciación a la programación de los PIC32 10 2. Pulsamos siguiente para iniciar la creación del proyecto con el asistente. www.aquihayapuntes.com | Biblioman 10
  • 11. Iniciación a la programación de los PIC32 11 3. En la siguiente ventana seleccionamos el tipo de PIC www.aquihayapuntes.com | Biblioman 11
  • 12. Iniciación a la programación de los PIC32 12 4. Seleccionamos el compilador C32 www.aquihayapuntes.com | Biblioman 12
  • 13. Iniciación a la programación de los PIC32 13 5. Le damos el nombre a nuestro proyecto y lo guardamos en el directorio que queramos. www.aquihayapuntes.com | Biblioman 13
  • 14. Iniciación a la programación de los PIC32 14 6. Añadimos los archivos existentes a nuestro proyecto. Como vamos a crear un proyecto desde cero, no añadimos ninguno y pulsamos sobre siguiente: www.aquihayapuntes.com | Biblioman 14
  • 15. Iniciación a la programación de los PIC32 15 7. Pulsamos en finalizar para que el MPLAB nos genere los archivos de nuestro proyecto 8. Ahora viene el paso más difícil, escribir el código fuente de nuestro primer programa para el PIC32. Podría haber elegido uno de los que trae Microchip en los ejemplos del kit. Pero teniendo en cuenta que sigue abierto el curso de programación PIC en C con el compilador CCS y que no lo voy a dejar a medio, lo que voy hacer es adaptar los ejemplos que vayamos realizando en el tutorial de CCS a este compilador. Esta claro que no nos servirán las funciones pre-construidas que incorpora CCS, pero estamos trabajando en C un lenguaje de alto nivel, veremos que todo lo que cumpla con el estándar es aplicable a este compilador también. Quizás la mayoría asocie las aplicaciones con PIC32 con aplicaciones avanzadas que utilizan la pila de comunicación TCP/IP ó un ejemplo que incluya la comunicación con un puerto USB 2.0. Sin duda con este tipo de aplicaciones es donde sacaremos el mayor partido a estos microcontroladores, pero este va ha ser un tutorial que va a empezar desde cero con este tipo de PIC, al estilo del curso de programación en C con CCS, por lo que sus ejemplos trataran de como ir poco a poco utilizando los recursos de este PIC: Puertos de E/S, timers, convertidores A/D, ejemplos con teclados, LCD, etc. Recursos www.aquihayapuntes.com | Biblioman 15
  • 16. Iniciación a la programación de los PIC32 16 que son comunes a los PIC de categorías inferiores, pero que son imprescindible conocer también en este tipo de PIC. Así que como primer ejemplo vamos a empezar con uno que ya teníamos hecho, la secuencia de luces utilizando operadores matemáticos www.aquihayapuntes.com | Biblioman 16
  • 17. Iniciación a la programación de los PIC32 17 Iniciación a la programación de los PIC32 - Ejemplo secuencia de luces. Para ello desde el MPLAB seleccionamos New File según se muestra en la figura de abajo: Nos aparecerá el cuadro de edición de programas, donde tendremos que escribir el código fuente de nuestra aplicación: www.aquihayapuntes.com | Biblioman 17
  • 18. Iniciación a la programación de los PIC32 18 En el escribiremos el siguiente código: view source print? 01.///////////////////////////////////////////////////// 02.// Ejemplo: Secuencia de luces. Coche fantástico // 03.// Microcontrolador: PIC 32 // 04.// IDE: MPLAB // 05.// Compilador: C32 // 06.// Autor: Biblioman // 07.///////////////////////////////////////////////////// 08. 09.#include <plib.h> //Librería de periféricos 10. 11.void delay_ms(int valor);//Declaración función retardo 12. 13.//Función retardo 14.void delay_ms(int valor) 15. { 16. int i; 17. for(i=0; i<valor; i++); 18. } 19. 20.void main(void)//Función principal www.aquihayapuntes.com | Biblioman 18
  • 19. Iniciación a la programación de los PIC32 19 21. { 22. 23. TRISE = 0; // Toda la PORTD como salida 24. PORTE=1; //inicializo PORTE 25. delay_ms(150000);//llamada a la función retardo 26. 27. while(1) // Bucle infinito 28. { 29. 30. while(PORTE<=0x40) 31. { 32. PORTE=PORTE*2; 33. delay_ms(150000); 34. } 35. while(PORTE>=0x02) 36. { 37. PORTE=PORTE /2; 38. delay_ms(150000); 39. } 40. } 41. 42.} 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: PIN Tipo 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, E/S RG4-RG15 RG2, RG3 E Nuestro ejemplo solo utiliza 8 bits del puerto E, por lo que los otros ocho quedan disponibles para otros menesteres. www.aquihayapuntes.com | Biblioman 19
  • 20. Iniciación a la programación de los PIC32 20 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: 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 www.aquihayapuntes.com | Biblioman 20
  • 21. Iniciación a la programación de los PIC32 21 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. www.aquihayapuntes.com | Biblioman 21
  • 22. Iniciación a la programación de los PIC32 22 MPLAB nos permite depurar el programa a través de varias herramientas, seleccionamos MPLAB SIM según se muestra en la figura de abajo. www.aquihayapuntes.com | Biblioman 22
  • 23. Iniciación a la programación de los PIC32 23 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. www.aquihayapuntes.com | Biblioman 23
  • 24. Iniciación a la programación de los PIC32 24 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. www.aquihayapuntes.com | Biblioman 24
  • 25. Iniciación a la programación de los PIC32 25 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. www.aquihayapuntes.com | Biblioman 25
  • 26. Iniciación a la programación de los PIC32 26 Hasta aquí todo lo hecho se puede hacer sin tener que gastar un duro, utilizando las herramientas gratuitas que nos ofrece Microchip. www.aquihayapuntes.com | Biblioman 26
  • 27. Iniciación a la programación de los PIC32 27 Iniciación a la programación de los PIC32 - Simulación real del ejemplo. Para el que se decida adquirir la placa de desarrollo a llegado el momento de probar nuestro ejemplo en un circuito real, para ello he creado una pequeña placa prototipo con ocho led y que se conectan a los 8 primeros pines del puerto E del PIC, a través de la placa de expansión según se muestra en la figura de abajo: Después solo nos queda conectar el Starter Kit a través del cable USB a nuestro ordenador. Desde el MPLAB seleccionamos Debugger-> Select tool -> PIC32MX Starter Kit www.aquihayapuntes.com | Biblioman 27
  • 28. Iniciación a la programación de los PIC32 28 Si la conexión ha tenido éxito nos saldrá la caja de herramientas para programar y depurar nuestro PIC, donde pulsaremos sobre Program All Memories para cargar nuestro programa en el PIC. Si todo ha ido bien nos aparecerá: Programming Done en la ventana de salida y a partir de ahora podremos ejecutar y simular paso a paso nuestro programa desde el interior del PIC, igual que si tuviéramos conectado el programador/depurador ICD3 de Microchip. Aquí tenéis un pequeño vídeo del programa funcionando: Ver vídeo. www.aquihayapuntes.com | Biblioman 28
  • 29. Iniciación a la programación de los PIC32 29 www.aquihayapuntes.com Tutorial creado por Biblioman. Versión 1.00 http://www.aquihayapuntes.com/curso-pic32.html Portado a PDF por Meta. http://electronica-pic.blogspot.com Cualquier sugerencia, duda o cualquier comentario, puedes realizarla en el foro aquí: http://www.aquihayapuntes.com/foro/viewtopic.php?f=20&t=46&sid=f3bb3a346d246efb53a 2c46f8363533e Puede haber futuras actualizaciones, mejoras y contenidos. www.aquihayapuntes.com | Biblioman 29