Autor Tema: Tabla de Datos en Memoria Externa EEPROM  (Leído 4438 veces)

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

Desconectado jdaniels

  • PIC10
  • *
  • Mensajes: 49
Tabla de Datos en Memoria Externa EEPROM
« en: 23 de Abril de 2007, 21:05:18 »
Buenas, amigos la duda que tengo es para un proyecto ya algo conocido por ustedes, es una cerradura digital que contiene un teclado matricial 4x4, una LCD 16x2, y una memoria EEPROM externa, la duda es la siguiente ya se manejar la pantalla y el teclado (gracias a este foro), pero no se como guardar las claves de ingreso en la memoria EEPROM, son claves de 8 digitos lo cual serian 64byte cada una, necesito crear aprox. unas 350, y despues enviar otro codigo indicando la persona que ingreso y el lugar donde entro, pero mi duda es como guardo las clave de acceso en la memoria? he leido en otos temas que es recomendable que los guarde en forma de tabla, pero como se hace? he visto que las tablas que hacen en los ejemplos q he leido son de 2 o 3 bits? como haria si son 64byte?
si pueden poner un ejemplo pequeño nada mas no pido que me hagan todo o si alguien sabe alguna pagina o tema que me pueda ayudar se los agradeceria mucho

El lenguaje de Programacion es en C y el compilador es CCS, para simular en Proteus, el Pic es el 16f877A y la memoria pues pensaba en la 24LC256 si me recomiendan otra es bienvenida

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Tabla de Datos en Memoria Externa EEPROM
« Respuesta #1 en: 23 de Abril de 2007, 23:31:14 »
no se hasta que punto lo que dire tiene sentido... pero ahi va  :mrgreen:
primero, un caracter = 1 byte... 8 caracteres = 8 bytes (no 64). supongo que te habras cofundido con que un caracter son 8 bits (no bytes)
si usas un teclado matricial de 4x4 tienes 16 teclas. si son claves de 8 digitos, como tu dices,  necesitaras 8 bytes para almacenarla, siempre y cuando guardes esos digitos como caracteres, pero si los guardas como un numero entre 0 y 15? solo necesitas 4 bits por cada digito, es decir, 4 bytes por clave... asi reduces a la mitad la informacion a guardar,  eso si, tal vez sea mas facil, o practico guardar cada caracter como 1 byte, ya que esto lo puede hacer sin ningun esfuerzo cualquiera de los drivers de eeprom del ccs.
con respecto a la memoria que te aconsejemos... pues creo que eso dependera siempre de ti. las memorias funcionan todas igual de bien, solo se diferencian en la capacidad. mira lo que tu necesitas, si alguna vez querras ampliar y haz calculos de cual seria las mas adecuada.
RECUERDA! las memorias 24c256 son de 256 kbits, no kbytes! es decir 32kbytes ya tuve problemas con esto yo :oops:
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado jdaniels

  • PIC10
  • *
  • Mensajes: 49
Re: Tabla de Datos en Memoria Externa EEPROM
« Respuesta #2 en: 27 de Abril de 2007, 18:57:33 »
Cierto amigo gracias por la aclaratoria, una pregunta sabes que estoy haciendo una tabla de las claves de 8 caracteres cada una pero me da siempre un error

char claves [10] [8] = {"0AS45F82"};

si lo pongo solo de letras no me da el error, o si es solo numeros pero si los combino no me resulta y debo hacerlo asi ya que el teclado 4x4 tiene de la A hasta la D, que me sugieres?

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Tabla de Datos en Memoria Externa EEPROM
« Respuesta #3 en: 27 de Abril de 2007, 21:25:26 »
bueno... aqui mi consejo: NO TENGO NI IDEA!  :D
la verdad que yo he programado mucho y muy profundo con visual basic, pero de C tengo poca idea... asi que no se que significa
Citar
char claves [10] [8] = {"0AS45F82"};

por si no lo sabes, es bueno aclarar que para asignar un char a una variable se hace mediante comillas simples:

Caracter = 'a';

no se si esto producira un error en tu codigo, pero por las dudas lo digo  8)

lo que se es que un char es una variable de 8bits, es decir 256 posibilidades, que representan segun una tabla ascii una letra, un numero, un simbolo o un caracter especial... tu no necesitas los 256 caracteres de una tabla ascii, sino solo 16, que casualemente son del 0 a la F en hexadecimal. estos se pueden representar con solo 4 bits, y los puedes hacer coincidir perfectamente con tu teclado matricial: 0 = 0x00 ... 9 = 0x09 ; A = 0x0a ... F = 0x0f
de esta manera puedes almacenar en un byte 2 digitos de la clave, los 4 bits mas significativos seran uno y los 4 bit menos significativos seran otro. no creo que se complique demasiado el codigo por hacer esto, y ademas te evitas andar con caracteres que en realidad no son mas que un numero entre 0 y 255.
me gustaria ser de mas ayuda, pero habitualemente soy yo el que pregunta en el foro... no el que responde  :D
aun asi, en cualquier cosa que te pueda ayudar avisame
salu2
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Tabla de Datos en Memoria Externa EEPROM
« Respuesta #4 en: 28 de Abril de 2007, 06:11:32 »
Buenas!!! Tú estas definiendo una matriz de 10x8, en cambio sólo estás poniendo una cadena de caracteres, es normal que te de error.

Para declarar las teclas de un teclado vía matriz, debes poner algo como esto:
Código: C
  1. char TECLAS[4][4] = {{'1','2','3','A'},
  2.                          {'4','5','6','B'},
  3.                          {'7','8','9','C'},
  4.                          {'*','0','#','D'}};


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado jdaniels

  • PIC10
  • *
  • Mensajes: 49
Re: Tabla de Datos en Memoria Externa EEPROM
« Respuesta #5 en: 29 de Abril de 2007, 00:05:49 »
Ok vszener gracias por la aclaratoria, ahora tengo 2 dudas si puedes ayudarme?

1. Porque al poner #include <16f877A.h> me da error?  yo habia leido eso en un tema hace tiempo pero el usuario no explico como lo resolvio solo dijo q ya lo habia arreglado, tu sabras porque sucede esto?

2.Sabes que habia pensado en hacer una matriz por ej. llamada contraseñas de 200 datos de 8 caracteres cada una para grabarla en la memoria eeprom externa pero leyendo bien me pase de tonto porque la eeprom ya viene "ordenada" por decirlo asi, osea solo tengo que poner que direccion quiero grabar y listo, pero leyendo en este  tema aqui un usuario habla un poco mas de la memoria eeprom osea dice que esta arreglada en 128 bancos de 256 bytes cada una y que puedo especificar que banco puedo grabar y todo eso, donde puedo conseguir esa informacion mas detallada?

Desconectado Marttyn

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1835
    • IDEAA
Re: Tabla de Datos en Memoria Externa EEPROM
« Respuesta #6 en: 29 de Abril de 2007, 03:28:11 »
a tu primer pregunta no tengo respuesta, pero a la segunda tal vez mi corta experiencia con eeprom te pueda servir:
primero, puedes pensar que lo que digo es repetir lo que dicen todos, pero leete el datasheet de una eeprom, son todos casi iguales, y con leerte uno te haces una idea de todos. son datasheets cortos, y la informacion que traen REALMENTE me ayudo a comprender mejor su funcionamiento.
en resumen te puedo decir que usando los driver eeprom del ccs ya tienes todo solucionado para leer y escribir en ellas. para escribir tienes que pasarle 2 datos que son: la posicion de memoria y lo que quieres escribir. para leer le dices que direccion y te devuelve el contenido.
OLVIDATE de los bancos, de las paginas, de los words (excepto las 24c1025, que hay que tratarlas como dos 24c512)... solo tienes que saber de cuantos BYTES es tu memoria, por ejemplo, una 24c08 es de 1kbyte=1024bytes
como solo puedes escribir de a 1byte a la vez (ni mas ni menos) quiere decir que tienes disponibles 1024 "posiciones" que iran de la direccion 0 a la 1023
es tan simple como eso, le dices en que posicion quieres leer o escribir. recuerda que cada posicion son 8bits (1byte) que en tu caso tambien equivale a un CHAR.
si guardas claves de 8 char tendras la primer clave en las posiciones 0 a la 7, las segunda de la posicion 8 a la 15, etc...
entonces sabes que cada "(X-1)*8" posiciones tendras el primer CHAR de cada clave...
por ejemplo, la clave 3 estara a partir de la posicion 16 ([3-1]*8=16)
y con esto esta todo listo...
salu2
La gente ve las cosas que existen y se pregunta por qué.
Yo prefiero imaginar lo que no existe y preguntarme por qué no.

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
Re: Tabla de Datos en Memoria Externa EEPROM
« Respuesta #7 en: 29 de Abril de 2007, 14:28:46 »
Pon tú programa para ver por qué te da error. Con respecto a la memoria eeprom, sólamente centrate en que dirección vas a guardar los datos y ya está.


Suerte!!! ;)
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte


 

anything