Paso 10: Firmware - principal-v1.0
Como se mencionó, la primera versión del código leer la pantalla de la escala y luego escribir esos datos en una pantalla local. Esto es simplemente una prueba de concepto... volver a escribir los datos de una pantalla a otra es bastante inútil. Creo que he comentado el código fuente lo suficientemente bien como para que usted pueda entender lo que está sucediendo en absoluto familiarizado con código AVR, pero voy a entrar en algunos de los puntos más finos.
Algunos archivos se incluyen:
- modules/avr.h - incluir esto en cada proyecto AVR, en que trabajo
- modules/lcd/SerLCD_2x16.h - prototipos de función y Macros para escribir en la pantalla local
- definitions.h - todas las macros principales y definiciones
- util/delay.h - rutinas de retardo simple
Los módulos de hardware están configurados en la función de initialize_AVR() en línea 486.
Comparador analógico
El comparador analógico se activa en el flanco ascendente de COM 1. Luego habilitar a temporizador 0 que simula el flanco descendente de COM 1 y las otras 3 líneas de COM.
Temporizador 0
Temporizador 0 está configurado para activar un ISR cada 0.2ms. Un contador dentro de la ISR puede causar eventos que tendrá lugar después de tanto tiempo (es decir, nunca 4ms), y una instrucción switch se utiliza para realizar diferentes acciones para cada activo simulado línea COM. El estado de los pines del LCD se registra para cada línea de COM, y al final del ciclo, se deshabilita el temporizador 0.
Lectura LCD
El ciclo de lectura se inicia por la función readLCD() en la línea 311. Esta función permite simple el comparador analógico y se sienta en un tiempo del lazo hasta que haya completado el ciclo de lectura. La función de decodeDigit() en línea 321 realmente convierte todos los datos de estado del pin en números numéricos para cada uno de los dígitos LCD.
Escritura del LCD
Las rutinas de escritura LCD encontró a partir de las línea 407 fueron escritos por mí hace un tiempo. También se encuentran en la carpeta de módulos lcd, pero copié sólo las funciones que quería utilizar para el archivo principal por lo que no estaba compilando archivos desde múltiples ubicaciones. Creo que son bastante auto explicativa.
Principal
En la función principal, el dispositivo AVR se inicializa y entonces entra en un bucle de siempre. Dentro de este bucle, es leer la pantalla LCD, y que los datos es decodificados e impreso a la pantalla local para las pruebas. Dígito 4 se omite, y no se preocupe acerca del modo de reloj de la escala porque no estoy supervisando la los segmentos de pin LCD AM/PM.
En una versión anterior del circuito, yo fui monitoreo todos los pines del LCD, por lo tanto, mi capacidad para imprimir los datos de modo de reloj; sin embargo, el firmware actual no puede hacerlo. También observe el símbolo "&" en las cifras debido a la línea de transmisión Serial utilizado para imprimir en esta pantalla me impide leer un pin de LCD escala particular.