• Domingo 22 de Diciembre de 2024, 15:54

Autor Tema:  Quemar Datos Permanentemente  (Leído 4082 veces)

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Quemar Datos Permanentemente
« en: Jueves 13 de Octubre de 2005, 00:47 »
0
:huh: hola, en el proyecto que estoy realizando, tengo 100 datos con el que el programa debe trabajar, y no deben ser modificados solo leidos, mi pregunta es como guardo estos datos de manera permanente de tal forma de que cada vez que se corra el programa no estarlos introduciendo si no que ya esten ahi, si no mal entiendo debo quemarlos en la eeprom verdad????, con las rutinas que estan en el datasheet(pic16f87), mi pregunta es creó el programa que introduce los 100 numeros con las rutinas de quemado de eeprom, lo quemo en el micro y este programa quemara los datos en la eeprom permanentemente verdad?,  luego tendria que borrar este programa, pero los datos ya estarian en la eeprom verdad????????????? :huh:
 :alien:  :comp:

si estoy equivocada, por favor haganmelo saber por favor. :comp:
No basta tener buen ingenio; lo principal es aplicarlo bien.

J1M

  • Miembro activo
  • **
  • Mensajes: 58
    • Ver Perfil
    • http://www.hobbypic.com
Re: Quemar Datos Permanentemente
« Respuesta #1 en: Jueves 13 de Octubre de 2005, 15:19 »
0
Si no quieres variar esos valores, quizá lo mejor sea almacenarlos en la ROM del PIC, de esa forma quedaran permanentes y no tendran q estar escribiendose en la eeprom cada vez q se inicie el sistema.

en ASM no se como se hace, te lo pongo en C para el compilador CCS y quizá te pueda servir de ayuda:

Syntax:
#rom address = {list}
 
Elements:
address is a ROM word address, list is a list of words separated by commas

Examples:
#rom  0x2100={1,2,3,4,5,6,7,8}

saludos!
..]Hobby[/color]PIC ]
Si puede pensarse, puede hacerse...

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Quemar Datos Permanentemente
« Respuesta #2 en: Jueves 13 de Octubre de 2005, 23:33 »
0
:huh: Gracias por tomarte la molestia, pero yo no se programar en C, ademas este proyecto debe ser hecho en ensamblador.

gracias de todas formas.


sigo en espera de ayuda S.O.S  :(
No basta tener buen ingenio; lo principal es aplicarlo bien.

oldkami

  • Miembro activo
  • **
  • Mensajes: 50
    • Ver Perfil
Re: Quemar Datos Permanentemente
« Respuesta #3 en: Miércoles 19 de Octubre de 2005, 05:57 »
0
lo que comentas puede ser realizado de muchas formas.

lo mas sencillo, y si esos datos no se van a modificar, es almacenarlos en forma de tabla, y realizar una rutina para accesarlos como tal.. puedes encontrar muchos ejemplos de implementación de tablas.
eJ.

movlw Posicion ;el dato que deseas consultar
call   TABLA    
banksel miregistro
movwf miregistro ; mueves al dato a donde necesites.

TABLA
      addwf PCL,F             ;computa la posición
      dt 0x01,0x02, d'10',a'H' ; los datos que no se deben perder :)
      dt 0x10,...,0x1F
      dt ,...,0xFF

este ejemplo es muy basico y la tabla debe ser ubicada de tal forma que no pase los limites de la pagina, recuerda que el MPLAB posee unlimite de caracteres por linea, por eso hay que colocar las instrucciones dt consecutivamente.

recuerda que la EEPROM, y la FLASH son practicamente lo mismo y la instrucción que escribe la una, sirve para escribir la otra, este es el principio que utilizan los bootloaders,  solo que la escritura de la flash es algo más lenta y si estoy bien el programa detiene su ejecución mientras se ejecuta. Lo que se guarde en cualquiera de las dos no se borra, bueno al menos en muy muy largo tiempo :). si lo que necesitas es que estos datos sean modificables desde otra fuente como un PC y queden fijos, tal vez lo mejor sea implementar algo parecido a un bootloader.

suerte

oldkami

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Quemar Datos Permanentemente
« Respuesta #4 en: Viernes 21 de Octubre de 2005, 00:50 »
0
:huh: gracias por su tiempo, pero sigo en las mismas, no se programar en C y lo de la tablas, no entiendo donde debo guardarla ni como


pero gracias de todas formas :unsure:
No basta tener buen ingenio; lo principal es aplicarlo bien.

Ian...

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Quemar Datos Permanentemente
« Respuesta #5 en: Viernes 21 de Octubre de 2005, 19:58 »
0
Hola KAREN81 a ver si te entiendo ya q no te explicaste del todo bien...
Lo q te piden es almacenar los primeros 100 datos q se te ingresan por teclado(deberia ser matricial o alguno por el estilo me imagino)...esos 100 datos vos los tenes q guardar en la eeprom y luego mostrarlos???
 por ejemplo te piden el ingreso numero 80 de 100 q ingresaste y vos tendrias q mostrar el numero q se guardo en dicha posicion....???
 otra cosa vos no sabes guardar en la eeprom o no te imaginas como realizar el programa???...
 trata de expresarte un poco mejor asi logro entenderte!!!!
