Sie sind auf Seite 1von 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

1
cual me lleva a pensar como seria programar una aplicación TCP/IP en assembler, o una aplicación
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.

2
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
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
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
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
Seleccionamos el dispositivo con el cual vamos a trabajar.

Indicamos que vamos a trabajar con el compilador C18.

7
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
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
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
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
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
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 Finales
A 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 conectar
y 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
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

Das könnte Ihnen auch gefallen