Paso 13: Programar el PIC
El PIC se puede programar en C++ o lenguaje ensamblador. Elegí C++, sobre todo para ahorrar tiempo, pero también porque necesariamente no quiso comprometerse a esta arquitectura y es cierto que, conjunto de lenguas no son ninguna diversión! Para simplificar, he desarrollado la junta con el PIC12F509 DIP, que es pin compatible con el 508. También es más grande y más fácil de manipular para propósitos de prueba, y encontré que tenía más memoria que necesitaba, por lo que he podido bajar el chip para el producto final.
Cómo funciona la tarjeta de POV
_______________________________________________________________________
La tarjeta está apagado hasta que el momentáneo interruptor apretado. En el encendido, el programa simula una bolita rodante con un contador binario que rueda hacia adentro y hacia afuera con la inclinación de la tarjeta. Después de aproximadamente cuatro inclinaciones hacia adelante y hacia atrás, entonces cambia al modo de persistencia de la visión y ciclos a través de una serie de patrones programados. Actualmente, dice mi nombre, seguido de un patrón de onda cuadrada limpio que actúa como un separador y luego mi número de teléfono. Cuando se cierra el interruptor de inclinación, el programa reconoce como el inicio de una ola y juega el actual patrón una vez a través, entonces espera hasta que comience otro de onda. Como la ola no doble vuelta demasiado pronto, y el patrón no es demasiado largo, no habrá ningún traslapo como el patrón quedará en blanco hasta que restablezca.
Los patrones de
_______________________________________________________________________
Cada patrón es una matriz de bytes, cada byte de una columna en la secuencia. El tiempo que en cada columna (marco) en el patrón y el tiempo entre fotogramas determina la velocidad de la pantalla, y cuán cerca se espacian los marcos cuando la tarjeta está agitada. Básicamente, cambia el ancho de los caracteres y el patrón como un todo. Además, la velocidad a la que onda la tarjeta también desempeña un papel en el espacio, pero no lo suficiente para hacerla ilegible; puesto que cambios fotogramas a una velocidad constante, la variación no es suficiente a la materia, pero es suficiente para que se vea dinámica. Limpio, ¿EH?
Para crear los patrones, he modificado un script que encontré escrito por Andrew Mason. Mi versión modificada para requisitos particulares para permitir la alternativa byte de formato y número de LEDS, pero la colocación del LED es fijo, por el momento. Puede hacer cualquier patrón que desee, siempre y cuando sea lo suficientemente pequeño como para caber en la memoria de fotos. La tasa que el patrón se reproduce en el se puede cambiar en el código.
El programa de
_______________________________________________________________________
El código es muy simple. Sin PWM o interrupciones, no había muchas cosas difíciles que pude hacer, incluso si quisiera. Conservación de espacios y optimización de hecho un poco más interesante, sin embargo, dado el ajuste necesario para que el código de ajuste en la memoria pequeñas fotos.
Para reproducir un patrón, el PIC simplemente comprueba el interruptor de inclinación ser activado, luego recorre un patrón. Establece las salidas GPIO en el byte actual en la matriz, que representa un marco, espera un período, entonces la matriz se incrementa. Una vez que el patrón ha desempeñado a través de todo el camino, espacios en blanco la pantalla y espera hasta que se ha activado el interruptor de inclinación. Esto indica que ha comenzado otra ola, y pasa por el patrón una vez más.
El código de marco se ve así, sin comillas: "0b00000000,". La 0b delinea un byte y la coma separa cada octeto de la siguiente. Esto es todo colocado dentro de una matriz de constantes, ya que no se cambia durante la reproducción y que ahorra RAM. Cinco de los bits de la matriz indica un LED de salida, mientras que uno y uno es un poco sólo utilizado para la entrada de pin. Los bits usados son: 0bXX12X543, donde el número indica el pin.
El código de
_______________________________________________________________________
#include < htc.h >
#include < stdlib.h >
La Junta de programación
_______________________________________________________________________
Todo el código fue escrito en Notepad ++, un excelente editor gratuito de varios idiomas. Usted también necesitará el MPLAB IDE con una copia del compilador de C de alta tecnología. Ambos están disponibles en versiones libres.
Usted necesitará una copia del software de programación de PICKit 2 de Microchip. Con el chip conectado y iCP01 enchufado, la familia de dispositivos a "Instantánea" y seleccione PIC12F508 de la lista desplegable dispositivo. Luego carga el archivo hexadecimal y pulse el botón write.
Referencias
- PIC12F508/509/16F505 Datasheet
- Guía de usuario de 9.81 compilador Hi-Tech C
- POVgen Online generador LED
- C alta tecnología Compliler
- Entorno de desarrollo integrado MPLAB
Herramientas y suministros
- PIC12F508 / SN SOIC o PIC12F508 / PmicrocontroladorDIP
- USB Programador Serial In-Circuit (iCP01)
- Protoboard
- tablero de arranque de 8 pines SMD IC o PCB más despoblada