espero tu respuesta....
  bye

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Quemar Datos Permanentemente
« Respuesta #6 en: Viernes 21 de Octubre de 2005, 22:46 »
0
Cita de: "karen81"
:huh: gracias por su tiempo, pero sigo en las mismas, no se programar en C y lo de la tablas, no entiendo donde debo guardarla ni como


pero gracias de todas formas :unsure:
Maniana sin falta te traigo las rutinas de grabacion y lectura que utilizo, son para el F873 pero tienen que funcionarte bien para el F87, esta verificadas, las miras y luego vemos como las adaptas. Saludos :)

PD: Disculpa la demora y la poca atencion :ph34r: .. pense que encontrarias lo que necesitabas :unsure:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Quemar Datos Permanentemente
« Respuesta #7 en: Sábado 22 de Octubre de 2005, 01:15 »
0
:o talvez no me explique bien.
Citar
Lo q te piden es almacenar los primeros 100 datos q se te ingresan por teclado(deberia ser matricial o alguno por el estilo me imagino)...esos 100 datos vos los tenes q guardar en la eeprom y luego mostrarlos???
por ejemplo te piden el ingreso numero 80 de 100 q ingresaste y vos tendrias q mostrar el numero q se guardo en dicha posicion....???

noooo, esos 100 datos deben estar ahi con el valor constante, el programa recibe otros datos serialmente los trabaja con alguno de estos 100 datos y luego los envia serialmente, la cuestion es que estos 100 datos son constantes, valores preestablecidos. y durante la ejecucion del programa solo estaria leyendo de la eeprom

Citar
otra cosa vos no sabes guardar en la eeprom o no te imaginas como realizar el programa???...

las rutinas de quemado de la eeprom las tengo (las que estan en el datasheet) aunque te agradeceria mucho Jonathan si posteas las rutinas que dices, mi pregunta es:

quemo en el micro el programa que guarda los datos en la eeprom,
luego debo borrar este programa, para quemar el programa principal  , pero los 100 datos ya estarian en la eeprom????

  talvez ahora me entiendan.

gracias por su tiempo
No basta tener buen ingenio; lo principal es aplicarlo bien.

Ian...

  • Miembro activo
  • **
  • Mensajes: 47
    • Ver Perfil
Re: Quemar Datos Permanentemente
« Respuesta #8 en: Sábado 22 de Octubre de 2005, 02:02 »
0
ahi estamos creo q te entendi... si sobre escribis en la misma direccion de memoria (si estas salvando bien ese numero) queda guardado el ultimo numero ...encuanto a las subrutinas si yonathan no te las pudo pasar yo ell lunes te las paso tengo para el 16f84...877....y 628
 bye
espero haberte entendido la ultima parte sino disculpame....

J1M

  • Miembro activo
  • **
  • Mensajes: 58
    • Ver Perfil
    • http://www.hobbypic.com
Re: Quemar Datos Permanentemente
« Respuesta #9 en: Sábado 22 de Octubre de 2005, 12:19 »
0
Karen y pq no escribes los datos en la ROM (FlashROM) en vez de en la EEPROM, con eso te aseguras q los datos no van a borrarse ni sobreescribirse y no tienes q hacer dos programas..... lo veo mas lógico. Estoy seguro q el 'modo' de hacerlo debe venir en el datasheet.
..]Hobby[/color]PIC ]
Si puede pensarse, puede hacerse...

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Quemar Datos Permanentemente
« Respuesta #10 en: Sábado 22 de Octubre de 2005, 14:46 »
0
Citar
quemo en el micro el programa que guarda los datos en la eeprom,
luego debo borrar este programa, para quemar el programa principal , pero los 100 datos ya estarian en la eeprom????

Mira, no necesariamente primero quemas para almacenar los datos y luego borras para quemar el prog principal, tmb puedes hacer el uso de banderas, es decir, si los datos son constantes puedes iniciar el programa quemando los datos que seran permanentes dentro de la eeprom: ej

Código: Text
  1.  
  2. INICIO
  3. ..
  4. 1 - miro flag para ver si los datos estan en la eeprom
  5. ...
  6. 2 - "están" salto al programa PRINCIPAL
  7. ...
  8. 3 - "No Están" grabo los 100 datos
  9. ...
  10. 4 - termino de grabar 100 datos?
  11. ...
  12. 5 - si -> coloco la bandera de datos grabados y voy a PRINCIPAL
  13. ...
  14. 6 - no -> regreso al 4
  15. ...
  16.  
  17. PRINCIPAL
  18. ...
  19. ...
  20. aqui tu codigo normal
  21. ...
  22.  
  23.  
  24.  

Esto se entenderia de la siguiente manera, como los datos son permanentes dentro de la eeprom, puedes grabar los 100 datos mas 1 mas que sera la bandera, cuando inicies el programa chequeas esa bandera, si esta activada (o desactivada si prefieres) saltas a principal, de lo contrario grabas los 100 datos... solo grabara los 100 datos cuando inicies por primera vez el programa.. a partir de ahi solo chequea y salta a principal... de esta manera te evitas hacer 2 programas y borrar el que quemo los datos para poner el programa principal.. aparte ya te quedan las rutinas por si necesitas variar algun dato en un futuro.. aver si me comprendes :).. por la tarde tienes las rutinas ;) . Saludos :hola:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»

karen81

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Re: Quemar Datos Permanentemente
« Respuesta #11 en: Domingo 23 de Octubre de 2005, 00:39 »
0
Citar
Karen y pq no escribes los datos en la ROM (FlashROM) en vez de en la EEPROM, con eso te aseguras q los datos no van a borrarse ni sobreescribirse y no tienes q hacer dos programas..... lo veo mas lógico. Estoy seguro q el 'modo' de hacerlo debe venir en el datasheet.

podria quemarlos en la flash pero mi duda es la misma ;)
Citar
quemo en el micro el programa que guarda los datos,
luego debo borrar este programa, para quemar el programa principal , pero los 100 datos ya estarian en la flash????

gracias igualmente por tu tiempo

la idea que me das jonathan es buena pero son demasiados datos, y el programa principal es bastante largo no creo que me quepa, pero voy a revisar  :comp: ,

gracias :hola:
No basta tener buen ingenio; lo principal es aplicarlo bien.

Alternative

  • Miembro MUY activo
  • ***
  • Mensajes: 176
    • Ver Perfil
Re: Quemar Datos Permanentemente
« Respuesta #12 en: Martes 25 de Octubre de 2005, 21:30 »
0
Hooola Karen81

Mira, ya entendi tu objetivo, tratare de explicarme, haber si te entendi bien.

1. Deseas almacenar datos en la memoria EEPROM
2. Una ves que estan tus datos, deseas borrar tu PIC y realizar un programa
    en donde accederas los codigos antes programados en la memoria EEPROM

Tu idea principal es que el codigo que realisas es muy grande y al hacer estos
dos pasos te ahorrarias instrucciones en tu nuevo programa y  no hacer todo
en tu programa principal lo que menciona Jonathan, ya que si lo realizas como
 dice Jonathan no crees que te alcance la memoria para realizar tu programa.

Bueno, me resulto interezante asi que lo realice para probar,
pero desafortunadamente al borrar un PIC
tambien borra la memoria EEPROM colocandoles 0xFF en toda sus localidades

Realice el programa en el PIC16F877A, lo cheque, y lo prove pero esta idea
desafortunademente no te funcionara, lo ideal es que trates de realizar metodos
en los que utilices menos lineas, y utilizacion de tablas o hacerlo como dice
Jonathan y esperemos que te alcance la Memoria para tu proyecto

coloco el codigo ASM para que lo cheques
y te desengañes por ti misma
lo hice que almacenara 3 codigos en la memoria EEPROM en las
direcciones 0     dato colocado = 1
direcciones 1     dato colocado = 3
direcciones 2     dato colocado = 7
direcciones 3     dato colocado = 15

estos codigos los desplegara por el PORTB, dandoles un pequeño
retardo para que se visualicen

en la linea 40 se encuentra un "goto lectura" el cual esta como comentario

1.  programa el pic con el codigo como esta
2. Prueba que te saca los datos 1, 3 7 y  15 por PORTB
3. borra el PIC y programalo ahora pero abilitando lo que estaen la linea 40
    esto para que no programe la EEPROM y solo lea las direcciones
    0, 1, 2 y 3
4. Los datos Obtenidos son 0xFF y no los datos
    como los que almacenastes cuando programastes el PIC
    anteriormente



Saludos
bye

pmluis  :hola:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

© Jonathan ©

  • Moderador
  • ******
  • Mensajes: 1671
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.einstec.com.ar
Re: Quemar Datos Permanentemente
« Respuesta #13 en: Martes 25 de Octubre de 2005, 23:41 »
0
Citar
Bueno, me resulto interezante asi que lo realice para probar,
pero desafortunadamente al borrar un PIC
tambien borra la memoria EEPROM colocandoles 0xFF en toda sus localidades

Hola Alternative, sino me equivoco existe la posibilidad de no borrar la EEprom cuando borras el pic, creo que en el mismo programa puedes desmarcar la opcion de borrar la eeprom, voy a rebizar porque nunca le preste atencion. Saludos :) y exelente tu prueba  :lightsabre:
EINSTEC Tecnología «La única fuente del conocimiento es la experiencia.»

«Lo importante es no dejar de hacerse preguntas.»