viernes, 6 de junio de 2008

Día Décimosegundo (12°) - 6/6/08

Continuamos con el intento de confeccionar un programa que permitiera manejar la memoria EEPROM. Antes que nada queremos aclarar que intentamos aprender el manejo de esta memoria debido a que tenemos planeado que el módulo montado en el CAN-SAT no solo envie sus adquisiciones de datos a tierra sino que también almacene unas pocas para poder leer una vez recuperado el módulo en tierra (en caso de que el enlace de Radiofrecuencia con tierra se rompa por un periodo de tiempo o por todo el vuelo). El PIC tiene 256 posiciones de memoria EEPROM por lo tanto la cantidad de datos que podemos salvar con seguridad es bastante acotada.

Ahora sí, continuamos redactando lo que concierne a la actividad del día.
Durante la semana y por separado investigamos en nuestras casas (con los HelpTopics de MicroCode) y descubrimos nuestro error. Estabamos utilizando las instrucciones incorrectas o interpretando mal su funcionamiento. Logramos determinar el funcionamiento de las 3 instrucciones dadas previamente:

EEPROM:
Sirve para guardar datos en tiempos de compilación. Le indica al grabador de memoria que setee las direcciones indicadas de la EEPROM con los valores dados. Se hace una única vez (cuando se programa el PIC).

READ:
Sirve para leer datos en tiempos de ejecución. Es decir, para leer de la EEPROM datos almacenados en esta y guardarlos en variables que se encuentran en la memoría principal y se borraran una vez que se corte la alimentación del PIC.

WRITE:
Sirve para escribir datos en tiempos de ejecución. Es decir, para guardar datos almacenados temporalmente en variables que se encuentran en la memoría principal y se borraran una vez que se corte la alimentación del PIC.

Por lo tanto las instrucciones que necesitabamos eran READ y WRITE y no EEPROM ya que nosotros queremos guardar datos que se obtendran mientras el PIC se encuentra activo (de hecho el PIC es el dispositivo encargado de obtener estos datos).

Decidimos que el uso de Arrays era innecesario ya que de hecho se podía reemplazar por solamente 2 variables (recordando que un array es un conjunto de variables direccionable y por lo tanto supone utilizar mas espacio en memoria que solo 2 variables). Hicimos un programa utilizando variables normales (de un Byte de tamaño u 8 Bit's) que pudo ser compilado y pasado al PIC. El programa anduvo a la perfección. Aquí la programación.

Es el programa mas complejo que programamos hasta ahora y consiste en varias etapas que explicaremos:

El PIC se conecta a la PC mediante el cable que armamos y una vez prendido envía el siguiente texto que se lee por HyperTerminal:

LUEGO DE PRESIONAR UNA TECLA TIENE 2 SEGS.
SI PRESIONA EL BOTON LEE, SI NO GRABA.
REINICIE EL PIC CUANDO SE ENCIENDA EL LED POR 2 VEZ.

Esto le indica al usuario lo que debe hacer:

Una vez que el usuario presiona una tecla del teclado (cualquiera), el PIC le da 2 segundos para decidir que va a hacer. Si presiona el Botón que está en el Protoboard (conectado al PIC) se leerá lo que esta guardado en los primeros 10 sectores de la memoria EEPROM, si no lo presiona durante 10 segundos se harán adquisiciones analógicas del punto medio de un potenciómetro y las guarda en los primeros 10 sectores de la memoria EEPROM. Todos estos tiempos se indican en el Protoboard mediante un LED que se prende o apaga según la ocasión y la actividad. Una vez finalizada cualquier actividad hay que desconectar la alimentación del PIC y reconectarla, para que se resetee y así demostrar que los datos almacenados fueron realmente guardados en la EEPROM (cualquier otro dato se borra al cortarse la alimentación). Cuando se reinicia comienza de nuevo el proceso permitiendo adquirir los datos guardados en la sesión anterior o guardar nuevos.
El programa anduvo perfectamente y supuso el avance mas grande hasta la fecha. Ya estamos listos para comenzar a programar el programa final, es decir, el que irá realmente en el módulo CAN-SAT.

No hay comentarios.: