Autor Tema: Duda con EEPROM  (Leído 3583 veces)

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

Desconectado Juampa_ar

  • PIC10
  • *
  • Mensajes: 25
Duda con EEPROM
« en: 28 de Noviembre de 2003, 21:23:00 »
La duda es la siguiente.. supongamos que yo tengo en la eeprom el numero 12345

Data @0,$30,$39

ok ?
Lo que necesito es poder sacar cada numero independientemente de la eeprom poder leer el 1 o el 2 o el 3 etc.. y los necesitaria en decimal, y la verdad que mucho mucho .. como ya sabran si leyeron algunos mensajes mios.. no estoy avanzado.. supongo que tendria que utilizar el READ pero como ????supongo que podria llamar cada direccion es decir si empieza del 0 leer esa direccion y asi sucesivamente.. pero la verdad es que no lo puedo hacer agradeceria su ayuda como siempre.. gracias

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: Duda con EEPROM
« Respuesta #1 en: 29 de Noviembre de 2003, 06:21:00 »
Para leer la EEPROM debes utilizar

READ direccion, byte_alto
READ direccion+1, byte_bajo

Pero tienes tu numero partido en dos bytes. Para operar con esto no lo tengo claro como hacerlo pues en PBP no se trabaja muy bien con estas cantidades.

Saludos
Ricky

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
RE: Duda con EEPROM
« Respuesta #2 en: 29 de Noviembre de 2003, 06:37:00 »

Primero declaras las posiciones de la EEPROM donde vas a guardar los datos:
(esto esta hecho para guardar bytes o word, dejando dos lugares disponibles para estos ultimos)


eeKal con 0 "lugar de la eeprom donde se guarda eeKal
ValLow con eeKal + 2 "lugar donde se almacena el valor bajo
ValHigh con ValLow + 2 "lugar de almacenamiento del valor alto
eeOffset con ValHigh + 2 "lugar de la eeprom donde se guarda Offset
eeSpan con eeOffset + 2"lugar de la eeprom donde se guarda Span




Luego puedes acceder a ellos utilizando:


read eeOffset, Offset.byte0 "levanta el valor del Offset
read eeOffset+1, Offset.byte1 "de calibracion del instrumento



Esta forma te permite volver a componer los dos bytes levantados en una word nuevamente.

Magia!!
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: Duda con EEPROM
« Respuesta #3 en: 29 de Noviembre de 2003, 09:51:00 »
Una idea que he estado pensando para hacer esto seria la siguiente:

un numero como el 37525,

1.- divido por 10000 y cojo el valor absoluto --> 3
2.- resto 30000 y me queda 7525, divido por 1000 y cojo el valor absoluto -->7

Asi hasta llegar al final.
saludos
Ricky

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
RE: Duda con EEPROM
« Respuesta #4 en: 01 de Diciembre de 2003, 05:23:00 »
Escrito originalmente por MGLSOFT

Primero declaras las posiciones de la EEPROM donde vas a guardar los datos:
(esto esta hecho para guardar bytes o word, dejando dos lugares disponibles para estos ultimos)


eeKal con 0 "lugar de la eeprom donde se guarda eeKal
ValLow con eeKal + 2 "lugar donde se almacena el valor bajo
ValHigh con ValLow + 2 "lugar de almacenamiento del valor alto
eeOffset con ValHigh + 2 "lugar de la eeprom donde se guarda Offset
eeSpan con eeOffset + 2"lugar de la eeprom donde se guarda Span




Luego puedes acceder a ellos utilizando:


read eeOffset, Offset.byte0 "levanta el valor del Offset
read eeOffset+1, Offset.byte1 "de calibracion del instrumento



Esta forma te permite volver a componer los dos bytes levantados en una word nuevamente.

Magia!!


Perdon, me olvidaba lo mas importante, como volver a escribir....
Es asi:


write Offset.byte0, eeOffset "graba el valor del Offset
read Offset.byte1, eeOffset+1 "de calibracion del instrumento


Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Juampa_ar

  • PIC10
  • *
  • Mensajes: 25
RE: Duda con EEPROM
« Respuesta #5 en: 02 de Diciembre de 2003, 21:15:00 »
Hola MGLSOFT .. gracias por tu ayuda... pero la verdad no te entendi nada.. seria mucha molestia.. que me explicaras con un ejemplo ?? por ejemplo .. grabar el 123... y recuperar uno por uno ? por que no entiendo.. que declaras y como lo usas.. ojala puedas tomar un tiempo para explicarme mejor.. por que agarre el picbasic intente hacer como vos decis pero no me funciona.. en la simulacion ...

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
RE: Duda con EEPROM
« Respuesta #6 en: 03 de Diciembre de 2003, 05:30:00 »
Para que quieres guardar un numero decimal en forma de unidad, decena, centena , etc.
Eso te malocupa un byte de EEPROM por cada digito.
Es mejor utilizar un byte para guardar un byte, de esa forma sabes que puedes guardar un numero de 16 bytes (una word) en dos bytes solamente.
A eso va orientado mi ejemplo.

