martes, 31 de julio de 2012

Implementacion real del Hello World

Para empezar con esto es necesario saber los pines de nuestro microcontrolador, información que se encuentra detallada en el datasheet del mismo, acá presento una imagen de los pines del 16F628A.
Pines a considerar en este ensayo:

4.- MCLR, Master Clear, conectado a positivo.
5.- VSS, Tierra, conectado al terminal negativo de nuestra fuente.
14.- VDD, Positivo/VCC, Conectado al terminal positivo de nuestra fuente.
17.- RA0, puerto de entrada/salida, aquí conectaremos la resistencia y el LED.

Cada pin entrega un máximo de 10mA por lo que hay que limitar la corriente o perderemos nuestro microcontrolador. Se alimenta con 5V, por lo que las resistencias tipicas son de 330 Ohm.

Este el esquema de armado para nuestro ejemplo.

Donde rojo indica positivo +5V y negro negativo.

domingo, 29 de julio de 2012

Uso de Proteus y Hello World

Proteus es un simulador de circuitos que nos servirá montones pues emula el comportamiento de los microcontroladores. El objetivo es cargarle el archivo *.hex creado por CCS y probarlo en un PIC virtual. El entorno gráfico es similar a otros simuladores, a continuación se muestra como buscar lo necesario para probar nuestro programa.


Para buscar componentes debemos hacer click en la P que se muestra a continuación:
Luego buscamos el 16F628A y le hacemos dos clicks para agregarlo
enseguida hacemos lo mismo para una resistencia de 330 ohm y un LED azul.

Todo montado quedaría asi:

Notar que el mismo Proteus ha ocultado VDD(VCC) y VSS(Ground), ademas el MCLR(Master Clear) podemos dejarlo sin conectar. En la realidad obviamente tiene que estar conectado VDD, VSS y MCLR debe estar conectado a VDD.

Solo queda cargarle el programa a nuestro microcontrolador y simular!


1. Aca debemos cargar el archivo *.hex generado en la compilacion del CCS.
2. Aca debemos indicarle la frecuencia de trabajo del microcontrolador, 4MHz para nuestro ejemplo.

Ahora solo queda darle play! 

Uso del compilador CCS y Hello World

Explicaré el uso de CCS con un ejemplo que hará parpadear un LED en un PIC 16F628A.
El entorno de programación es sencillo y bastantes intuitivo, para empezar a programar un microcontrolador debemos hacer click en PIC Wizard.

Donde nos pedirá guardar nuestro proyecto con extension *.pjt, luego saldrá una ventana con muchas opciones que a continuación explicaré:


1. Menu principal, configuraciones del microcontrolador.
2. Modelo de microcontrolador que se usará
3. Frecuencia del oscilador(cristal) con que funcionará el microcontrolador. En este caso usé 4MHz debido a que el PIC 16F628A tiene un oscilador RC interno lo que nos ahorra este componente. Consultar Datasheet de otros modelos.
4. Se selecciona con que tipo de oscilador trabajará el microcontrolador, en este caso con el interno(Internal RC Osc).

Luego en el menu 1 en Communications desactivaremos USE RS232 porque no será relevante para nuestro programa de ejemplo. En otras secciones explicare como transmitir datos con este protocolo.



Ahora apretamos OK se generará el codigo necesario para empezar a programar.
-----------------------------------------------------

#include "C:\Users\Desktop\programa ejemplo\main.h"


void main()
{


   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab


   // TODO: USER CODE!!


}

-------------------------------------------------------

La linea en rojo indica que en esa dirección estan las configuraciones de los FUSES, sin embargo no recomiendo dejarlo expresado de esa forma debido a que si compilamos en otro computador tendremos conflicto al encontrar ese archivo. Por lo que recomiendo abrir con bloc de notas el archivo con extencion *.h y copiar todos los fuses dentro del programa original, quedando así:

-------------------------------------------------------



#include <16F628A.h>


#FUSES NOWDT                    //No Watch Dog Timer
#FUSES INTRC                    //Internal RC Osc
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOBROWNOUT               //No brownout reset
#FUSES MCLR                     //Master Clear pin enabled
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD                    //No EE protection
#FUSES RESERVED                 //Used to set the reserved FUSE bits


#use delay(clock=4000000)


void main()
{


   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab


   // TODO: USER CODE!!


}
-------------------------------------------------------

Ahora que hemos configurado todo podemos escribir nuestra primera linea de codigo, el cual irá desde donde dice // TODO: USER CODE!! hasta la llave "}"


Utilizaremos el ciclo while para que nuestra acción se realice hasta que se quite la energia del micro.
Utilizaremos la instruccion output_high(pin_xy) y output_low(pin_xy) para cambiar el estado de algun pin y del puerto x
También ocuparemos la instrucción delay_ms(x) que nos permitirá hacer una pausa expresada en mili segundos.


Entonces el código que agregaremos será:


while(true){
output_high(pin_a0); //Ponemos un 1 en el pin A0
delay_ms(500); //Esperamos 500ms
output_low(pin_a0); //Ponemos un 0 en el pin A0
delay_ms(500); //Esperamos 500ms
}


Ahora en la pestaña COMPILE hacemos click en COMPILE y nuestro programa esta listo para ser probado en PROTEUS que veremos en la siguiente publicación.

Descarga de programas

Para los ejemplos de este blog usaremos 2 programas, el cual los pongo a disposición de ustedes. Click en los nombres para descargarlos.

1.CCS compiler: Aca escribiremos los programas en C

2.Proteus 7.8: En este programa simularemos el comportamiento de nuestros programas en el microcontrolador. NOTA: La instalación esta detallada en un manual que viene en PDF, para Windows XP seguir las instrucciones rigurosamente, para Windows 7 y Vista el crack ruso hay que ejecutarlo en modo de compatibilidad de Windows XP SP2.





Primera entrada

Bienvenidos a este blog, el objetivo de este espacio es que puedan aprender a programar microcontroladores PIC en CCS compiler de forma practica mediante ejemplos de código y simulaciones en PROTEUS. Comencemos!