Autor Tema: como hacer para que eerpom inicie con un valaor de defaull  (Leído 4133 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kaki

  • PIC18
  • ****
  • Mensajes: 260
como hacer para que eerpom inicie con un valaor de defaull
« en: 03 de Junio de 2010, 12:15:07 »
Bueno despues de tanto joder eh logrado hacer andar el teclado con el lcd y que lea y guarde en la eeprom. Muchisimas gracias por todo lo que me brindaron.

Ahora tengo un problema que no se como hacer para que la eeprom inicie por unica ves en la vida con un valor de defauld ¿no se si me explico?

Voy a tratar de explicar la situasion.

  Cuando yo simulo el teclado que le doy vida. La eeprom no tiene ninguna info guardad entonces yo no puedo asisnarle ningun tipo de password por que no tengo uno viejo para que me deje hacer eso.
  Ahora esto lo tiene que hacer cuando yo resetee el micro(No recuerdo como se hacia pero ya voy a investigar) o inicio el micro por primera ves.. Si hay un corte de energia no lo tiene que hacer.

Si se pierde la energia del micro no se pierden los datos de la eepron nosierto??

Saludos espero que allan entendido algo!!
« Última modificación: 03 de Junio de 2010, 12:51:26 por kaki »

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3549
Re: como hacer para que eerpom inicie con un valaor de defaull
« Respuesta #1 en: 03 de Junio de 2010, 17:22:53 »
No  hay nada mas fácil, cuando se inicia el micro lo primero que hace es leer por ejemplo las cinco primera posiciones de la eeprom, está claro que leerá valores aleatorios, comparas los datos leídos con otros preestablecidos en programa por ejemplo 0-1-2-3-4 para respectivas direcciones, y si no coincide quiere decir que es la primera vez que arranca la placa, luego de esto escribes en las misma posiciones 0-1-2-3-4 y luego te vas a la rutina de gestión del primer arranque para pedir la clave por primera vez.

Aquí tienes ejemplos:

http://www.todopic.com.ar/foros/index.php?topic=14917.0
« Última modificación: 03 de Junio de 2010, 17:31:02 por dogflu66 »
Saludos desde Granada, España.

Desconectado kaki

  • PIC18
  • ****
  • Mensajes: 260
Re: como hacer para que eerpom inicie con un valaor de defaull
« Respuesta #2 en: 03 de Junio de 2010, 17:39:33 »
Ya encontre la solucion... Desde la plaqueta donde esta el pic le pongo un jumpe al puerto E y lo pongo como entrada. Entonces cuando yo pongo ese jumper y apretas 4 veces el asterisco te deja asignar contraceña sin pone la antigua. una ves hecho este proceso sacas el jumper y si apretas de nuevo los 4 asterisco te va a pedir el password andes de la contraceña nueva... Es lo unico que se me ocurre!!

Bueno ahora les muestro el problema

 TRISE = 1 'Pongo el puero E del pic como entrada


 if PORTE.0=1 then
                    delay_ms(50)
                    for i=0 to 3
                          iniciar_Lcd                 'se imprimira en linea1
                          Lcd_Out_CP("Nueva Clave:")  'nueva clave:
                          Leer_teclado                'y en linea2 los asteriscos
                          EEprom_write(i,kp)          'se reescribira la clave en EEPROM
                    next i
                    iniciar_Lcd
                    Lcd_Out_CP("Clave Guardada.")  'Luego se Imprimira Clave Guardad.
                end if

no se por que no me lee que el puerto esta en 1 alguien me dice por que mierda???

abajo dejo una foto del esquema electronico a ver si esta ahii el error!!

          saludos!!

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: como hacer para que eerpom inicie con un valaor de defaull
« Respuesta #3 en: 03 de Junio de 2010, 18:07:07 »
.


La inicialización de la eeprom del uC se puede hacer en el momento de programarlo. En el Ic-Prog (por ejemplo) la ventana se divide en 2: una superior que muestra la memoria de programa, y en la inferior la eeprom (en caso de que el pic tenga). Entonces podés seleccionar y modificar cualquier dirección de eeprom manualmente y, luego de la programación, queda inicializada con lo que le pongas.
Incluso hay una directiva en asm (DE) para dejar clara la inicialización en el código: más info.
Saludos.


« Última modificación: 03 de Junio de 2010, 18:10:07 por mtristan »
When you see a good move, look for a better one (Emanuel Lasker)

Desconectado kaki

  • PIC18
  • ****
  • Mensajes: 260
Re: como hacer para que eerpom inicie con un valaor de defaull
« Respuesta #4 en: 03 de Junio de 2010, 20:02:47 »
si en ic-prog pero no puedo simular eso!! por eso quiero buscar alguna forma para poder simular con proteus.

Me parece que este puede ser el camino:

DE
Sintaxis: [etiqueta]   DE   exp1[, exp2, exp3, ... ]
Indica al compilador los valores (exp1, exp2, etc) que tendrán los registros de la eeprom de datos (en caso de tener) luego de programar el PIC.
Para especificar que los valores exp se guardarán a partir de la primera dirección, se debe anteponer a la línea de la directiva:
- Para PIC18:   ORG   0xF00000
- Para PIC1x:   ORG   0x2100

Ejemplos:
Código
Código: [Seleccionar]
GeSHi (asm):

   1.
      ORG 0x2100
   2.
      psswrd DE 0x00, 0x34, 0x55, 0x00


Yo hice esto este no se si puede llegar andar!!!

Código: [Seleccionar]
ORG 0x2100
DE "1"
ORG 0x2110
DE "1"
ORG 0x2120
DE "1"
ORG 0x2130
DE "1"

Guardo un uno en los 4 bancos de EPROM si me equivoca corriganme por favor!!!
 
« Última modificación: 03 de Junio de 2010, 20:47:13 por kaki »

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: como hacer para que eerpom inicie con un valaor de defaull
« Respuesta #5 en: 03 de Junio de 2010, 21:26:51 »
.


Ese código guarda el caracter '1' en las direcciones de memoria eeprom 0x00, 0x10, 0x20 y 0x30. Si lo que buscabas era poner el número 1, deberías poner 0x01 en lugar de "1", porque lo que está entre comillas se interpreta como un string (aunque, a diferencia del string en C, no lleva \0 al final). Podés compilarlo y cargarlo en el ic-prog para ver cómo quedaría en la eeprom.
No entiendo bien a qué te referís con bancos... Si lo que querés es cargar muchos registros, podrés comprimir un poco la cosa así:
Código: ASM
  1. variable i
  2. i=0x00
  3.  
  4.         while i<max
  5.         org 0x2100+inicio+i
  6.         de dato
  7. i+=1
  8.         endw

Donde max sería la cantidad de registos (en hexadecimal) que querés que queden cargados (a partir de la dirección inicio) con dato. Ojo, no confundir éste while con el que usa el lenguaje C. Este es una directiva de asm que complia lo que hay entre while y endw mientras se cumpla la condición especificada.
Por lo del proteus, no tengo idea si soporta esta directiva  :undecided:..
¡Saludos!


When you see a good move, look for a better one (Emanuel Lasker)

Desconectado kaki

  • PIC18
  • ****
  • Mensajes: 260
Re: como hacer para que eerpom inicie con un valaor de defaull
« Respuesta #6 en: 03 de Junio de 2010, 21:36:04 »
Mikrobasic como IDE para hacer sofware de los pic.

 ¿ las soporta?

otra cosa donde tengo que poner esas directivas para que se ejecuten una sola ves.

Vancos me refiero a los registro de la eprom mal nombrado por mi!

 

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: como hacer para que eerpom inicie con un valaor de defaull
« Respuesta #7 en: 03 de Junio de 2010, 22:11:28 »
.


¡Perdón! Creía que estaba en el subforo de C  :oops:
De Basic no se nada, pero recién me fijé en Google y creo que podrías poner (teóricamente, en cualquier parte del programa):
Código: [Seleccionar]

asm

    variable i
i=0x00
 
    while i<max
    org 0x2100+inicio+i
    de dato
i+=1
    endw

end asm


Supongo que cualquier compilador que se precie aceptará las directivas estas. Aunque si lo único que necesitás es que quede guardado 0x01 en los registros del 0x00 al 0x03 (es decir, los primeros 4) pondrías directamente:
Código: [Seleccionar]

asm

    org 0x2100
    de 0x01, 0x01, 0x01, 0x01

end asm


Así te olvidás del matete anterior. Probalo y decime si lo reconoce el Proteus.
Saludos.

When you see a good move, look for a better one (Emanuel Lasker)

Desconectado kaki

  • PIC18
  • ****
  • Mensajes: 260
Re: como hacer para que eerpom inicie con un valaor de defaull
« Respuesta #8 en: 03 de Junio de 2010, 22:19:25 »
jejej estabas medio confundido jaja..

Bueno te cuento lo que me paso..Puse como me dijiste de hecho yo ya lo habia puesto pero cuando compilo me salen dos errores:
25:1 E-0 Linker error: Invalid asm 0X2100 0
26:1 E-0 Linker error: Invalid asm 0X01  0 0X01

que la verdad no tengo idea por que. se me dio por probar si habia compilado el HEX y probar en proteus y anda. me guardo todos uno en los bancos de memoria. pero quiero saber por que esto no es normal.

Ahi pongo una foto de la pantalla con el error y se ve donde esta el code en ASM.

Otra cosa que nota es que el DE no esta en azil como el ORG.
 

Desconectado JohnMacklo

  • PIC10
  • *
  • Mensajes: 5
Re: como hacer para que eerpom inicie con un valaor de defaull
« Respuesta #9 en: 31 de Diciembre de 2010, 16:31:11 »
De esta manera al prrincipio de tu programa puedes grabar en la Eprom.

Auxiliar = 360
write 16, Auxiliar.byte1  ' Byte alto del tamaño del tanque 0.
write 17, Auxiliar.byte0  ' Byte bajo del tamaño del tanque 0.

Yo utilizo dos bytes de eprom ya que estoy asignandole un valor mayor a 255. si el valor que quieres guardar es menor a 255, con usar un solo registro de la EPROM tienes suficiente.

Luego de eso, tienes que utilizar la instruccion READ para poder ver lo que tienes en ese registro y compararlo, modificarlo o borrarlo a tu antojo otra vez con la instruccion WRITE.

Desconectado babadito

  • PIC10
  • *
  • Mensajes: 11
Re: como hacer para que eerpom inicie con un valaor de defaull
« Respuesta #10 en: 12 de Enero de 2011, 01:54:19 »
hola, me parece que lo más simple para iniciar la memoria con valores es usar la función data o eeprom, fijate acá en el manual y si podés decíme si te sirve, http://www.todopic.com.ar/pbp_sp.html. Saludos!


 

anything