Autor Tema: Grabar datos en micro y despues de haber ejecutado el programa,leerlos  (Leído 3399 veces)

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

Desconectado Nash7

  • PIC10
  • *
  • Mensajes: 17
Grabar datos en micro y despues de haber ejecutado el programa,leerlos
« en: 02 de Septiembre de 2005, 12:46:00 »
Bueno... si lo que quiero es grabar en el micro ciertos tiempos para despues leerlos mediante el Winpic800... Por lo que he visto en el manual de CCS mediante #rom puedo grabar los datos en la memoria...¿es cierto? lo que no tengo muy claro es como funciona y de cuantos bits tiene que ser cada dato ya que los tiempos los saco del timer1 que es de 16bits...y despues ¿como puedo reconocer los datos en el win pic?

Creo que me estoy volviendo loco y ya no tengo muy claro si estoy diciendo cosas con sentido...locoA ver si alguien entiende lo que quiero decir y me ayuda...

Mil Gracias


Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Grabar datos en micro y despues de haber ejecutado el programa,leerlos
« Respuesta #1 en: 03 de Septiembre de 2005, 05:20:00 »
Hola!!!jeje vamos haber, si los tiempos a grabar en el dispositivo es corriendo el programa, es decir, tu dices que quieres almacenar ciertos valores que te dan los timer"s, mediante rom no puedes(o yo no lo he visto ni me lo han enseñado jeje), mediante rom lo que puedes es declarar ciertos valores en una direccion de memoria, pero todo esto antes de ejecutar el programa, es decir que si los valores te los da el timer no puedes grabarlo despues en la rom, ya que si miras la help del CCS veras que la rom se declara de esta manera:
#rom  0x2100={1,2,3,4,5,6,7,8}
En la direccion 0x2100 se guardan los valores,en rom(memoria solo se grabado una vez),1 2 3.....8. Donde si puedes almacenarlos los valores que dices es en la eeprom interna del dispositivo:
Para escribir, esta instruccion: write_eeprom (address, value);
Para leer, esta instruccion: value = read_eeprom (address);
Y asi kedara almacenados los datos en memoria eeprom y despues en el WinPic en zona eeproms podras ver los valores almacenados, eso si ten en cuenta la capacidad de almacenamiento de la eeprom del dispositivo y si es de 8 o 16 bits.
Suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: Grabar datos en micro y despues de haber ejecutado el programa,leerlos
« Respuesta #2 en: 03 de Septiembre de 2005, 07:04:00 »
Perdon, pero la instruccion #rom 0x2100 yo la uso y me graba en tiempo de programacion datos en la direccion de memoria con el offset inicial que ponga, en este caso a partir de la cero.
Si miras en el ejemplo de numeros grandes en LCD veras como utilizo esto para poner en eeprom los bytes que luego se usaran para los segmentos....

En este lugar encontraras las rutinas de las que hablo....Sonrisa GiganteSonrisa Gigante

http://miarroba.com/foros/ver.php?foroid=256746&temaid=1539858&msgid=12424363
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Grabar datos en micro y despues de haber ejecutado el programa,leerlos
« Respuesta #3 en: 03 de Septiembre de 2005, 09:03:00 »
Jarrrr!!!locojeje bueno entonces rectifico.....si se puede...jeje dicen que es bueno aprender algo cada dia no?jeje de todas formas mirate lo de la eeprom ke kizas es lo que estes realmente buscando....gracias MGLSOFT por la rectificacionGiño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: Grabar datos en micro y despues de haber ejecutado el programa,leerlos
« Respuesta #4 en: 05 de Septiembre de 2005, 08:15:00 »
Nobleza obliga...
Estuve ahondando el tema y realmente la instruccion permite ambas cosas, tanto guardar un dato en eeprom en tiempo de grabacion como tambien en la rom de programa.
Por lo tanto Vzener tiene tambien la razon !!!Sonrisa GiganteSonrisa GiganteSonrisa Gigante
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: Grabar datos en micro y despues de haber ejecutado el programa,leerlos
« Respuesta #5 en: 05 de Septiembre de 2005, 08:49:00 »
Jeje...¿hay algo mas bonito que poder llevar la razon todos???jeje pues ya sabemos dos formas de grabar en eeprom y romGiño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado Nash7

  • PIC10
  • *
  • Mensajes: 17
RE: Grabar datos en micro y despues de haber ejecutado el programa,leerlos
« Respuesta #6 en: 07 de Septiembre de 2005, 12:34:00 »
Vale chicos, pero y si quiero grabar un número de 16bits?, el problema es que estoy intentando hacer unos cálculos con el timer, y, o me está multiplicando en un solo byte (que creo que es lo que pasa, lo que me hace no entender nada de lo que ocurre), o no presenta bien los datos en la eeprom....
A ver que os parece, aqui os pongola función donde se hacen los cálculos:

unsigned int16 calculos(int F1, unsigned int16 T)              //F1 = nº de overflows
{                                                                                        //T valor del Timer1 actual

   unsigned int16  T1=0, Tt = 0, j=0;
   unsigned int32 T2;


   T1 = (F1 * 174);            //174ms overflow del Timer1 con un reloj de 12MHz
   T2 = (T * 8);
   T2 = (T2 / 3);                 //Paso a us el tiempo del timer
   j = T2 * 0.001;                  //trunco la suma quedándome con ms
   a1 = T1&0x00ff;
   T1>>=8;                            //máscara para presentar los datos en el winzip800
   a2 = T1&0x00ff;
   cont++;
   write_eeprom(cont,F1);
   cont++;
   write_eeprom(cont,a2);
   cont++;
   write_eeprom(cont,a1);
   Tt = T1  + j;                        //Sumo los tiempos parciales

   return (Tt);

}

Creo que lo que realmente pasa es que al multiplicar, multiplica el F1 por 174 y lo mete en un sólo byte quedando (cuando F1 = 9), 1E en vez de 061E

AYUDA!!!!!!!

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
RE: Grabar datos en micro y despues de haber ejecutado el programa,leerlos
« Respuesta #7 en: 07 de Septiembre de 2005, 14:36:00 »
Te paso estas dos funciones, que escriben y leen un numero de 16 bits en eeprom, sacadas del driver llamado Internal_EEprom.c que viene con el CCS.



// Purpose:    Write a 16 bit number to internal eeprom
// Inputs:     1) An eeprom address
//             2) The 16 bit number to write to internal eeprom
// Outputs:    None
void write_int16_eeprom(INT_EEPROM_ADDRESS address, int16 data)
{
   int8 i;

   for(i = 0; i < 2; ++i)
   {
     write_eeprom(address + i, *(&data + i));
   }
}


// Purpose:    Read a 16 bit number from internal eeprom
// Inputs:     An eeprom address
// Outputs:    The 16 bit number read from internal eeprom
int16 read_int16_eeprom(INT_EEPROM_ADDRESS address)
{
   int8  i;
   int16 data;

   for(i = 0; i < 2; ++i)
   {
     *(&data + i) = read_eeprom(address + i);
   }

   return(data);
}




Espero te sirvan, pero ten en cuenta que si grabas dos bytes en EEprom tendras mas de 36 milisegundos de retraso en las escrituras que deben esperar al menos 18 milisegundos por byte para escribir OK...Sonrisa GiganteSonrisa GiganteSonrisa Gigante
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.