MicroCode Studio y PBP: Uso de 3 canales analogicos con el PIC16F887 - Encender LEDs

Saludos a todos los seguidores!!! Hace unos días un seguidor del blog me comentaba que estaba realizando su practica del ADC en PBP y Microcode Studio y se encontró la publicación "Uso del ADC con  PIC16F887 - Encender LEDs" pero tenia problemas al intentar leer mas de una entrada analógica ya que solo podía leer una sola entrada a la vez, bueno revisando el datasheet se me ocurrió una solución (mejor dicho una propuesta) para resolver su problema y es ese es el motivo de esta publicación.  

Para iniciar seguí con la propuesta de encender unos LEDs conectados al puerto B, C y D de nuestro PIC16F887, como entradas he colocado un potenciometro en AN0, AN1 y AN4, lo demás pues ya es básico su oscilador y botón de Reset, la mecánica sera fácil para cada potenciometro le toca encender una cantidad de LEDs (que son los que están en cada puerto), así que el circuito nos queda de la siguiente forma:

MicroCode Studio y PBP: Uso del ADC con PIC16F887 – Encender LEDs

Siguiendo con las prácticas en Pic Basic Pro y utilizando el MicroCode Studio para nuestros Microcontroladores PIC, en esta ocasión utilizaremos el ADC del PIC16F887 para encender 8 LEDs dependiendo del voltaje en un potenciómetro.

Se tiene 8 LEDs con su debida resistencia conectados al puerto D del microcontrolador, un potenciómetro conectado al canal analógico 0 (RA0) y su cristal de cuarzo con sus capacitores conectado en sus respectivos pines, además se incluye un pulsador y una resistencia conectados al Master Clear (MCLR) para usarlo como Reset del circuito, aunque para nuestro ejemplo no es muy utilizado ya que solo necesitamos conocer el funcionamiento básico del ADC. El circuito utilizado se muestra a continuación:

Matriz de LEDs 8x8

Saludos a todos!! Este no va a ser una publicación como las que se han venido publicando con la información detallada de lo que hace paso a paso el circuito o el firmware, ya que es un trabajo que se hizo en conjunto con un buen amigo y administrador de nuestro grupo Electrónica&Robótica (Julio Aguilar, si deseas saber mas sobre su trabajo visita su blog ALL IS ElectroNics!!), esta publicación sera como para dar algunas ideas o tips sobre como el circuito, como armarla y programarla.

MPLAB X y C18: Uso del TIMER 0 como temporizador

Una parte muy importante en los microcontroladores son los TIMERs y que serán temas que abordaremos en el blog tal vez un poco lentos pero lo haremos, para comenzar pues lo haremos con el TIMER cero, ahora bien cuando al TMR0 se controla por un evento externo se dice que se está usando como contador, por el contrario si se controla con un evento interno se está usando como temporizador que será el tema que veremos en esta ocasión, existen mas TIMERs pero eso se explicara cuando llegue su turno.

El TMR0 cuenta con las siguientes características:
  • Modo de operación como temporizador o contador, ambos casos con resolución de 8 y 16 bits.
  • Registros de lectura y escritura, ósea que podemos inicializarlo en un algún valor deseado.
  • Prescaler programable de 8 bits.
  • Permite usar una fuente de reloj externa o interna.
  • Para el modo de contador permite seleccionar con que flanco se activa al momento de conectarle el reloj externo.
  • Interrupción por desborde (overflow), ósea que cuando este llegue a una cuenta deseada podemos atenderla con alguna interrupción, cuando esto pase el programa abandona temporalmente lo que estaba haciendo para atender la subrutina de interrupción, pero antes guarda en una región especial de la memoria llamada pila la dirección de la siguiente instrucción de programa, para que cuando acabe la subrutina de interrupción pueda seguir ejecutando el programa por donde se había quedado.
En todo caso se recomienda revisar el datasheet del microcontrolador que se está usando para comprender mejor el tema. Nosotros utilizaremos el PIC18F4620 para realizar nuestros ejemplos.

Para configurar el TMR0 se utiliza el registro T0CON que se muestra a continuación: