viernes, 30 de mayo de 2008
Día Décimoprimero (11°) - 30/5/08
READ
WRITE
EEPROM
Creímos que la instrucción EEPROM era la que nos ayudaría a grabar datos en la memoria y por lo tanto el programa contenía esta instrucción.
Al compilar el programa recibíamos un error referido a una variable. Como obteníamos este error de compilación no podíamos pasar el programa al PIC (cuando se produce un error de compilación el compilador no finaliza de generar el programa en lenguaje de máquina y por lo tanto no se puede programar un microcontrolador). Como el error tenía que ver con una variable supusimos que el error estaba en la lógica utilizada para el manejo del Array (que es la lógica que aprendimos para manejar arrays en C con Leandro Arcusin). Investigamos más y no encontramos ningún error aparente. Por lo tanto, descartada esta posibilidad, tuvimos la seguridad de que el error residía en como estabamos manejando la EEPROM. Desafortunadamente malgastamos mucho tiempo en tratar de hacer que el programa funcione sin verificar las instrucciones de manejo de memoria interna y finalizamos el día sin poder probar ningún programa en el PIC.
martes, 27 de mayo de 2008
Día Décimo BIS (10º II) - 26/5/08
La Configuración Inicial la obtuvimos de los archivos de ayuda (Help Topics) del MicroCode Studio. El programa checkea constantemente la tensión del RA0, si esta es menor que 128 (o sea la mitad de VDD (2,5V) enciende el LED, si es mayor lo apaga. El programa anduvo a la perfección.
Continuamos avanzando, decidimos integrar las mediciones analógicas con la comunicación con la PC. Aquí la programación.
El programa se comunica con el usuario a través de HyperTerminal y le avisa que presione M si quiere obtener la medición. Si presiona M (o m) el programa devuelve el valor de B0 y avisa que hay que multiplicarlo por 0,02V para obtener el Voltaje. Mas adelante utilizaremos un entorno programado por nosotros que nos permitirá presentar los datos de una forma mucho mas ordenada y legible. El programa funcionó a la perfección. El PIC quedó convertido en un Voltímetro (De 0V a 5V).
viernes, 23 de mayo de 2008
Día Décimo (10º) - 23/5/08
Volvimos a intentar programar el PIC desde la PC, fallamos nuevamente. Este resultado era frustrante ya que no era la primera vez que fracasábamos en programar el PIC cuando antes lo habíamos logrado sin mayor grado de dificultad. Mariano Foullier nos sugirió que el problema que podíamos estar experimentando era a causa del ChipMax (Grabador de memoria) y la PC (fallas en la comunicación entre estos). Solicitamos la Notebook y procedimos a utilizar el ChipMax desde allí. El programa funcionó a la perfección.

Rápidamente nos avocamos a recuperar el tiempo perdido en las clases anteriores y comenzamos a investigar acerca de las funciones que necesitábamos. Encontramos la página TODOPIC.COM que básicamente es una traducción de los Help Topics (Temas de Ayuda) del MicroCodeStudio y nos fue muy útil (junto con la ayuda de Mariano Foullier) para interiorizar las nuevas instrucciones que utilizaríamos. Estas eran las instrucciones de comunicación con la PC. Primero nos avocamos a comprender y utilizar la función SEROUT, que manda bytes en serie por uno de los bit's de algún puerto. Una vez hecho el programa lo bajamos al PIC (esta vez desde la Notebook) y anduvo a la perfección. La comunicación se realizaba a través de HyperTerminal (Software que permite utilizar en COM1 para comunicarse usando distintos protocolos). Aquí la programación.
De esta forma el programa mostraba por HyperTerminal cada medio segundo el mensaje"Hola Edgar, lo hicimos andar! Iteracion: #X" Donde X es la N vez que se repetía el loop. Esto significó un avance muy grande para nosotros, pero seguimos investigando y nos propusimos cerrar el día habiendo programado una comunicación de 2 vías (Ida y Vuelta, PC<-->Micro). En la página previamente mencionada nos informamos de la función SERIN, que recibe bytes en serie por uno de los bit's de algún puerto. Una vez programado lo pasamos al PIC y anduvo a la perfección. El programa preguntaba si había alguien y si se respondía "SI" tenía una respuesta particular, si se respondía algún otra cosa respondía con la misma respuesta siempre. Aquí la programación.
Terminamos el día con un gran avance. Nos restaba las mediciones Analógicas y aprender a hacer un sistema de adquisición de datos.
Día Noveno (9°) - 16/5/08
Para tratar de programar uno de los PIC's, abrimos todos los programas, y tratamos de cargarle una programación muy básica, que consistía en prender y apagar constantemente un LED.
Al tratar de cargar el programa en el PIC, nos topamos con un error del MaxLoader (Software del Grabador de memoria), que no reconocía el PIC, pero era porque no lo habíamos configurado previamente, así que configuramos todo debidamente y cargamos el programa.
Igualmente una vez hecho todo el circuito en el protoboard no prendía el LED. Mediante ningún medio logramos correr el programa dentro del PIC.
Decidimos no estancarnos con eso y pasar a hacer alguna otra parte del proyecto. Es así que comenzamos a probar los sensores viejos de presión que fueron montados en los años anteriores. Para eso cortamos la cobertura plástica de un cable de red y lo utilizamos como "tubo" para colocar en la boquilla de los sensores y así poder variar la presión utilizando nuestra boca, ya sea soplando (aumenta la presión) o aspirando (disminuye la presión).
La plaqueta armada en el 2006 no funcionaba. La del 2007 presentaba variaciones al soplar o aspirar pero no habíamos calibrado el sensor, no poseíamos métodos para hacerlo, y tampoco sabíamos si lo estaba, es así que la calibración del sensor se postergó para otra ocasión, para saber si las variaciones efectivamente respondían a la fuerza que soplábamos.
viernes, 9 de mayo de 2008
Día Octavo (8°) - 9/5/08
A su vez, nos dedicamos a preparar un cable que nos permitiera conectar algunos pins del PIC al puerto serie de la computadora para comenzar a programar un sistema de envío de datos con una PC. Partiendo de un cable de Mouse viejo, lo cortamos (descartamos el conector que venía con el cable ya que no usaba los pins indicados). A partir de un DB-9 nuevo y los conductores que venían dentro del cable de Mouse armamos un conector polarizado (para evitar conectarlo al revéz).

viernes, 2 de mayo de 2008
Día Séptimo (7°) - 2/5/08
Al ver que el programa seguía funcionando correctamente (a 5v) intentamos reprogramar, cargamos el siguiente programa y pudimos (aparentemente) hacerlo. Generamos 2 nuevos programas mas simples para saber si la falla era de programación, pero ni siquiera los programas mas simples andaban. Es asi que consultamos con un profesor para ver que sucedia.
El profesor Leitner nos explicó que si bien el programador del PIC podía no devolver errores, podría haberse quemado un registro (o varios) que no permiten correr un programa nuevo (esto explica por que el programa siguió andando hasta que le cargamos otro).
Es así que empezamos una búsqueda, de un nuevo PIC, que lamentablemente no teniamos y empezamos a buscar distribuidores del mismo.
Luego nos acordamos que en el departamento de Fisica, había uno que no estaba en uso, así que lo fuimos a buscar para el día siguiente.