Você está na página 1de 10

PROGRAMACION DE MICROCONTROLADORES

PIC EN LENGUAJE EN LENGUAJE C


Introduccin_______________________________________
Mi ms sincero agradecimiento por haber solicitado este documento
que contiene las pautas generales del curso. En esta breve
introduccin comentar que Balddesign desarrolla sistemas embebidos
desde hace ms de 15 aos y que a lo largo de este periodo tiempo
ha adquirido una vasta experiencia en el diseo e implementacin de
software para Microcontroladores PIC. La intencin en este curso es
transmitir todo este conocimiento de una forma simple y conceptual
que le permita al alumno comenzar a desarrollar en poco tiempo sus
propios programas. El avance tecnolgico y las mejoras que las
empresas como Microchip han implementado en sus uC, tanto en
perifricos internos como en espacio de memoria, han hecho que C,
sea el lenguaje por excelencia para estos dispositivos haciendo que
cada vez ms personas se animen a desarrollar sus propias
aplicaciones.
La Idea___________________________________________
Desarrollar un curso que comience de cero con el nico objetivo que
el alumno obtenga los conocimientos necesarios para que pueda
realizar programas en lenguaje C para toda la lnea baja y media de
Microcontroladores Pic.
Compilador ________________________________________
La experiencia en este mbito demuestra que las nicas herramientas
de software que funcionan de manera adecuada son las desarrolladas
por los fabricantes de estos dispositivos, por lo tanto, el aprendizaje
se basa sobre la plataforma del nuevo compilador XC8 diseado por
Microchip, en su versin free.
Entorno ___________________________________________
Utilizaremos el nuevo MPLABX que hace un par de aos dejo de ser
una versin Beta para convertirse en una realidad, el mismo, nos
permitir escribir cdigo en lenguaje C, debugguear, simular y
enlazarlo con el compilador XC8 para generar nuestro archivo .Hex .
Descarga __________________________________________
Tanto el compilador como el entorno de desarrollo se pueden
obtener de forma gratuita en www.microchip.com, ambos son
multiplataforma y la descarga se deber realizar de acuerdo al
sistema operativo que se est utilizando (Windows,Linux o MAC).

www.balddesign.com.ar

info@balddesign.com.ar

Programador ______________________________________
En el mercado existen una gran variedad de programadores, entre los
cuales podemos encontrar los originales de Microchip como son
PicKit2, PicKit3, ICD2, ICD3, y los de fabricacin de terceros como el
popular PicKit2 Clone, el alumno decidir que placa quiere utilizar.
Para los indecisos la sugerencia es pickt2 clone.
Placa de Entrenamiento ______________________________
Cuando estamos desarrollando una aplicacin o simplemente viendo
el comportamiento de unas lneas de cdigo, es recomendable
verificar el funcionamiento del sistema en un circuito real, para lo
cual, se podr utilizar cualquier placa que tengamos al alcance y que
contenga los componentes mnimos y necesarios para realizar los
ensayos. Como sugerencia para aquellos que no posean ninguna, la
opcin ms econmica es un protoboard.
Programacin ______________________________________
Se expone una estructura de diseo muy difcil de encontrar en
cualquier escuela, libro o publicacin de Internet, ya que plantea
muchas tcnicas novedosas que dejar atrs el mtodo tradicional de
programacin. Hoy en da, y debido al gran avance tecnolgico, el
nivel de exigencia que una aplicacin requiere es cada vez mayor, por
eso, organizar un programa pensando linealmente trae como
consecuencia el incremento de obstculos que seran difciles de
sortear si no se trabaja con un mtodo que nos permita alcanzar
nuestro objetivo de manera eficaz, este sistema se llama
Programacin en Tiempo Real y el mismo nos ayudar a encontrar
soluciones a problemas complejos y a escribir cdigo de forma rpida
y robusta.
Microcontrolador ___________________________________
Nos centraremos principalmente en el estudio del Microcontrolador
PIC16F883 porque es uno de los ms completos de la lnea16 fcil
de conseguir y econmico, de todas formas, los conocimientos
aprendidos son totalmente aplicables no solo a otros uC de la lnea
16F s no tambin a otros uC de la lnea 12F y 10F, ya que existe una
gran compatibilidad entre los mismos.
Bibliografa ________________________________________
La gran cantidad de informacin y literatura que existe sobre este
tema es abrumadora y en ocasiones solo logra confundirnos o
desalentarnos, por eso, nos enfocaremos pura y exclusivamente en la
hoja de datos que provee Microchip porque es ah donde se encuentra
el verdadero funcionamiento del dispositivo. Tambin, usaremos
como referencia, un par de libros en formato PDF para el estudio del
lenguaje.

