TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: WalkerSister en 30 de Marzo de 2005, 15:12:00
-
¡Saludos!
Unos compañeros de facultad y yo estamos haciendo un proyecto en el que utilizamos un PIC16F873, y tenemos problemas con la memoria EEPROM de datos.
La cosa es que necesitamos que la primera posición de la memoria contenga un 0 (por defecto contiene FF), y así se lo indicamos al programa que utilizamos para grabar el pic. Le damos a grabar, y el programa nos indica que tanto la memoria de programa como la de datos han sido grabadas correctamente. Hasta ahí parece que todo va bien, pero si al finalizar la grabación leemos el contenido del pic, el programa nos muestra que la posición en la que grabamos el 0 no contiene un 0, sino cualquier otra cosa...
¿Estamos haciendo algo mal, o es que el pic está estropeado? Aparte de comprar un pic nuevo, ¿hay alguna solución?
Gracias por adelantado.
-
Probad a grabar la eeprom por software... es decir, un programa que escriba en la eeprom... grabas ese programa en el PIC y deberia de funcionar. Pues es muy raro que el pic falle sin una negligencia nuestra...

salu2
-
Si estas programando en ASM supongo q kieres q el "0" ya este alli cuando kieras guardar el programa, usa estas dos lineas de codigo antes del programa:
Codigo:
org 2100h
de 0
Si no es asi, entonces verifica la rutina de grabacion, principalmente el orden en el q esta y asegurate de cargar el registro EEDATA con el valor q deseas almacenar en la direccion apuntada en EEADDR (q en este caso seria 0 o la primera posicion de la EEPROM)
-
Escrito originalmente por fenix_jn
Codigo:
org 2100h
de 0
¿Qué hacen exactamente estas dos líneas de código?
-
Esas dos lineas permiten la escritura directa de la EEPROM del PIC desde el momento en q se programa, es como poner la eeprom en "default", es decir, ya existiran datos en ella:
org 2100 apunta a la direccion dond comienza la primera posicion de EEPROM
de 0 es una directiva del compilador dond "de" significa datos de eeprom, el valor q le sigue es el valor q sera escrito en la posicion direccionada
-
Pero entonces, ¿graba un 0 cada vez que se ejecuta el programa, es decir, cada vez que pongamos el robot en marcha?
-
no solo una vez, veras, la directiva "de" y "org" son instrucciones especiales del compilador para el programador (o kemador) no para el programa en el pic, es decir esas 2 lineas de instruccion se ejecutaran solo 1 vez: cuando programes el pic.
Aclaro, no es que el programador sea inteligente pero si el "programa" (de windows o msdos o linux o cualkiera q uses para kemar el pic) q lo maneja (winpic, icprog, picstart...), cuando encuentra estas instrucciones especiales genera los procesos adcuados para tal fin. La escritura en la eeprom via programa de PIC se hace mediante los ya conocidos EECON1, EECON2, EEADDR y EEDATA.