Autor Tema: Problema con compilador PCH v.4.032  (Leído 2791 veces)

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

Desconectado gaby_pic

  • PIC10
  • *
  • Mensajes: 11
Problema con compilador PCH v.4.032
« en: 24 de Enero de 2008, 19:04:37 »
Buenas a todos, tengo un problema con una rutina que funcionaba perfectamente en una versión anterior del compilador PCH v.4.032, pero al instalar dicho compilador no graba un valor float en la memoria interna de un PIC 18F452

La rutina de grabación y lectura es la siguiente:

/**********************************************************************       
         ******  ESCRITURA INTERNA EN LA EEPROM  ************
********************************************************************/

write_float_int_eeprom (int n, float dato){

int i;

for (i=0; i<4; i++)

   write_eeprom(i+n, *(&dato + i));
}

/**********************************************************************
                ******  LECTURA  INTERNA EN LA EEPROM  ************
**********************************************************************/

float read_float_int_eeprom (int n){

int i;
float data;

for (i=0; i<4; i++)

   *(&data + i) = read_eeprom(i+n);

return (data);

}

El problema parece estar en la grabación. He intercalado un retardo de 6ms “delay_ms(6);” justo después de la instrucción write_eeprom(i+n, *(&dato + i)); pero persiste el problema.


¿Dónde puede radicar el problema?, ¿Qué estoy haciendo mal?


Gracias anticipadas.


Gaby.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Problema con compilador PCH v.4.032
« Respuesta #1 en: 24 de Enero de 2008, 23:00:29 »
Y en que PIC lo usabas antes?? :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado gaby_pic

  • PIC10
  • *
  • Mensajes: 11
Re: Problema con compilador PCH v.4.032
« Respuesta #2 en: 25 de Enero de 2008, 06:10:26 »
El mismo MGLSOFT.  :(


Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Problema con compilador PCH v.4.032
« Respuesta #3 en: 25 de Enero de 2008, 07:17:08 »
¿Y necesitas hacerlo con esa versión o puedes volver a la anterior?

Desconectado gaby_pic

  • PIC10
  • *
  • Mensajes: 11
Re: Problema con compilador PCH v.4.032
« Respuesta #4 en: 25 de Enero de 2008, 16:29:41 »
Buenas Nocturno, si que puedo volver a la versión anterior, pero quiero saber el porque. El codigo final es mucho más reducido en la versión nueva y no entiendo porque no funciona la rutina de grabación. Con esta nueva versión puede trabajar mejor con datos boleanos y realizar arrays de boleanos, cosa que con la anterior versión no podias hacer.

Graba perfectamente con valores int, pero con valores float no los memoriza correctamente.

¿Conoces otra forma de escribir y leer un dato float en Eeprom?

Saludos


Gaby.

Desconectado Jorge_

  • PIC10
  • *
  • Mensajes: 30
Re: Problema con compilador PCH v.4.032
« Respuesta #5 en: 25 de Enero de 2008, 17:36:51 »
Código: C
  1. void write_float_eeprom(long int n, float data) {
  2.    int i;
  3.    for ( i = 0; i < 4; i++ )
  4.       write_eeprom( i + n, *((int8*)&data + i) );
  5. }
  6.  
  7. float read_float_eeprom(long int n)
  8. {
  9.     int i;
  10.     float data = 0;
  11.  
  12.     for ( i = 0; i < 4; i++ )
  13.         *((int8*)&data+i)=read_eeprom(i+n);
  14.  
  15.     return (data);
  16. }

Un error que quizas tengas mas adelante es que en tu funcion utilizas un int para la dirección de la memoria, y no estoy seguro de cuanto tenga de eeprom ese pic, pero seguro que tiene mas de 255 posiciones de memoria.



« Última modificación: 25 de Enero de 2008, 17:49:24 por Jorge_ »

Desconectado gaby_pic

  • PIC10
  • *
  • Mensajes: 11
Re: Problema con compilador PCH v.4.032
« Respuesta #6 en: 25 de Enero de 2008, 19:48:56 »
¡¡YA FUNCIONA!!, Muchas gracias Jorge, el error estaba en que no he especificado el tipo de dato (int8). Para tu información la memoria Eeprom interna del 18F452 es de 256 bytes.

¡¡Todos los días se aprende algo!!

Gaby.

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 679
Re: Problema con compilador PCH v.4.032
« Respuesta #7 en: 27 de Enero de 2008, 22:51:12 »
Hola, medio tarde pero el problema que tenias es que tanto el puntero de direcciones de la memoria como las posiciones son de 16 bits (long int), por eso no te andaba, se podria optimizar la rutina para usar cada word y asi duplicas la capacidad de memoria, pues son 256 words, con lo que tenidras 512 bytes para guardar.

saludos
ARIEL


saludos
PikMan

Desconectado Jorge_

  • PIC10
  • *
  • Mensajes: 30
Re: Problema con compilador PCH v.4.032
« Respuesta #8 en: 27 de Enero de 2008, 23:01:06 »
¿cómo es eso, podrias dar un ejemplo? Que el puntero sea de 16bits sólo modifica en como accedes a la memoria, no la capacidad de la misma.

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 679
Re: Problema con compilador PCH v.4.032
« Respuesta #9 en: 28 de Enero de 2008, 01:17:49 »
Hola, JORGE, el puntero es de 16 bits, y cada posicion de memoria es de 16 bits, osea que puedes guardar una word, OK?, si la necesidad es de guardar datos de 8 bits (bytes) solamente, puede hacer una rutina que use cada word como 2 bytes y asi obtendrias 512 bytes, no se si soy claro con la explicacion.

Aca tiene un hilo que habla de lo mismo http://www.todopic.com.ar/foros/index.php?topic=20200.0

saludos
ARIEL
« Última modificación: 28 de Enero de 2008, 01:22:34 por pikman »
saludos
PikMan

Desconectado Jorge_

  • PIC10
  • *
  • Mensajes: 30
Re: Problema con compilador PCH v.4.032
« Respuesta #10 en: 28 de Enero de 2008, 10:17:04 »
¿Tu dices que la capacidad entonces de 256 words y no 256 bytes?. Pero el datasheet dice 256 bytes, y 256bytes son 256bytes, aunque los ordenes de a 8bits o de a 16bits.
Entiendo lo que dices, pero me parece extraño que sea así, aunque como recien estoy empezando con la familia 18, todo suena confuso en mi cabeza ahora.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Problema con compilador PCH v.4.032
« Respuesta #11 en: 28 de Enero de 2008, 10:54:53 »
En el datasheet dice textualmente:

These devices have 256 bytes of data EEPROM with
an address range from 0h to FFh.

Por lo tanto tiene 256 bytes de memoria.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 679
Re: Problema con compilador PCH v.4.032
« Respuesta #12 en: 28 de Enero de 2008, 11:32:06 »
Perdon, es que estoy con el PIC18F4620 y por eso me confundi, que tiene 1024 bytes.

saludos
ARIEL
saludos
PikMan