www.balddesign.com.ar

info@balddesign.com.ar

Enseanza ________________________________________
A largo de los numerosos cursos que la empresa realizo, se lleg a la
conclusin que la manera ms didctica de comprender esta
tecnologa es abordar el aprendizaje de una forma conceptual sin los
extensos desarrollos tericos y las largas explicaciones acadmicas
que solo provocan confusin, prdida de tiempo y lo que es an peor
alejarnos del verdadero punto en cuestin. Desde nuestro actual
punto de vista pesamos que si el alumno comprende el concepto de
funcionamiento de un determinado modulo o proceso, despus
implementar soluciones es mucho ms sencillo.
Todo lo anterior suena muy bien, pero como todo aprendizaje el
alumno deber poner su cuota de dedicacin y tiempo para
implementar y experimentar por s mismo las prcticas propuestas,
ya que eso, no solo ayudara a fijar el conocimiento sino que tambin
generara dudas y preguntas, lo cual es seal que se avanza en la
direccin correcta.
El curso est desarrollado con un mnimo de presentaciones power
point y la mayor parte del mismo se realiza directamente sobre la
plataforma MPLABX, por eso es importante que el alumno cuente con
un cuaderno donde anotar las cosas importantes que se charlan en
clase, hay que tener presente que escribir nuestros propios apuntes
es la mejor bibliografa.

_____________________________________
________________________________Teora
Recordando conceptos _______________________________
Comenzaremos haciendo un repaso general de Electrnica bsica.
Compuertas lgicas. Sistemas de numeracin binario y hexadecimal.
Tipos de memoria. Que es pull-up y pull-down. Que es modo source y
sink. Que es un prescaler. Que es un timer. Que es el ciclo de
instruccin. Que son los bits de configuracin.
Estudio general de la arquitectura del Microcontrolador _____
Que es un microcontrolador. Tipos de encapsulado. Organizacin de
la memoria de programa y de datos. Registros especiales y de
propsito general. Stack o pila. Power-on reset. Power-up timer.
Oscilador Start-up timer. Brown-out reset. Watchdog timer.
Configuracin de fusibles. Configuracin del oscilador externo. Vector
de reset. Vector de interrupcin. Contador de programa. Memoria
EEPROM interna. Puertos de entrada y salida. Mdulos Timer0 Timer1
y Timer2. Conversor AD. Mdulo USART. Mdulo CCP1 y CCP2 (solo
en modo PWM).
www.balddesign.com.ar

info@balddesign.com.ar

Mi Primer Circuito microcontrolado _____________________


Circuito fuente de 5v. Polarizacin de pines. Que hacer con un pin que
no usamos. Circuito oscilador. Como realizar la programacin
directamente en nuestra aplicacin (In-Circuit Serial Programming).
Circuito de reset si o no?. Master clear interno o externo?.
Precauciones sobre el ruido elctrico.
Generando mi primer proyecto _________________________
Que es y para que sirve el entorno de desarrollo MPLABX. Que es un
proyecto y como construirlo. Organizacin de los archivos dentro del
entorno. Que son y como se utilizan las carpetas lgicas. Estudio de
las herramientas principales (Dashboard y Proyect). Como organizar
las ventanas para una mejor visualizacin. Como cambiar las
propiedades del editor de texto. Como editar nuestro proyecto. Como
utilizar el Simulador. Que es el Runtime y como editarlo. Como
compilar con XC8, y muchas otras cosas ms, que se irn
desarrollando con el correr de las clases.
Estudio general del lenguaje __________________________
Estructura de un programa en C. Comentarios simples y de bloque.
Variables e identificadores. Operadores de asignacin, lgicos,
aritmticos y relacionales. Construcciones condicionales e iterativas.
Funciones. Estructuras. Uniones. Vectores. Punteros. Directivas del
preprocesador. Compilacin condicional. Libreras.
Nota: La explicacin de la estructura del lenguaje se
realizara ntegramente sobre MPLABX para que el alumno
vea mediante ejemplos sencillos el funcionamiento prctico
de todas las sentencias de C y comience a familiarizarse con
el entorno.
Antes de empezar con las prcticas _____________________
Hasta aqu solo se trabaj con un solo archivo (main.c), para seguir
adelante debemos saber:
o Como crear un programa con 2 archivos (main.c y main.h)
o Como utilizar la directiva #include
o Como agregar ms archivos .c
Nota: La finalidad de todo esto es llegar a trabajar con un
programa multiarchivos que se ver con el correr de las
prcticas y algo muy importante que es la creacin de una
plantilla modelo que nos permitir tener todo armado al
momento de iniciar un nuevo desarrollo.

www.balddesign.com.ar

info@balddesign.com.ar

Estudio de los conceptos fundamentales que rigen la


Programacin en Tiempo Real _________________________
Declaracin paramtrica de variables.
Concepto de Estado.
Que es una Mquina de Estados.
Que es un Despachador y como implementarlo.
Concepto de Tarea y estructura general de la misma.
Insercin del Watch dog timer en un solo punto del
programa.
Timers dinmicos, teora, estructura y como se utilizan.
Concepto y estructura Multitarea.
Que es un perifrico virtual.
Como convertir una Tarea en una funcin y ubicarla en un
archivo .c independiente.
Como habilitar y deshabilitar Tareas en tiempo de ejecucin
de programa.
Manejo de Flags o sealizadores para ahorro de espacio de
memoria en Ram.
Realizacin de una plantilla de trabajo multiarchivo para
futuros desarrollos.

_____________________________________
______________________________Prcticas
Las prcticas estn desarrolladas para comprender y aplicar de
manera inmediata los conocimientos adquiridos y asimismo verificar
el alcance del mtodo propuesto, el cual se utilizar a lo largo de
todos los ejercicios.
Prctica1
Realizacin de un semforo de tres luces funcionando en forma
autnoma controlando los tiempos necesarios para su visualizacin.
Con esta prctica se fijar el concepto de Maquina de Estados,
Despachador y Tarea, y aprenderemos como utilizar el Timer
Dinmico para obtener los tiempos requeridos.
Para el Alumno:
Agregar el segundo semforo.
Prctica2
Encendido y apagado de un led mediante un switch o tecla mecnica.
Con esta prctica se ver el perifrico virtual Antirebote y su ventaja
respecto del tradicional.
Para el Alumno:
Controlar ms de un sw.

www.balddesign.com.ar

info@balddesign.com.ar

