Página de inicio Mi Correo






   » Foro
   » Nuevo Foro
   » Mi Correo
   » Mis Actividades...


--- Novedades ---



    
  » Microcontroladores » Tutor de MPLAB (6 de 19)  

.: Estuvo bueno no crees...???
.: Descripción general del proyecto - Los puertos:

Ahora es que empieza todo. Primero tenemos que saber que es lo que haremos con las entradas y que haremos con las salidas, cuantas salidas son necesarias y cuantas entradas también, debes tener en cuenta que en algún momento querrás tener control en la velocidad del desplazamiento de las luces, lo cual ya te puede llevar a pensar en un potenciómetro, pues si, es así, de todos modos lo aclararemos un poco más...

.: Salidas:
El secuenciador posee 8 salidas que tomaremos del puerto B y las asignaciones serán las siguientes...

  • Salida 0    <--   RB0 (pin6)
  • Salida 1    <--   RB1 (pin7)
  • Salida 2    <--   RB2 (pin8)
  • Salida 3    <--   RB3 (pin9)
  • Salida 4    <--   RB4 (pin10)
  • Salida 5    <--   RB5 (pin11)
  • Salida 6    <--   RB6 (pin12)
  • Salida 7    <--   RB7 (pin13)
.: Entradas:
Los 4 interruptores necesariamente deben ser entradas y las conectaremos al puerto A, éstas serán las asignaciones...

  • llave 0    <--   RA0 (pin17)
  • llave 1    <--   RA1 (pin18)
  • llave 2    <--   RA2 (pin1)
  • llave 3    <--   RA3 (pin2)
  • timer      <--   RA4 (pin3)

Los pulsos de reloj que generan el desplazamiento de los distintos efectos serán entregados por un típico timer "el 555", eso permitirá el control de la velocidad por medio de un potenciómetro, como ves le asigne el pin RA4

Esto es sólo para que tengas en cuenta como es que vamos a hacer las conexiones al pic, bien, esas serán todas las conexiones que le haremos.

Ahora pasemos a ver como vamos a encarar los inicios de la programación

.: Descripción general del proyecto - Primer Planteo del Programa:

Piensa en como debe trabajar el PIC desde que reciba la alimentación hasta que se encuentra trabajando a full, piensa en que el usuario es muy torpe y siempre suele meter la pata, ten en cuenta también la velocidad a la cual trabaja el micro, y por último piensa que... bueno, mejor sigamos...

.: Parte I: Cuando el micro se inicia.

Cada vez que el micro reciba corriente de la fuente de alimentación (esto es, cada vez que lo conecten o enciendan el secuenciador) éste, deberá setear los puertos darle a cada pin del micro la asignación que le corresponde (entradas y salidas), así es que eso es lo que haremos en la primera sección del código.

.: Parte II: Verificando el estado de los interruptores

Luego de lo anterior que es lo que siempre se hace, comienza lo nuestro, lo primero que haremos será verificar los interruptores, y para ello pasaremos todo lo que hay en el Puerto A a un registro llamado switch, el tema es que al hacer esto también viene incluido el timer, y como este cambia a todo momento, debemos hacer algo para ignorarlo y quedarnos con los bits 0, 1, 2 y 3 que son los que nos interesan, mmmmmmm... entonces haremos lo siguiente, un AND con 00001111 (0x0f en hexa), recuerda que una operación AND da 1 como resultado siempre que los dos bits sean 1 y cualquier otra combinación te dará siempre cero, (pues eso es justamente lo que buscamos para sacarnos de encima al timer). Ahora bien, luego de esta operación tenemos el estado de los interruptores conectados al puerto A, sin el timer, es decir tienes el estado de los interruptores totalmente en limpio, así que hay que cuidarlos, y para no perderlos lo vamos a guardar en un registro llamado llaves

.: Parte III: Seleccionando los efectos.

Teniendo el valor de las llaves, lo que nos toca es ver cual de todas las combinaciones de estos 4 bits corresponde al efecto 0, al 1, al 2, etc. y una vez lo descubrimos, hacemos una llamada a ese efecto.

Suponte que la combinación de las llaves es 0000 eso significa que le corresponde al primer efecto que lo llamaré efect1, entonces haremos una llamada para ejecutar todo lo que se encuentre en efect1 y allí, lo primero que haremos será limpiar el puerto B (ponerlo a cero) y comenzaremos con ese efecto divino que viste anteriormente. una vez termine el efecto, regresaré a revisar nuevamente las llaves para ver si el usuario seleccionó otro, y si lo hizo, pues entonces cambiaré, sino reiniciaré el efecto que tenía anteriormente, y así sucesivamente.

.: Parte IV: El timer.

Cada vez que enviemos un dato al puerto B por cualquiera de los efectos seleccionados, haremos una llamada al timer para ver si hay un nuevo pulso, y cuando este pulso termine regresaremos para enviar el siguiente dato, y luego de eso volveremos al timer, y así...

El timer es una de las partes más importantes aunque la más corta de toda la codificación, debes recordar que el timer mantiene niveles altos y niveles bajos de tensión, vamos a suponer lo siguiente... que un pulso comienza cuando se inicia un nivel alto, y termina cuando comienza el nivel bajo, por lo que si la velocidad de timer es lenta el dato que se envíe a la salida, también será lento, pues bien, para eso nos sirve verificar el cambio de nivel del timer.

Lo dicho anteriormente, mas claro con una imagen

Al código que analiza el comienzo del nivel alto lo llamaré clockon, y al que analiza el final de este nivel clockoff, que creativo no...?

.: Parte V: Cómo se codifican los efectos.

Esta es la parte que te interesa verdad...?, como la mayoría de los efectos no son más que un desplazamiento de bits, haremos uso de una instrucción de rotación, para la cual utilizaremos el bit de CARRY, y para que tengas una idea de lo que estoy hablando se trata del primer bit (el bit0) del registro STATUS, sí... aquel en que configuras los puertos, siiiii, ese mismo, bueno, espero que te acuerdes...!!!, luego lo veremos más en detalle.

.: Parte VI: Nota

No viene mal hacer algunas aclaraciones... En los comentarios que encuentres en el código verás que puse el valor de los bits del puerto B en binario, eso aclarará un poco de que efecto estamos hablando y nos ayudará para no perdernos, ya que la numeración utilizada en el código es hexadecimal.

Bueno mi querido colega, estamos listos para iniciar la codificación, sin armar el circuito, claro...!!!, ya que lo simularemos con MPLAB, de eso se trataba o no...???, calma, calma.... que cuando termines de leer este tutorial tendrás el circuito listo para montar, si es que lo deseas, de todos modos habrás dado un gran salto en la simulación del micro en MPLAB...



R-Luis...


<--Anterior   Introducción   Siguiente -->
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19
Tabla de Referencias


    
--| |--