Dic 252013

 
Pin Out del PIC16F84

Pin Out del PIC16F84

Código fuente en C para contar del 0 al 9 en un display de 7 segmentos con un PIC 16F84A

//   Programa:   Contador ascendente 0-9

#include    <16f648a.h>               //pic a utilizar
#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP      //ordenes para el programador
#use delay (clock=4000000)         //Fosc=4Mhz
#use standard_io(B)

void main(void)
{
   //contador para tabla 7 seg
   char i=0;
   // Display de 7 segmentos 0-9
   int tab7seg[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67};

   set_tris_b(0x00);            //portb como salida
   disable_interrupts(GLOBAL);      //todas las interrupciones desactivadas

   do{                        //bucle...
      output_b(tab7seg[ i ]);      //muestra por portb dígito 7 segmentos
      delay_ms(500);
      i++;            /incremento contador para visualizar siguiente dígito
      if(i>9)                  //¿ya se ha mostrado el dígito 9?
      {
         i=0;               //SI -> vuelve a empezar(dígito 0)
      }
      }while(TRUE);            //...infinito
}

Este pequeño programa nos hará una cuenta ascendente de 0 a 9, el cambio entre números tiene un retardo de 500 ms y cuando el contador i es mayor que 9 el contador pasa a tener el valor inicial 0. Una vez arranquemos el programa se ejecutara indefinidamente su bucle.

Este ejemplo es muy sencillo y sirve para poder iniciarse en la programación de PICs, este programa mediante la utilización de la matriz tab7seg[10] se ha codificado el encendido de los segmentos que componen los números del 0 al 9, este programa lo podríamos modificar para experimentar, y el valor del contador i pasarlo directamente al output_b y en los 4 bits de menor peso colocar un codificador 7447.

 



Sep 122013

 
Pin Out del PIC16F84

Pin Out del PIC16F84

Código fuente en C para hacer parpadear un LED con un PIC 16F84A

 #include  <16F84A.h>
 #fuses XT,NOWDT
 #use delay ( clock = 4000000)
 #BYTE TRISB = 0x86
 #BYTE PORTB = 0x06
 #BYTE OPTION_reg = 0x81

 void main() {
      bit_clear(OPTION_REG,7);
      bit_clear(TRISB,0);
      while(1) {
         bit_set(PORTB,0);
         delay_ms(500);
         bit_clear(PORTB,0);
         delay_ms(500);
      }
  }

Este pequeño programa es el equivalente de los Hola mundo, es muy sencillo y tiene como misión controlar una salida del puerto B0 del PIC16F84, a continuación lo comentaremos linea a linea.

  • En la primera linea se le indica al programa el PIC con el que se va a trabajar en este caso el PIC16F84.
  • Seguidamente configuramos el oscilador de cristal y desactivamos el Watchdog.
  • Especificamos la frecuencia del oscilador a 4 MHZ.
  • Definimos registros de proposito especifico (SFR) como BYTE (banco 1) dirección 0x86 TRISB.
  • PORT B como BYTE, especificamos su dirección 0x06.
  • Al poner a cero el bit 7 del registro OPTION_REG, habilitamos las resistencias de Pull UP.
  • Pone a cero el bit 1 de PORTB, B0 queda configurado como salida.
  • Entramos en el bucle infinito controlado por el while, ya que la condición se cumplirá siempre.
  • Encendemos el LED.
  • Llamamos a la rutina Delay que nos generara un retardo de 500 milisegundos.
  • Apagamos el LED.
  • Llamamos a la rutina Delay que nos generara un retardo de 500 milisegundos.
  • Y por último volvemos al inicio del bucle while repitiendo todo este ciclo indefinidamente.

 

PIC16F84 activando un LED

PIC16F84 activando un LED



Ago 072013

 

Actualmente hay muchas opciones para programar una pequeña aplicación que active unas salidas y controle motores, luces, etc…

Sea cual sea la opción que escojamos siempre tendremos que tener unos elementos comunes:

  • Un editor procesador de texto.
  • Un compilador o ensamblador con depurador.
  • Un programador.

Editor

El editor de texto, es un programa para escribir, cuya función principal es ayudar a escribir. Según vamos escribiendo el editor nos colorea las palabras del lenguaje y sus posibles opciones, también las funciones, variables y código mal escrito que hace que el programa sea mas fácil de escribir y depurar errores. Una pieza fundamental por tanto será que tengamos un buen editor.

Compilador

El compilador, es un programa que traduce el código escrito en un lenguaje como c++ a código de ensamblador o a un archivo binario o hexadecimal directamente, lo cual es ejecutado directamente por un microprocesador o microcontrolador.
Un ensamblador, es un programa que traduce un tipo de código de muy bajo nivel (hay que colocar muchas instrucciones para que se realice una acción) a un archivo binario o hexadecimal.

Programador

Un programador tiene dos partes, un software pare el ordenador y un aparato físico que se encargan de enviar el archivo hexadecimal desde el ordenador en que se compila, al microcontrolador que lo debe ejecutar.

 

IDE todo en uno

Un IDE en inglés que significa “Entorno de Desarrollo Integrado” (Integrated Development Environment), es un conjunto de las cosas vistas antes, el IDE se compone de un editor de texto, un compilador, un ensamblador y un programador (software). La idea es que la mayoría de eestas cosas queden ocultas para simplificar la labor, por lo que muchas veces solo vemos el programa para escribir y un botón que compila, ensambla y traspasa el programa al micro, todo automáticamente.

Una buena opción para introducirse son las placas de Arduino que son una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseñada para facilitar el uso de proyectos electrónicos.

Placa Arduino UNO

Placa Arduino UNO

Arduino: Una plataforma construida a partir de microcontroladores AVR de Atmel, son increíblemente baratos, poderosos, y no solo traen un IDE y un Bootloader, si no que además trae muchas funciones  en C++, gracias a lo cual, puedes hacer complejos programas en poco tiempo.

Un Bootloader, es un programa especial para el microcontrolador, que hace que no requiera un aparato especial para cargarle los programas que hace el usuario. Antiguamente en el comienzo de la programación con microprocesadores el programa del usuario se grababa en una o varias memorias EPROM las cuales se las podía borrar usando una luz ultravioleta y volver a usar grabando los datos con un programador. Con el uso del Bootloader el programa se carga rápidamente mediante una conexión USB con el ordenador.

Algunas de las placas de arduino son:

  • Arduino Nano.
  • Arduino Mini.
  • Arduino BT.
  • LilyPad Arduino.
  • Arduino Fio.
  • Arduino Pro.
  • Arduino Pro Mini.
  • Xbee shield.
  • Ethernet shield.
  • Arduino uno.

Hay otras alternativas como PICAXE que es el nombre de un sistema microcontrolador que se basa en una gama de circuitos integrados PIC.

El objetivo de estos circuitos era para su uso en la educación y para aficionados a la electrónica, también son utilizados en ámbitos técnicos y comerciales, incluyendo el desarrollo rápido de prototipos.

Enlaces para obtener mas información:

http://arduino.cc/es/

http://www.microchip.com/