Prctica3
Parpadeo de un led activado con switch. Con esta prctica se
aprender como utilizar el perifrico virtual Blinking, activarlo,
desactivarlo y variar los tiempos de encendido y apagado mediante
dos sencillas funciones.
Para el Alumno:
Agregar 2 leds parpadeando a distintas velocidades.
Prctica4
En esta prctica agregaremos el destello de la luz verde del semforo
realizado en la practica1. Con esto aprenderemos como insertar un
estado en medio de otros dos sin que se desajuste toda la estructura
de la mquina de estados y se comprender el porque de
parametrizar todas las variables.
Para el Alumno:
Agregar el destello de la luz verde al segundo semforo.
Prctica5
En esta prctica veremos como dejar funcionando al mismo tiempo el
programa de la practia4 y el programa de la practica3 sin que se
interfieran uno con el otro. En este ejercicio aprenderemos a crear
una Tarea y ubicarla en otro archivo, a habilitar o deshabilitar tareas,
y se entender el concepto de Tarea como funcin y el concepto de
multitarea.
Para el Alumno:
Dejar funcionando el semforo de dos puestos de trabajo
realizado por uds(practica4) y el parpadeo de 2 leds(practica3),
en dos tareas independientes.
Prctica6
Esta prctica est orientada a la visualizacin de mensajes en Display
inteligentes LCD. Veremos la inicializacin y manejo de los mismos,
sus caractersticas, modo de conexionado, su pin-out, cdigo Ascii y
como setear nuestras libreras para su utilizacin. Aprenderemos a
posicionar mensajes, a crear nuestro propio carcter, y como realizar
nuestro cdigo para disimular los ruidos elctricos que afectan a estos
dispositivos.
Para el Alumno:
Generar un proyecto nuevo donde puedan realizar todas las
modificaciones que crean conveniente para comprender de
forma prctica y personal los conceptos y manejo de estos
dispositivos.

www.balddesign.com.ar

info@balddesign.com.ar

Prctica7
Visualizar en un LCD el resultado de una conversin AD (digital y
voltaje) moviendo un potencimetro colocado a una de las entradas
analgicas. Con esta prctica aprenderemos como configurar el
modulo, como realizar una conversin AD y como convertir un valor
digital a su equivalente en tensin.
Para el Alumno:
Agregar un segundo potencimetro y visualizar los resultados
en el LCD
Prctica8
Realizacin de un PWM de 100Hz controlado por un potencimetro
conectado a la entrada analgica de la practica7 que vare el brillo de
un led para observar su comportamiento. Aprenderemos el
funcionamiento del perifrico virtual Pwm100, como duplicar su
frecuencia y como aplicar un factor de escala para que el
potencimetro responda de forma lineal en todo su recorrido.
Para el Alumno:
Agregar un segundo Pwm100 controlado por otro potencimetro
y analizar si es posible que ambos funcionen a diferentes
frecuencias, de ser posible realizarlo.
Prctica9
Lectura de 4 Switchs (ampliable) con un solo pin AD observando su
funcionamiento mediante leds asociados a cada Sw. Aprenderemos a
utilizar el perifrico virtual TecladoAd y a explorar mltiples teclas
aplicando tambin antirebote a este tipo de lectura. Se har evidente
las ventajas sobre el manejo de teclados matriciales.
Para el Alumno:
Hacer la lectura para 6Sw o ms y agregar el led
correspondiente para poder visualizarlo.
Practica10
Realizaremos un sencillo programa demostrativo de cmo utilizar la
memoria EEPROM mediante las funciones destinadas a tal fin y
veremos las precauciones que debemos tomar cuando leemos y
escribimos dicha memoria.
Para el Alumno:
Grabar una posicin cualquiera de la memoria EE, apagar el Pic
y recuperar el dato para visulizarlo en un lcd.
Prctica11
Prctica destinada a comprender el funcionamiento del pwm incluido
en el mdulo CCP1. Se realizara un modulador de ancho de pulso de
47khz al cual le actualizaremos el duty cycle mediante un
potencimetro colocado en una entrada Ad. En esta prctica est
implcito el estudio del Timer2 que funciona en conjunto con el PWM.
www.balddesign.com.ar

info@balddesign.com.ar

