Paso 3: Software
A continuación los enlaces de software. He incluido para el 12F683 y el 16F688. Las diferencias están sobre todo en algunos nombres de registro junto con las diferencias esperadas en la versión PIC (lista =) y la línea del archivo INCLUDE y la línea __CONFIG.
Como se señaló anteriormente, la línea base de software es el que utilizamos en el episodio 7 durante los periodos de sueño largos. Además, se añadió el código de escritura de la EEPROM del episodio 6. En la versión del 12F683 la línea "BCF EECON1, EEPGD" está comentada porque sólo se aplica a la 16F688. Esa línea no se utiliza en el código del 12F683 porque el bit EEPGD no está presente en el registro EECON1. El 12F683 sólo permite escritura a EEPROM y no a la memoria de programa. El resto del nuevo código se ocupa de la configuración del convertidor A/d y uso. Una vez que se establecen los registros apropiados en el código de inicio, la conversión requiere sólo un par de banderas a establecerse. Es todo hecho dentro del controlador de interrupción cuando el PIC se despierta. También puede ver los puntos donde la energía es activar y desactivar el sensor de temperatura y el potenciómetro Vref. También hay un bucle sin fin en la última parte de la rutina de inicio si no se conecta a tierra el pin Enable que se describe en el paso del Hardware. Impide que la EEPROM se sobrescriben cuando está sentado en el programador Pickit3.
Un nuevo giro en el código es el uso de una tabla de búsqueda ampliado en una dirección especificada para los valores de A/D se traducen en valores de temperatura. Al usar tablas de búsqueda como este necesita para asegurarse de que el límite de la mesa no cruza una frontera de página. Páginas se definen como partida cada 256 bytes (100 hex). En este ejemplo partimos deliberadamente el código de la tabla de búsqueda en un límite de páginas de alta (700 hex). Para calcular la dirección de llamada de este código copiamos los pedacitos superiores de la dirección de la tabla en el registro PCLATH. Los bits de dirección entonces haz utilizados por el PIC al calcular la ubicación del código de la tabla de búsqueda. Eso es algo que usted no necesita preocuparse de cuando se utiliza un lenguaje de alto nivel como C, porque el compilador añade automáticamente las instrucciones necesarias para. También es algo que normalmente no necesitará preocuparse al usar microcontroladores o microprocesadores que tienen una capacidad de dirección de 16 bits completa.
Hay otras dos cosas a destacar en la tabla de búsqueda. Puesto que estamos limitando nuestras lecturas de temperatura a dos dígitos para mayor comodidad, las cifras del 100 al 109 grados utilizan un ASCII "A" para el equivalente decimal de "10". Otra cosa a tener en cuenta es que cada entrada en la tabla ocupa dos bytes de memoria. Un byte es para la instrucción RETLW y un byte es el valor devuelto. Para mantener dentro de nuestro límite de página de 255 bytes no exceda 127 entradas.
OK, así Haz todo lo construido y funcionando pero ¿cómo obtenemos los datos registrados fuera de la foto? Con el 16F688 podríamos añadir una interfaz en serie o incluso la interfaz de Bluetooth que se describe en un episodio anterior. Para este proyecto vamos a mantenerlo simple y use las capacidades de nuestro programador Pickit3 y el MPLAB X IDE. Ya estamos familiarizados con el botón de descargar (programa) el software en el PIC, pero justo al lado de ese botón es para la carga de la foto. Si haces clic en la flecha al lado de ese botón puede ver las opciones para que las partes de memoria que desea recuperar. La opción de la parte inferior es para la EEPROM. Al hacer clic en eso, se abrirá una ventana que permite determinar el nombre y el destino del archivo hexadecimal. El archivo que se crea se puede leer utilizando el Bloc de notas de Windows y tiene el formato como este:
: 020000040000FA
: C 10420000730073007200720072007200720072001
: 104210007200720072007200720072007100710010
|
|
|
: 00000001FF
Los valores de datos reales registran start en la línea 2. Hay un total de 32 líneas de datos con valores de 8 en cada línea. El primer valor de cada línea empieza en la posición 8. Las entradas de datos se registran como valores de 16 bits, pero los dos ceros no son aplicables porque la EEPROM es de sólo 8 bits amplia. Los últimos cuatro números en cada línea de datos son una suma de comprobación y pueden ser ignorados. La tabla de búsqueda en el software específicamente establece los valores con el conocimiento que el archivo hexadecimal convierte a ASCII. En el ejemplo anterior las temperaturas registradas en la primera línea son 73, 72, 73, 72, etc.. Bueno, eso es para el episodio 8 de diversión con PIC "montaje". Estad atentos para más episodios.