iniciando c

14
Programando en C En la actualidad existe una enorme variedad de lenguajes de programación para todo tipo de medios electrónicos capaces de interactuar con un usuario. Para computadoras, teléfonos, automatismos y, por supuesto para microcontroladores que es en esencia lo que todos estos dispositivos programables tienen en su interior. Dentro de este vasto universo, siempre hay una etapa considerada “el inicio del aprendizaje”. La mayoría de las personas no comienzan sus experiencias desarrollando un programa capaz de controlar un sistema complejo, sino que intentan partir de un logro mínimo y escalar en complejidad sus conocimientos. Nosotros iniciaremos esta primera experiencia enciendo y apagando un LED, nuestro equivalente al Hola Mundo! de la programación clásica. Usaremos para esto el compilador C18 y el entorno de programación (IDE) será MPLAB ambos se descargan de manera libre desde el sitio de Microchip. Mucho se escucha del C, pero en definitiva que es C. C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B. Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones. Se trata de un lenguaje denominado de medio nivel, pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel, C ha sido siempre por excelencia el lenguaje para el Hardware con el podemos hacer las mismas cosas que en assembler pero de manera menos confusa y con un código mas portable ya que cuando escribimos en C no necesitamos conocer los códigos del assembler del micro que estamos usando esto implica que en un momento resulta rentable por los costos del micro programar Microchip pero mas adelante puede servir programar cualquier otro micro que tenga un compilador que siga los lineamientos del ANSI C, solo cambiando los encabezados del programa (definiciones de registros y características propias del hardware del micro) podemos portarlo a otras plataformas sin necesidad de conocer el assembler de este nuevo micro. En el caso del C para PIC´s ha sido siempre un tema de discusión, como un mantra que se repite una y otra vez escuchamos que los PIC no son aptos para ser programados en C, escuchamos muchas veces que lo mejor que existe para micros en general es assembler, y si, hace diez años eso era verdad!!!! Por ejemplo la serie 16xx de PIC no es adecuada para ser programada en C, su CPU no está optimizada para eso y unas pocas líneas de código agotará su memoria sin embargo a partir de la serie 18 de PIC´s lo primero que leemos en su manual es: C Compiler Optimized Architecture, Optional extended instruction set designed to optimize re-entrant code. Su CPU está preparada para ser programada en C y es una opción programarlos en assembler (lo cual me lleva a pensar como seria programar una aplicación TCP/IP en assembler, o una aplicación 1

Upload: toni

Post on 06-Jul-2015

152 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Iniciando c

Programando en C En la actualidad existe una enorme variedad de lenguajes de programación para todo tipo de medios electrónicos capaces de interactuar con un usuario. Para computadoras, teléfonos, automatismos y, por supuesto para microcontroladores que es en esencia lo que todos estos dispositivos programables tienen en su interior. Dentro de este vasto universo, siempre hay una etapa considerada “el inicio del aprendizaje”. La mayoría de las personas no comienzan sus experiencias desarrollando un programa capaz de controlar un sistema complejo, sino que intentan partir de un logro mínimo y escalar en complejidad sus conocimientos.

Nosotros iniciaremos esta primera experiencia enciendo y apagando un LED, nuestro equivalente al Hola Mundo! de la programación clásica.Usaremos para esto el compilador C18 y el entorno de programación (IDE) será MPLAB ambos se descargan de manera libre desde el sitio de Microchip.

Mucho se escucha del C, pero en definitiva que es C. C es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B.Al igual que B, es un lenguaje orientado a la implementación de Sistemas Operativos, C es apreciado por la eficiencia del código que produce y es el lenguaje de programación más popular para crear software de sistemas, aunque también se utiliza para crear aplicaciones.

Se trata de un lenguaje denominado de medio nivel, pero con muchas características de bajo nivel. Dispone de las estructuras típicas de los lenguajes de alto nivel pero, a su vez, dispone de construcciones del lenguaje que permiten un control a muy bajo nivel, C ha sido siempre por excelencia el lenguaje para el Hardware con el podemos hacer las mismas cosas que en assembler pero de manera menos confusa y con un código mas portable ya que cuando escribimos en C no necesitamos conocer los códigos del assembler del micro que estamos usando esto implica que en un momento resulta rentable por los costos del micro programar Microchip pero mas adelante puede servir programar cualquier otro micro que tenga un compilador que siga los lineamientos del ANSI C, solo cambiando los encabezados del programa (definiciones de registros y características propias del hardware del micro) podemos portarlo a otras plataformas sin necesidad de conocer el assembler de este nuevo micro.

En el caso del C para PIC´s ha sido siempre un tema de discusión, como un mantra que se repite una y otra vez escuchamos que los PIC no son aptos para ser programados en C, escuchamos muchas veces que lo mejor que existe para micros en general es assembler, y si, hace diez años eso era verdad!!!!Por ejemplo la serie 16xx de PIC no es adecuada para ser programada en C, su CPU no está optimizada para eso y unas pocas líneas de código agotará su memoria sin embargo a partir de la serie 18 de PIC´s lo primero que leemos en su manual es: C Compiler Optimized Architecture, Optional extended instruction set designed to optimize re-entrant code.Su CPU está preparada para ser programada en C y es una opción programarlos en assembler (lo cual me lleva a pensar como seria programar una aplicación TCP/IP en assembler, o una aplicación

1

Page 2: Iniciando c

USB, o la simple acción de tomar cincuenta muestras en un canal analógico y promediarlas, un verdadero dolor de cabeza).

El C es definitivamente un estándar hoy en día en el mundo de los microcontroladores y aprender a programar en C ya no es una opción si queremos seguir en el juego.El C es el origen de lenguajes como C++ (El C con objetos), a su vez C++ es el origen de Java, luego los conocidos lenguajes de web´s como Javascript, o para celulares como Android y muchos otros todos tienen un lejano origen común el C.

Que necesito tener para empezar.

Bueno son varias las cosas que necesitamos pero afortunadamente la mayoría son fáciles de conseguir.He aquí una lista de las cosas con las que tenemos que contar para empezar.

• El entorno de trabajo MPLAB IDE que se descarga desde el sitio de Microchip. • El compilador C18 versión student que también descargamos del mismo sitio.• Un microcontrolador PIC18F4620.• Un protobard de trabajo y varios componentes electrónicos comunes (ver la lista de

componentes del curso).• Un programador de PIC´s. Cualquiera que soporte estos nuevos micros, a lo largo del curso

nosotros usamos nuestro programador de PIC´s pero cualquiera será útil.

Trabajo montado en protoboard Podemos usar cables para protoboard

Un protoboard simple es adecuado para el inicio.

2

Page 3: Iniciando c

Como instalar C18.

Debemos tener ya instalado el MPLAB IDE que nos permitirá manejar la mayoría de los detalles del compilador, ensamblador y enlazador, quedando la tarea de escribir y depurar la aplicación como foco principal del programador.

C18 es un compilador cruzado que se corre en un PC Windows y produce código que puede ser ejecutado por la familia de microcontroladores de Microchip PIC18XXXX. Al igual que un ensamblador, el compilador traduce las declaraciones humanas en unos y ceros para ser ejecutados por el microcontrolador.

Sigue la norma ANSI C, salvo en las particularidades de los microcontroladores.Dispone de librerías para comunicaciones SPI, I2C, UART, USART, generación PWM, cadena de caracteres y funciones matemáticas de coma flotante maneja números reales de 32 bits.

3

Page 4: Iniciando c

Ya descargado seguimos los pasos de instalación.

Es recomendable respetar la carpeta donde se instalará .MPLAB C18 funciona en todos los Windows icluso Win7 64bit´s sin problemas sin embargo en este último los vínculos entre el compilador y el IDE pueden ser problemáticos si no se respeta la carpeta por defecto de instalación.

4

Page 5: Iniciando c

Estas dos ventanas son las que enlazaran el compilador al MPLAB IDE deben estar tildados los items como se observa en las capturas.Luego de todo esto el instalador lanzará la aplicación. Al terminar debemos reiniciar Windows para validar los enlaces en el entorno (No olvidar).

5

Page 6: Iniciando c

Como crear un proyecto en MPLAB C18.

Ubicamos la lengüeta Project > Proyect Wizard.

Esto inicia el asistente que nos guiará en la creación del proyecto completo.

6

Page 7: Iniciando c

Seleccionamos el dispositivo con el cual vamos a trabajar.

Indicamos que vamos a trabajar con el compilador C18.

7

Page 8: Iniciando c

Recordar que MPLAB es un IDE, un entorno de desarrollo y con se puede trabajar con varios compiladores, debemos escoger el que nos interesa por defecto MPLAB compila en assembler.Observe la captura de pantalla, su configuración debe ser la misma para poder compilar con C18.

Puede suceder que junto a las herramientas de C18 aparezcan tildes en rojo.Esto nos dice que algo ha salido mal en el enlace entre el IDE y el compilador y por tanto el enlace deberemos hacer “a mano”, veremos esto mas adelante.

Creamos una carpeta donde estará nuestro proyecto. Es importante acostumbrarnos a crear una carpeta nueva por cada proyecto.

De este modo todo lo referente a un proyecto estará siempre dentro de la carpeta del proyecto y si reformamos una librería o un archivo específico este archivo reformado solo es válido para ese

8

Page 9: Iniciando c

proyecto en particular y no alteramos el resto de nuestras aplicaciones.Esto de clonar los archivos y librerías en cada proyecto puede parecer redundante y desperdiciar espacio en nuestra computadora sin embargo estos archivos son todos pequeños y el sacrificio de espacio es despreciable con los problemas que nos evitamos en el futuro.

9

Page 10: Iniciando c

Finalmente tendremos un proyecto construido pero que todavía no tiene utilidad ya que no hay archivos en el para compilar. Para compilar utilizo la opción Buill All.MPLAB no compila archivos sueltos, es decir no puedo tomar un archivo.c y convertirlo en un ejecutable para un PIC, como tampoco puedo compilar un proyecto como el que te tenemos de hecho si intento compilar este proyecto vacio se genera un error.

Donde se me dice que el proyecto no contiene archivos.El siguiente paso será agregar archivos al proyecto, es importante que el archivo que agreguemos al

10

Page 11: Iniciando c

proyecto sea con la extensión c, debería quedar algo como mi_trabajo.c .Para crear este archivo punto c puedo ir a File> New o haciendo click sobre la hojita en blanco sobre el margen izquierdo de la paleta de herramientas.

Una vez que he creado mi archivo de trabajo y guardado dentro de la carpeta donde esta el proyecto puedo incorporarlo al proyecto.Para esto coloco el cursor sobre Source File + botón derecho y en Add Files busco el archivo que pretendo incorporar al proyecto.

Finalmente el proyecto tiene un archivo asociado y entonces si estaré en condiciones de escribir código en el y compilar el

11

Page 12: Iniciando c

proyecto.Algunos detalles a observar.El árbol de proyecto de MPLAB tiene varias carpetas, estas carpetas son usadas para manejar las dependencias del proyecto con los archivos asociados a el.En cada una de estas carpetas se asocia un tipo de archivo, por ejemplo en Source Files nuestros archivos c, en Header Files los archivos de cabecera o archivos punto h, etc.En rigor de verdad no es que en estas carpetas guardamos archivos mas bien estas carpetas se usan como vínculos a los archivos que vamos a asociar al proyecto.Es muy importante trabajar prolijos y saber exactamente que archivos estamos asociando a los proyectos puesto que suele pasar que compilamos un proyecto que no hace lo esperado y en realidad estamos compilando el proyecto correcto pero con el archivo fuente (nuestro programa) equivocado.

Programar el PIC.

Para enviar nuestro código finalmente a la memoria del microcontrolador podemos usar cualquier programador de PIC´s. El resultado de la compilación exitosa genera un archivo punto hex de igual nombre que el proyecto y es este archivo el que finalmente enviamos a la memoria del controlador.

La configuración del programador depende de cada placa programadora. En el caso de nuestra placa programadora esta trabaja conectada y administrada directamente por el MPLAB por lo que no es necesario desmontar el PIC del protoboard, se trabaja “On Line” con el PIC lo que hace el trabajo mucho mas dinámico y rápido.

12

Page 13: Iniciando c

Si no tiene programador de PIC y quiere armar uno usted mismo puede solicitar el envío de la placa programadora Firtec mas el firmware de control.

Comentarios FinalesA lo largo de los años hemos notado que cuando se toman cursos con microcontroladores los alumnos se concentran en el micro y descuidan puntos que parecen ser menos importantes como la prolijidad en el armado (solo importa que funcione) y la fuente de alimentación, con la cual energizamos la electrónica que estamos probando.

Fuente de alimentación.

La alimentación del circuito es parte fundamental en lo que estamos probando, en definitiva nuestra aplicación se está alimentando desde esta fuente. Si observa la foto notará un conector de alimentación montado sobre el mismo protoboard, incluso se ha acoplado un switch para evitar tener que conectary desconectar la aplicación desde el conector.Esto último no es algo menor ya que si nos detenemos a pensar que estamos hablando de un microcontrolador que ejecuta comandos a velocidades muy altas (milésimas de millonésimas de segundos) una conexión/desconexión dudosa, cables enroscados, cables sueltos, fichas malas pueden ocasionar un arranque del microcontrolador errático.Preste mucha atención a su fuente de alimentación y a sus conexiones al protoboard, si utiliza fuentes switching asegúrese que es del tipo adecuado para alimentar circuitos digitales (No utilice las fuentes de cargadores para celulares o baterías en general).

13

Page 14: Iniciando c

Prolijidad en el armado.

El armado de los circuitos es cosa de considerar, haga costumbre el armado prolijo, usted debe estar seguro que si algo no funciona es porque su código tiene un error, es muy molesto y complicado andar lidiando con falsos contactos o ruidos en el protoboard, usted debe estar seguro que su electrónica no tiene problemas para si concentrar su atención en el software que está escribiendo para su aplicación.

Algunas cosas para remarcar.

MPLAB no compila archivos sueltos compila proyectos, debemos construir proyectos con nuestros archivos.

Los proyectos se construyen en carpetas individuales, no mezcle archivos de distintos proyectos!!!!!!.

Debe usted estar seguro que su electrónica no tiene problemas, si algo no funciona sospechar que algo en el software que ha escrito no cumple con el tratamiento lógico del problema pero descartar problemas en conexiones, alimentación, cables sueltos, etc.

14