Para el Alumno:
Agregar el segundo mdulo Pwm que trae el uC y actualizarlo
mediante un segundo potencimetro colocado en otra entrada
Ad.
Practica12
Visualizacin en 2 display de 7 segmentos de un contador que
incrementa y decrementa de forma manual mediante 2 teclas updown. Aprenderemos el funcionamiento de este tipo de display, y
como utilizar el perifrico virtual que los comanda.
Para el Alumno:
Incrementar la cantidad de display a 3 o 4 y realizar un
contador que incremente y decremente de 10 en 10.

_____________________________________
_____________________Comentarios finales
Cuando el curso llegue a su fin aquellas personas que hayan
completado el mismo, estarn en condiciones de manejar toda la
lnea de microcontroladores Pic 12f y 16f, como as tambin realizar
pequeos y medianos desarrollos.
A modo informativo podemos mencionar algunas de las ventajas que
proporciona esta estructura de programacin:

Acelerar el tiempo de desarrollo.


Saber en que lugar est ubicado nuestro cdigo (Tarea).
Generar si hace falta nuestro propio perifrico virtual.
Actualizar el programa con total facilidad y rapidez.
Aprovechar todo el potencial de los MCU
Utilizar los flag como si fuesen un interruptor que podemos
activar, apagar o simplemente consultar en que estado se
encuentra.
Tener funcionando varias tareas al mismo tiempo como si
fuesen programas independientes.
Obtener tiempos del orden de milisegundos, segundos,
minutos, horas, das, etc, con solo cargar un registro del
timer dinmico.

Importante:
Si bien este curso comienza de cero es conveniente que el
interesado tenga conocimientos previos de electrnica bsica,
tcnicas digitales y manejo de sistemas de numeracin.
Tambin es conveniente tener una idea previa de cmo es la
arquitectura interna de estos dispositivos ya que esto ayudara a
asimilar mucho ms rpido los conocimientos adquiridos.

www.balddesign.com.ar

info@balddesign.com.ar

_____________________________________
______Respuestas a algunas de tus preguntas
Qu modalidad tiene el curso?
Por el momento la modalidad es Presencial.
Cunto dura el curso?
El mismo est dividido en 8 clases de 3hs cada una, 2 veces por
semana lo que hace un total de 1 mes.
Dnde es el lugar de cursada?
En Bernardo de Leon 2610 La Paternal (CABA). En la ltima hoja
de este archivo tenes un mapa orientativo para ubicar el lugar.
Cul es el cupo de alumnos?
Solamente un mximo de 12 personas por curso para que la
enseanza sea lo ms personalizada posible.
Cundo comienza el curso?
En el momento que se complete la capacidad mxima de alumnos.
Qu das de la semana se cursa?
Se fijara de acuerdo a la disponibilidad de cada grupo con el consenso
de cada uno de los participantes.
Cul es el horario?
En general y por razones laborales de los participantes el nico
horario es de 18:30hs a 21:30hs.
Cunto cuesta el curso?
El precio es de $1300, y por razones operativas de la empresa el
pago debe efectuarse por adelantado el primer da de clase.
Si el da de cursada Ud no puede venir pierdo la clase?
Definitivamente NO, la cantidad de clases son 8, o sea que si por
algn motivo (sea cual fuere) ese da no se dicta el curso, el mismo
se extender 1 da ms de lo previsto.
Quin dicta el curso?
El Sr Juan Navarro.
Cmo puedo comunicarme con Ud?
Por cualquier consulta que me desees hacer podes comunicarte a mi
telfono celular 1566293640, o al directo de la empresa +54 (11)
5294 6660 o por mail a la direccin jnavarro@balddesign.com.ar

www.balddesign.com.ar

info@balddesign.com.ar

Como llegar

Bernardo de Leon 2610 La paternal (CABA)

Gracias por habernos contactado


Saludos cordiales

Juan Navarro
www.balddesign.com.ar

info@balddesign.com.ar

10

Você também pode gostar