Está en la página 1de 32

CLASE N 01 ARQUITECTURA DEL DSPIC (Puertos I/O, PSV), MPLAB IDE Y EL LENGUAJE C30

I. Contenido de la Clase:
1.1. Arquitectura Bsica del DSPIC - Caractersticas generales - Memoria de Datos - Puertos de Entrada Salida (I/O) 1.2. El Entorno MPLAB IDE - Partes de MPLAB IDE - Desarrollo y Ejecucin de un Proyecto 1.3. El Lenguaje C30 - Tipos de datos y variables - Funciones - Lazos de control: If, for, etc.

II. Objetivos:
2.1. Comprender de modo general y amplio la arquitectura bsica del procesador digital de seal DSPIC. 2.2. Ser capaz de manejar los puertos de Entrada y Salida, as como su correcta configuracin y uso en aplicaciones. 2.3. Utilizar la Herramienta MPLAB IDE para el desarrollo de Proyectos 2.4. Adquirir la capacidad de disear un programa utilizando el Lenguaje C30 para su construccin.

III. Desarrollo del Tema:


El desarrollo del contenido del tema, mencionado en la seccin I, se presentan en las siguientes pginas, presentando primero los fundamentos tericos necesarios para posteriormente continuar con la explicacin de algunos ejemplos (acompaados de cdigo en C30) de aplicacin (los ejemplos presentados se aplican para el dsPIC30F4011, pero los conceptos explicados son vlidos para otros dispositivos similares, salvo por algunas diferencias en su estructura.

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

1. Introduccin y arquitectura dsPIC


1.1. El procesador digital de seal dsPIC
Los procesadores digitales de seales (DSP) son microprocesadores diseados para ejecutar algoritmos matemticos repetitivos y tienen aproximadamente el mismo nivel de integracin y las mismas frecuencias de reloj que los microprocesadores de propsito general; sin embargo, los procesadores digitales de seales son ms rpidos (aproximadamente 2 o 3 veces ms veloces). La razn por la cual los procesadores digitales de seales aumentan su velocidad es porque cuentan con unidades aritmticas especializadas que pueden trabajar simultneamente.

1.1.1.

Arquitectura y caractersticas generales

El dsPIC30F4011 tiene una velocidad de procesamiento mxima de 30 MIPS (millones de instrucciones por segundo), lo cual quiere decir que tiene un reloj interno de 120 MHz. La arquitectura del Hardware es una modificacin de la Harvard, y requiere cuatro pulsos de reloj para incrementar el puntero de instrucciones. NOTA: todos los dsPIC vienen en dos versiones: 30 MIPS y 20 MIPS, y estn debidamente sealizados con 301 y 201 respectivamente en el empaque. El precio de los microprocesadores es diferente en cada caso. Las caractersticas bsicas del dsPIC se sealan a continuacin: o El registro de instrucciones tiene 24 bits de tamao con 16 bits para mantener los datos y 8 bits para la localizacin de comandos. La palabra en hardware tiene 16 bits o 2 bytes al igual que el bus de datos, lo que define al dsPIC como una maquina de de 16 bits. o Existen 30 fuentes de interrupciones, las cuales sern ampliamente explicadas cuando se desarrollen los programas. o La fuente de tensin puede ir de 2.5 V a 5 V con voltaje regulado. o Se tiene 30 pines de salidas o entradas generales, capaces de brindar o soportar 25 mA cada uno. Nunca se debe usar el procesador para manejar cargas de potencia, a pesar de que el dsPIC pueda soportarlo. Incluso el dsPIC puede soportar disipar 1 watt de potencia. o Tambin se tiene 3 temporizadores de 16 bits. o 6 pines de salida PWM (modulacin por ancho de pulso) o 9 pines conectados a mdulos conversores analgico a digital de 10 bits, que trabajan a 500 Ksps (kilo muestras por segundo)

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

o Debido a que el dsPIC es un procesador digital de seales, es capaz de realizar operaciones matemticas muy rpido, as la multiplicacin, suma y resta se realizan en un ciclo de reloj. o El dsPIC30F4011 tiene 48 KBytes de memoria Flash y 1 KByte de EEPROM

1.1.2.

La memoria de datos EEPROM

Como podemos observar en la figura la memoria del dsPIC esta dividida en dos grandes partes: una es el espacio de memoria para el usuario y otro es el espacio de memoria para configuracin. En el primer espacio nos interesa particularmente el rea de memoria de programa FLASH donde se ubicar el programa, y el rea de memoria EEPROM donde se ubicarn los datos. En el rea de registros de configuracin se ubican los registros con los cuales modificaremos el comportamiento del dsPIC.

Figura 1. Memoria del dsPIC (parte 1)

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

Figura 2. Memoria del dsPIC (parte 1).

1.1.3.

Pines y puertos de entrada y salida del dsPIC

La figura expuesta a continuacin, nos explicara la relacin entre el software del dsPIC y el hardware. Una lnea del cdigo de software que asigna 51 a un registro X, es una instruccin, en formato binario 51 se representa como 00110011, suponga que el registro X no tiene datos inicialmente y cada bit era cero, luego del comando X tendr sus 8 celdas con los datos asignados, cada cero y cada uno tiene un significado elctrico, pues as al tener cero quiere decir que hay una tensin de 0 Voltios y al tener 1 tenemos una tensin de 5 voltios.

Figura 3. Representacin Elctrica de un Byte.

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

De igual manera ocurre con las entradas y salidas del dsPIC, mientras en software tenemos 1 o 0 lgicos en los pines tendremos 0 o 5 voltios, a continuacin vemos el diagrama del dsPIC con todos sus pines, los cuales pasaremos a describir.

Figura 4. Pines de entrada/salida del dsPIC30F4011.

o MLCR o Master Clear Reset: la barra arriba de MCLR significa que es de lgica negativa, es decir al revs de lo normal, cuando se desea resetear se pone entonces a 0 y cuando no a 1. o AN0 a AN8 son canales de entrada analgica conectados a conversores de analgico a digital (ADC) de 10 bits incluidos en el dsPIC o Los pines CN0 a CN7, CN17 y CN18 tienen capacidad de notificacin de cambio de entrada, cada uno de estos pines genera una interrupcin si su estado de tensin DC cambia, para facilitar su uso se el dsPIC incluye pull-ups programable. o EMUD y EMUC, emulador de datos y reloj, son circuitos auxiliares usados para programar y correr. Estn diseados para trabajar con el MPLAB ICE 4000 Incircuit emulator, no usaremos estos. o INT0 a INT2, son tres pines de interrupcin, estos pines trabajan de manera similar que los pines CN, pero ellos son bits mas complejos dado que estos pueden detectar, selectivamente el cambio de estado de cada pin en el flanco de subida o bajada, adicionalmente son usados para el wake-up del DSPIC del modo sleep. La funcin INTx es excelente para monitorear pulsos externos.

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

o PWM1L, PWM1H a PWM3L, PWM3H son salidas de modulacin por ancho de pulso PWM. El DSPIC30F4011 esta especialmente diseado para aplicaciones de control de motores, y estos pines estn conectados a drivers de PWM complejos en el interior del dsPIC. o OSC1 y OSC2, son entradas de reloj de oscilador externo. o PGD y PGC, Datos y reloj de programacin, usados por ICD 2 o RB0 a RB8 son pines de E/S del puerto B, RC13 a RC15 son pines de E/S del puerto C, RD0 a RD3 son pines de E/S del puerto D, RE0 a RE5 y RE8 son pines de E/S del puerto E y RF0 a RF5 y RF8 son pines de E/S del puerto E. En conjunto son 30 pines de E/S digitales. Cada pin de E/S puede ser configurado como de entrada o salida, y se puede cambiar su configuracin durante el funcionamiento del dsPIC. o SCK1, SDI1, SDO1 y SS1 son: pines de reloj, entrada de datos, salida de datos y sincronizacin de esclavo del modulo SPI. o U1RX, U2RX y U1TX, U2TX son pines de recepcin y transmisin de los puertos seriales UART1 y UART2. Con estos mdulos se implementara una comunicacin serial RS232. Note tambin que los mdulos de UARTx son capaces de implementar otros protocolos seriales de comunicacin como RS488. VDD y VSS son fuente positiva y negativa para el voltaje lgico DC. VREF+ y VREF- son las referencias positiva y negativa analgicas. La fuente de voltaje analgico es AVDD y AVDSS. Cuando un perifrico es habilitado y el perifrico esta activamente manejando un pin asociado, el uso del pin como pin de salida de propsito general es deshabilitado. El pin de E/S puede ser ledo, pero el driver de salida del bit de puerto paralelo ser deshabilitado. Si un perifrico es deshabilitado, pero el perifrico no esta manejando un pin activamente, el pin puede ser manejado por un puerto. Todos los pines de puerto tienen tres registros directamente relacionados con la operacin del pin de puerto. El registro de direccin de datos (TRISx) determina si el pin es una entrada o una salida. Si el bit de direccin de datos es 1, entonces el pin es una entrada, todos los pines de los puertos son definidos como entradas despus de un Reset. o o o o Una escritura en PORTx escribe en el latch del puerto Una escritura en LATx tambin escribe en el latch del puerto. Una lectura en PORTx lee los datos de los pines de E/S directamente. Una lectura en LATx lee en el latch del puerto

Un puerto de E/S paralelo que comparte un pin con un perifrico esta, en general, subordinado al perifrico, las seales de control y datos del buffer salida del perifrico se proveen a un par de multiplexores. Los multiplexores escogen si el perifrico o el
ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

puerto asociado tienen la posesin de las seales de salida de datos y control. A continuacin se muestra como funciona esto en un grfico:

Figura 5. Pines del dsPIC30F4011.

1.2. El Entorno Mplab IDE


MPLAB IDE es un programa de software que corre en una PC convencional para desarrollar aplicaciones para los microcontroladores Microchip. Es denominado Entorno de Desarrollo Integrado (Integrated Development Environment), IDE en adelante, debido a que provee un entorno simple para desarrollar cdigo para microcontroladores. Es recomendable utilizar las actualizaciones de la ayuda On-line de MPLAB IDE para las ltimas versiones Se puede descargar el software MPLAB de www.microchip.com y guardarlo en cualquier carpeta de su computadora, de preferencia una que tenga puerto USB libre o puerto serial con conector DB9. Es recomendable bajarlo de la web del fabricante porque all se encuentra la ltima actualizacin del software mencionado. Despus de descargar el archivo ejecutable o comprimido, descomprimir y/o ejecutar el archivo setup.exe para instalar el programa. Acepte todas las opciones ofrecidas, excepto la instalacin del driver USB.

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

1.2.1.

Componentes de Mplab IDE

Los principales componentes del MPLAB IDE son los siguientes: o Administrador de Proyectos (Project Manager) El administrador de proyectos provee integracin y comunicacin entre el entorno de desarrollo (simulacin, configuracin, emulacin y depuracin) con las herramientas de programacin (lenguaje de programacion maquina, C30) o Editor El editor es un editor de texto se utiliza para escribir los cdigos fuente con muchas caractersticas para programacin y tambin sirve como ventana para la depuracin de los programas. o Ensamblador/Enlazador y Herramientas de Lenguaje El ensamblador puede ser usado solo sin ayuda para ensamblar un archivo, o puede ser usado como enlazador o linker para construir un proyecto de diferentes archivos fuente, libreras y objetos recompilados. El linker es responsable de posicionar el cdigo compilado en reas de memoria del microcontrolador destino. o Motores de Ejecucin (Execution Engines) Existe software de simulacin en MPLAB IDE para todos los dispositivos MCU PICmicro y dsPIC DSC. Estos simuladores utilizan una PC para simular las instrucciones y algunas funciones perifricas de los dispositivos MCU PICmicro y dsPIC DSC. Opcionalmente se tiene emuladores y depuradores en-circuito tambin disponibles para probar como corre la aplicacin en el hardware. o Herramientas de Lenguaje Compilador Los compiladores de MPLAB C18 y MPLAB C30 C de Microchip proveen cdigo totalmente integrado y optimizado. Los compiladores de HI-TECH, IAR, micro Engineering Labs, CCS y Byte Craft, pueden ser invocados por el administrador de proyectos de MPLAB IDE para compilar cdigo que es automticamente cargado en el debugger destino para instancias de prueba y verificacin. o Debugger o Depurador El depurador Microchip permite breakpoints, correr el programa paso a paso, ventanas de vistualizacion (Watch Windows) y todas las caracteristicas de un depurador moderno. Trabaja en conjunto con el editor para referirse a la informacin destino siendo el cdigo fuente depurado en realimentacin. o Programador PICSTART Plus, PICkit 1 y 2, PRO MATE II, MPLAB PM3 tanto como MPLAB ICD 2 pueden programar codigo en los dispositivos destino. MPLAB IDE ofrece control total sobre programacin de cdigo y datos, tanto como de bits configuracin para definir los diferentes modos de operacin de los microcontroladores destino o dsPIC. o Emulador en-Circuito (In-Circuit Emulators) MPLAB ICE 2000 y MPLAB ICE 4000 son emuladores con caractersticas completas para los dispositivos MCU PICmicro y dsPIC DSC. Ellos conectan la PC va puertos
ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

I/O y permiten un control total sobre la operacin de los microcontroladores en las aplicaciones destino. o Depurador en-Circuito (In-Circuit Debugger) MPLAB ICD 2 provee una alternativa economica a un emulador. Usando algunos de los recursos sobre en chip, MPLAB ICD 2 puede descargar cdigo en el microcontrolador destino insertado en la aplicacin, fijar breakpoints, ejecutar en pasos simples y monitorear los registros y variables.

1.2.2.

Creacin de un nuevo proyecto

El siguiente paso es crear el proyecto usando el Asistente de Proyectos (Project Wizard). El Asistente de proyectos nos ayuda a crear el proyecto, as como organizar los archivos internos a ser compilados y ensamblados. Para abrir el asistente se debe ejecutar: Project>Project Wizard.

Figura 6. Pines del dsPIC30F4011. Desde el dilogo de Bienvenida, presione en Next> para continuar.

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

Figura 7. Pines del dsPIC30F4011. El siguiente dilogo (paso uno) nos permite seleccionar el dispositivo, el cual ya lo habamos configurado en el paso anterior. Asegrese que indique dsPIC30F4011 o el dispositivo dsPIC adecuado. Configurando las Herramientas del Lenguaje El paso dos del Asistente Del Proyecto (Project Wizard) permite configurar las herramientas de los lenguajes a ser utilizados en el proyecto. o Seleccione "Microchip C30 Toolsuite " en la lista del cuadro del Active Toolsuite. o Luego "MPLAB C30 C Compiler (pic 30 gcc.exe)" o La ubicacin aparecer por defecto (Location: C:\Program Files\Microchip\MPLAB C30\bin\pic30-gcc.exe)

Figura 8. Pines del dsPIC30F4011.


ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

Nombrando al Proyecto El paso tres del Asistente de Proyectos nos permite nombrar al Proyecto y ubicarlo en un flder especfico. Luego de ingresar el nombre y la ruta deseados, Presione Next>. Es recomendable utilizar nombres de proyectos con numeracin para el control de versiones.

Figura 9. Pines del dsPIC30F4011. Aadiendo Archivos al Proyecto En el paso cuatro el Asistente de Proyecto nos brinda la posibilidad de adicionar archivos al nuevo proyecto. En nuestro caso no es necesario utilizar esta funcionalidad ya que procederemos a crear desde cero un proyecto, para ello presionar Next.

Figura 10. Pines del dsPIC30F4011. Resumen de la configuracin Al final de los pasos el Asistente del Proyecto nos brinda un resumen con la configuracin dada en los pasos anteriores.
ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

Figura 11. Pines del dsPIC30F4011.

Figura 12. Pines del dsPIC30F4011. Construyendo el Proyecto Desde el menu del Proyecto, se puede compilar, ensamblar y enlazar los archivos actuales. An no se tiene cdigo especfico de la aplicacin, pero esto nos asegurar que las variables de entorno del proyecto estn configuradas apropiadamente. Para construir el proyecto seleccione cualquiera de las siguientes opciones: o Project>Build All o Click Derecho en el nombre del Proyecto en la Ventana del Proyecto y Seleccionar Build All o Click en el cono Build All en la barra de herramientas del Proyecto. Mantenga el mouse sobre el icono para ver el pop-up del texto que representan. Nota: Antes de construir todo el proyecto, se debe agregar las cabeceras del DSPIC asignado en el enlazador del compilador C (C:\Program Files\Microchip\MPLAB C30\lib)

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

Figura 13. Pines del dsPIC30F4011.

Figura 14. Pines del dsPIC30F4011. La ventana de salida del resultado de la construccin del proceso es como sigue:

Figura 15. Pines del dsPIC30F4011. Con esto se ha completado la compilacin exitosa del proyecto.

1.3. El Lenguaje de programacin C30


MPLAB C-30 es una adaptacin al ANSI x3.159-1989, optimizando el compilador C que incluye extensiones para aplicaciones de control con el dsPIC DSC. El compilador es una aplicacin para entorno Windows que provee una plataforma de desarrollo en cdigo C. MPLAB C-30 compila archivos fuente en C, produciendo archivos en lenguaje ensamblador. Estos archivos compilados y producidos por la compilacin se enlazan con otros archivos objeto y libreras para producir la aplicacin final en ejecutable en formato COFF o ELF. Los archivos COFF o ELF pueden ser cargados por MPLAB IDE, donde pueden ser probados y depurados, o tambin utilizar el utilitario de conversin para pasar de COFF o ELF a formato hex de Intel, adecuado para cargarlo
ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

en la lnea de comandos para la simulacin o el respectivo programador. En la figura siguiente vemos el diagrama de flujo de desarrollo del software.

Figura 16. Pines del dsPIC30F4011. o Estndar ANSI C El compilador MPLAB C30 es un compilador totalmente validado que conforma el estndar ANSI C como fue definido por la especificacin ANSI descrita por Kernighan y Ritchies. El estndar ANSI C incluye extensiones a la definicin original C que ahora con caractersticas estndar del lenguaje. Estas extensiones incrementan la portabilidad y ofrece una mayor capacidad. o Optimizacin El compilador utiliza un conjunto sofisticado de optimizacin que emplea muchas tcnicas avanzadas para generar eficiente y compacto cdigo desde cdigo fuente C. Esta optimizacin toma ventaja determinadas particularidades del dsPIC. o Soporte de libreras del Estndar ANSI C MPLAB C30 es distribuido con una completa librera del estndar ANSI C. Todas las funciones de la librera han sido validadas, y conforman el estndar de librera ANSI C. Las libreras incluye funciones para manejo de caracteres, asignacin de memoria dinmica, conversin de datos y funciones matemticas. Las funciones estndar de Entrada/Salida para la manipulacin de archivos tambin estn incluidas y distribuidas, las cuales soportan acceso total al sistema de archivos usando el simulador de lnea de comandos.

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

o Modelo de Memoria Flexible El compilador soporta modelo de cdigo y datos, pequeo y grande. El modelo de cdigo pequeo tiene la ventaja de tener formas ms eficientes de instrucciones call y branch, mientras que el modelo de datos pequeo soporta el uso de instrucciones compactas para acceder a los datos. o Driver del compilador MPLAB C30 incluye un potente driver de programa de lnea comandos. Usando el driver de programa, programas de aplicacin pueden ser compilados, ensamblados y enlazados en un simple paso.

1.3.1.

Programa Hola Mundo! y puertos de E/S

Todos los pines de puerto tienen tres registros directamente relacionados con la operacin del pin de puerto. El registro de direccin de datos (TRISx) determina si el pin es una entrada o una salida. Si el bit de direccin de datos es 1, entonces el pin es una entrada, todos los pines de los puertos son definidos como entradas despus de un Reset. o o o o Una escritura en PORTx escribe en el latch del puerto Una escritura en LATx tambin escribe en el latch del puerto. Una lectura en PORTx lee los datos de los pines de E/S directamente. Una lectura en LATx lee en el latch del puerto

Un puerto de E/S paralelo que comparte un pin con un perifrico esta, en general, subordinado al perifrico, las seales de control y datos del buffer salida del perifrico se proveen a un par de multiplexores. Los multiplexores escogen si el perifrico o el

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

puerto asociado tienen la posesin de las seales de salida de datos y control. A continuacin se muestra como funciona esto en un grafico:

A continuacin desarrollaremos nuestro primer programa en C30, podemos observar en el cdigo que para hacerse comentarios se debe iniciar con /* y terminar con */, tambin pueden hacerse con // pero solo para una lnea de comentario. Luego observamos la directiva #include <p30f4011.h> que contiene los nombres de los registros del dsPIC. Todo programa C, desde el ms pequeo hasta el ms complejo, tiene un programa principal que es con el que se comienza la ejecucin del programa. Este programa principal es tambin una funcin, pero una funcin que est por encima de todas las dems. Esta funcin se llama main().

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

Se ha incluido unas pocas lneas las cuales, realizan determinadas funciones como se comenta en el mismo programa, este programa pone un 1 lgico (5 Voltios) en los pines del puerto B del dsPIC, por lo que si tenemos LEDs en este puerto se encendern.

1.3.2.

Tipos de datos y variables

El C, como cualquier otro lenguaje de programacin, tiene posibilidad de trabajar con datos de distinta naturaleza: texto formado por caracteres alfanumricos, nmeros enteros, nmeros reales con parte entera y parte fraccionaria, etc. Adems, algunos de estos tipos de datos admiten distintos nmeros de cifras (rango y/o precisin), posibilidad de ser slo positivos o de ser positivos y negativos, etc. En este apartado se vern los tipos fundamentales de datos admitidos por el C. Ms adelante se ver que hay otros tipos de datos, derivados de los fundamentales. Los tipos de datos fundamentales del C se indican en la tabla 1.1. Las variables de registro puede usar uno o ms registros de trabajo. La palabra char hace referencia a que se trata de un carcter (una letra mayscula o minscula, un dgito, un carcter especial, ...). La palabra int indica que se trata de un nmero entero, mientras que float se refiere a un nmero real (tambin llamado de punto o coma flotante). Los nmeros enteros pueden ser positivos o negativos (signed), o bien esencialmente no negativos (unsigned); los caracteres tienen un tratamiento muy similar a los enteros y admiten estos mismos cualificadores. En los datos enteros, las palabras short y long hacen referencia al nmero de cifras o rango de dichos nmeros. En los datos reales las palabras double y long apuntan en esta misma direccin, aunque con un significado ligeramente diferente, como ms adelante se ver. Esta nomenclatura puede simplificarse: las palabras signed e int son las opciones por defecto para los nmeros enteros y pueden omitirse, resultando la Tabla 2.2, que indica la nomenclatura ms habitual para los tipos fundamentales del C. Tabla 1. Tipos de datos soportados por MPLAB C30.

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

Tabla 2.

Tipos de datos entero soportados por MPLAB C30.

Tabla 3.

Tipos de datos de Punto Flotante soportados por MPLAB C30.

Tabla 4.

Operadores de Asignacin.

Tabla 5.

Operadores Aritmticos.

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

Tabla 6.

Valores de Operadores Relacionales.

Tabla 7.

Operadores Relacionales.

Tabla 8.

Operadores Lgicos.

Tabla 9.

Operadores de Manejo de Bits.

Tabla 10. Operadores de Incremento y Decremento.

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

Tabla 11. Operadores de Desplazamiento de Bits.

Tabla 12. Operadores de Direccin & e Indireccin *.

Tabla 13. Expresiones Constantes.

Tabla 14. Identificadores.

Todos los punteros en MPLAB C30 son de 16 bits. Esto es suficiente para el acceso total al espacio de datos (64 KB) y el modelo de cdigo pequeo (32 K). En el modelo de cdigo grande (> 32 K), los punteros pueden resolver con handles, que es, el puntero es la direccin de una instruccin GOTO la cual es ubicada en los primeros 32 K del espacio de programa. Las cantidades de mltiples bytes son almacenadas en formato little endian, lo cual significa: El byte menos significativo es almacenado en la direccin mas baja y el bit menos significativo es almacenado en la posicin de bit numerada mas baja. Por ejemplo el valor 0x12345678 es almacenado en la direccin 0x100 como sigue:

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

Como otro ejemplo el valor de 0x12345678 es almacenado en los registros w4 y w5:

Modos de almacenamiento: El modo de almacenamiento de una variable Duracin y visibilidad de las variables. El tipo de una variable se refiere a la naturaleza de la informacin que contiene (ya se han visto los tipos char, int, long, float, double). El modo de almacenamiento (storage class) es otra caracterstica de las variables de C que determina cundo se crea una variable, cundo deja de existir y desde dnde se puede acceder a ella, es decir, desde dnde es visible. En C existen 4 modos de almacenamiento fundamentales: auto, extern, static y register. Seguidamente se exponen las caractersticas de cada uno de estos modos. o auto (automtico). Es la opcin por defecto para las variables que se declaran dentro de un bloque {...}, incluido el bloque que contiene el cdigo de las funciones. En C la declaracin debe estar siempre al comienzo del bloque. No es necesario poner la palabra auto. Cada variable auto es creada al comenzar a ejecutarse el bloque y deja de existir cuando el bloque se termina de ejecutar. Cada vez que se ejecuta el bloque, las variables auto se crean y se destruyen de nuevo. Las variables auto son variables locales, es decir, slo son visibles en el bloque en el que estn definidas y en otros bloques anidados3 en l, aunque pueden ser ocultadas por una nueva declaracin de una nueva variable con el mismo nombre en un bloque anidado. No son inicializadas por defecto, y antes de que el programa les asigne un valor pueden contener basura informtica (conjuntos aleatorios de unos y ceros, consecuencia de un uso anterior de esa zona de la memoria). o extern. Son variables globales, que se definen fuera de cualquier bloque o funcin, por ejemplo antes de definir la funcin main(). Estas variables existen durante toda la ejecucin del programa. Las variables extern son visibles por todas las funciones que estn entre la definicin y el fin del fichero. Para verlas desde otras funciones definidas anteriormente o desde otros ficheros, deben ser declaradas en ellos como variables extern. Por defecto, son inicializadas a cero. Una variable extern es definida o creada (una variable se crea en el momento en el que se le reserva memoria y se le asigna un valor) una sola vez, pero puede ser declarada (es decir, reconocida para poder ser utilizada) varias veces, con objeto de hacerla accesible desde diversas funciones o ficheros. Tambin estas variables pueden ocultarse mediante la declaracin de otra variable con el mismo nombre en el interior de un bloque. La variables extern permiten transmitir valores entre distintas funciones, pero sta es una prctica considerada como peligrosa.
ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

o static. Cuando ciertas variables son declaradas como static dentro de un bloque, estas variables conservan su valor entre distintas ejecuciones de ese bloque. Dicho de otra forma, las variables static se declaran dentro de un bloque como las auto, pero permanecen en memoria durante toda la ejecucin del programa como las extern. Cuando se llama varias veces sucesivas a una funcin (o se ejecuta varias veces un bloque) que tiene declaradas variables static, los valores de dichas variables se conservan entre dichas llamadas. La inicializacin slo se realiza la primera vez. Por defecto, son inicializadas a cero. Las variables definidas como static extern son visibles slo para las funciones y bloques comprendidos desde su definicin hasta el fin del fichero. No son visibles desde otras funciones ni aunque se declaren como extern. sta es una forma de restringir la visibilidad de las variables. Por defecto, y por lo que respecta a su visibilidad, las funciones tienen modo extern. Una funcin puede tambin ser definida como static, y entonces slo es visible para las funciones que estn definidas despus de dicha funcin y en el mismo fichero. Con estos modos se puede controlar la visibilidad de una funcin, es decir, desde qu otras funciones puede ser llamada. o register. Este modo es una recomendacin para el compilador, con objeto de que si es posible ciertas variables sean almacenadas en los registros de la CPU y los clculos con ellas sean ms rpidos. No existen los modos auto y register para las funciones.

1.3.3.

Lazos if-else, while y for

En la sentencia de control if permite ejecutar o no una sentencia simple o compuesta segn se cumpla o no una determinada condicin. Esta sentencia tiene la siguiente forma general: if (expresion) sentencia; Se evala expresion. Si el resultado es true (#0), se ejecuta sentencia; si el resultado es false (=0), se salta sentencia y se prosigue en la lnea siguiente. Hay que recordar que sentencia puede ser una sentencia simple o compuesta (bloque { ... })

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

En el caso de la sentencia if-else, se permite realizar una bifurcacin, ejecutando una parte u otra del programa segn se cumpla o no una cierta condicin. La forma general es la siguiente: if (expresion) sentencia_1; else sentencia_2; Se evala expresion. Si el resultado es true (#0), se ejecuta sentencia_1 y se prosigue en la lnea siguiente a sentencia_2; si el resultado es false (=0), se salta sentencia_1, se ejecuta sentencia_2 y se prosigue en la lnea siguiente. Hay que indicar aqu tambin que sentencia_1 y sentencia_2 pueden ser sentencias simples o compuestas.

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

La sentencia while permite ejecutar repetidamente, mientras se cumpla una determinada condicin, una sentencia o bloque de sentencias. La forma general es como sigue: while (expresion_de_control) sentencia;

Se evala expresion_de_control y si el resultado es false se salta sentencia y se prosigue la ejecucin. Si el resultado es true se ejecuta sentencia y se vuelve a evaluar expresion_de_control (evidentemente alguna variable de las que intervienen en expresion_de_control habr tenido que ser modificada, pues si no el bucle continuara indefinidamente). La ejecucin de sentencia prosigue hasta que expresion_de_control se hace false, en cuyo caso la ejecucin contina en la lnea siguiente a sentencia. En otras palabras, sentencia se ejecuta repetidamente mientras expresion_de_control sea true, y se deja de ejecutar cuando expresion_de_control se hace false. Obsrvese que en este caso el control para decidir si se sale o no del bucle est antes de sentencia, por lo que es posible que sentencia no se llegue a ejecutar ni una sola vez.

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

La forma general de la sentencia for es la siguiente: for (inicializacion; expresion_de_control; actualizacion) sentencia;

Donde sentencia puede ser una nica sentencia o un bloque encerrado entre llaves {...}. Antes de iniciarse el bucle se ejecuta inicializacion, que es una o ms sentencias que asignan valores iniciales a ciertas variables o contadores. A continuacin se evala expresion_de_control y si es false se prosigue en la sentencia siguiente a la construccin for; si es true se ejecutan sentencia y actualizacion, y se vuelve a evaluar expresion_de_control. El proceso prosigue hasta que expresion_de_control sea false. La parte de actualizacion sirve para actualizar variables o incrementar contadores

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

Un ejemplo de la sentencia switch es el siguiente: switch (cmd) { case 0: printf("cmd 0"); break; case 1: printf("cmd 1"); break; default: printf(comando no vlido"); break; }

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

1.3.4.

Funciones

La definicin de una funcin consiste en la definicin del cdigo necesario para que sta realice las tareas para las que ha sido prevista. La definicin de una funcin se debe realizar en alguno de los ficheros que forman parte del programa. La forma general de la definicin de una funcin es la siguiente: tipo_valor_retorno nombre_funcion(lista de argumentos con tipos) { declaracin de variables y/o de otras funciones; codigo ejecutable; return (expresin); // optativo } La primera lnea recibe el nombre de encabezamiento (header) y el resto de la definicin es el cuerpo (body) de la funcin. Cada funcin puede disponer de sus propias variables, declaradas al comienzo de su cdigo. Estas variables, por defecto, son de tipo auto, es decir, slo son visibles dentro del bloque en el que han sido definidas, se crean cada vez que se ejecuta la funcin y permanecen ocultas para el resto del programa. Si estas variables de definen como static, conservan su valor entre distintas llamadas a la funcin. Tambin pueden hacerse visibles a la funcin variables globales definidas en otro fichero (o en el mismo fichero, si la definicin est por debajo de donde se utilizan), declarndolas con la palabra clave extern. Los primeros ocho registros de trabajo W0-W7 son usados para los parmetros de la funcin. Los parmetros son asignados a registros en orden de izquierda a derecha, y un parmetro es asignado al primer registro disponible que es alineado apropiadamente. En el siguiente ejemplo todos los parmetros son pasados en registros, sin embargo no estn en el orden en que ellos aparecen en la declaracin. Este formato permite al compilador MPLAB C30 hacer un uso ms eficiente de los registros de parmetros disponibles.

Cuando una funcin es ejecutada, puede devolver al programa que la ha llamado un valor (valor de retorno), cuyo tipo debe ser especificado en el encabezamiento de la funcin (si no se especifica, se supone por defecto el tipo int). Si no se desea que la funcin devuelva ningn valor, el tipo del valor de retorno deber ser void. La sentencia return permite devolver el control al programa que llama. Puede haber varias sentencias
ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

return en una misma funcin. Si no hay ningn return, el control se devuelve cuando se llega al final del cuerpo de la funcin. Le palabra clave return puede ir seguida de una expresin, en cuyo caso sta es evaluada y el valor resultante devuelto al programa que llama como valor de retorno. La definicin de esta funcin podra ser como sigue:

En el siguiente ejemplo se muestra la forma de utilizar funciones en el Mplab con el lenguaje de programacin C30, el programa llama la funcin suma definida previamente en un archivo de funciones:

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

1.3.5.

Proyecto 1: Secuencia de bits

Por el puerto B, se mostrar las siguientes secuencias de bits: 10000000 00000001 10000001 01000000 00000010 01000010 00100000 00000100 00100100 00010000 00001000 00011000 00001000 00010000 00100100 00000100 00100000 01000010 00000010 01000000 10000001 00000001 10000000 01000010 10000000 00000001 01000000 00000010 Estas secuencias deben repetirse indefinidamente. Ayuda: La manipulacin de los datos se puede hacer por medio de nmeros decimales, hexadecimales o binarios, por ejemplo: DATO = 10 es lo mismo que poner: DATO = 0x000A o tambin: DATO= 0b0000000000001010. Este tipo de expresiones tambien se puede usar lazos if, for o while, por ejemplo: if(VALOR==0x01B0)

1.4. Manejo de dispositivos externos


1.4.1. Circuito bsico para el funcionamiento del dsPIC
Una de las primeras cosas que se debe hacer cuando se hace un circuito esquemtico nuevo despus de poner el dsPIC es colocar el oscilador. Muchos diseadores los consideran como lo primero y mas importante. Existen como mnimo cinco opciones que nosotros podemos usar como generadores de pulsos de reloj para el dsPIC30F4011, algunas de estas opciones son validas para otros modelos de dsPIC de microchip. La opcin ms comn es usar un oscilador de cristal y dos condensadores de carga. Otra opcin es usar un resonador cermico, dado que tiene una buena estabilidad en temperatura y los condensadores de carga estn incluidos. Excepto por la frecuencia base de si mismo, la cual puede variar ligeramente, un resonador cermico es un buen reemplazo para el oscilador de cristal, por que son muy estables en el tiempo y sobre grandes variaciones de temperatura, tambin el precio es mas cmodo que el de un cristal.
ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

La tercera opcin es usar un circuito integrado driver de reloj (generador de pulsos). Generalmente esta opcin no se usa porque requiere hacer mas conexiones para la alimentacin del IC y es tambin es mas caro. La cuarta opcin es usar un oscilador RC externo, esta opcin es pobre porque es muy inestable a variaciones de temperatura. La quinta opcin es usar el oscilador interno. Se recomienda usar un cristal de 7.3728 MHz debido a que el dsPIC tiene un PLL interno de 4, 8 y 16 tiempos. Un PLL de 16 tiempos significa: 16 * 7.3728 MHz = 117.9648 MHz, el cual esta mas prximo a los 120 MHz de mxima frecuencia interna que soporta el dsPIC.

Figura 17. Circuito con oscilador de cristal recomendado.

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

Figura 18. Circuito con resonador cermico. El segundo circuito que necesita el dsPIC para trabajar es una fuente de alimentacin con voltaje regulado. A pesar de que el dsPIC es suficientemente robusto para soportar variaciones de voltaje de 2.5V a 5V sin problemas, es obligatorio tener tensin constante, para tener as niveles lgicos constantes. Para esto se recomienda usar circuitos reguladores de tensin el circuito que se muestra a continuacin es una buena opcin.

Figura 19. Circuito de la fuente de alimentacin recomendada.

ADVANCED VISION BUSINESS TECHNOLOGIES Calle Natalio Sanchez N 251 Jess Mara - Lima- 11 Per Telfax: (51-1) 332-0150 Cel.: (51-1) 9 9943-9338 E-mail: sales@avb-tech.com Pgina Web: www.avb-tech.com

También podría gustarte