Te divide una word en dos bytes, suponte que la word tiene el valor 1654 (Hexa), te lo divide en un byte alto con el valor 16H y otro byte bajo con el valor 54H.

Luego al leer la eeprom debe utilizar la misma tecnica (eso es lo que quiero mostrarte en el ejemplo), volviendo a componer la word incorporando ambos bytes, de esa forma la word va a volver a tener el valor 1654H.

Ahora bien si insistes en tener los valores decimales de unidad, decena, centena, etc, PBP tiene un comando especifico para ello.
Se trata del comando DIG.
En tu primer post pedias descomponer una word con el valor 12345.
Suponte que la word se llame Valor, y lo descompongamos como a ti te interesa:


Valor=12345
Unidad=Valor DIG 0
Decena=Valor DIG 1
Centena=Valor DIG 2
UniMil=Valor DIG 3
DecMil=Valor DIG 4



Ya tienes todos los valores puestos en 5 Bytes (eso son las variables que contienen los digitos).
Esto te viene de perillas para enviarlos a display, inclusive a un display LCD, donde se presenta la molestia de tener que justificar cuando una variable word tiene un valor chico (el comando LCDOUT justifica a la izquierda %6&"#°°°.

Eso si, no te recomiendo esta tecnica para guardar los datos en EEPROM, porque utilizas 5 posiciones de memoria para guardar un Word, siendo que algunos PIC tienen solo 64 posiciones, con solo diez word que guardes ocupaste casi toda le EEPROM!!!

Buena suerte
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Juampa_ar

  • PIC10
  • *
  • Mensajes: 25
RE: Duda con EEPROM
« Respuesta #7 en: 04 de Diciembre de 2003, 00:30:00 »
Hola.. mira.. lo que quiero hacer.. es un marcador telefonico .. estilo pulsos como antes.. para no utilizar un oscilador muy grande..por que por lo que me contaron con el DTMF necesito uno de 20 Mhz mas o menos y quiero "guardar" el numero de telefono al que deseo que llame.. por medio de un teclado matricial, y guardarlo en la eeprom y tener la posibilidad de cambiarlo sin necesidad de regrabar el pic .. sino utilizando la eeprom  el problema.. es que cuando tengo que marcar necesito que cada numero de los que guarde en la eeprom los necesito uno por uno para ponerlos dentro del for.. para lograr que vaya marcando numero por numero,y si lo guardo en HEX .. no se como sacarlos  ahora supongo que diran ahhh era para eso .. uy que nabo que es si se puede hacer mas facil.. jajajaa  por eso es que necesito un poquito de ayuda.. por que yo apenas empiezo con el picbasic.. y capaz que las ideas mias se pueden hacer mas facil.. o de otra manera.. espero alguien me de algunas ideas ... gracias MGLSOFT.... por las tuyas..  voy a seguir intentando que me funcione esta cosa..  

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
RE: Duda con EEPROM
« Respuesta #8 en: 04 de Diciembre de 2003, 06:04:00 »
Ahhh!!!
Bien, en el foro vas a encontrar una alarma hecha por Eduagra donde el mete a pelo y marca por pulsos los numeros.
Si lo quieres guardar al cargar el programa utiliza el comando DATA, sino el comando EEPROM te permite guardar en forma secuencial (lo mas recomendable) varios numeros, para luego recuperarlos en forma secuencial.
En el subforo de Telefonia y Microcontroladores, Sispic hace algo genial en cuanto al manejo de numeros a discar y comandos, en su proyecto del celular.

Suerte
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado Juampa_ar

  • PIC10
  • *
  • Mensajes: 25
RE: Duda con EEPROM
« Respuesta #9 en: 05 de Diciembre de 2003, 22:23:00 »
Ahora tengo otra duda.. es la siguiente... yo tengo un pic en el teclado .. y otro en lo que seria mi alarmita.. que cuando la termine la voy a subir asi la perfeccionamos entre todos, ahora.. yo pongo el numero que quiero llamar en la eeprom del pic del tecladito .. pero necesitaria mandar esa informacion al pic de la central de la alarma.. como podria hacer para mandar los datos de una eeprom a la eeprom del otro pic.. me explico ?? .... espero que me entiendan .. cual es el comando .. ?? como se hace? gracias..

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
RE: Duda con EEPROM
« Respuesta #10 en: 06 de Diciembre de 2003, 05:11:00 »
Podes utilizar una conexion serial entre ambos PIC, transmitiendo en forma continua o solo cuando hay un nuevo numero.
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.