Autor Tema: ¿Problema con WinPic800 al reconocer Eeprom declarada en Mplab?  (Leído 2572 veces)

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

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
¿Problema con WinPic800 al reconocer Eeprom declarada en Mplab?
« en: 18 de Septiembre de 2007, 14:54:36 »
Hola, no se si se ha discutido antes del tema en el foro pero lo comento por si alguien se había fijado...

Muchos sabreis que es facil grabar la memoria Eeprom de los PICs utilizando WinPic800. Tan facil como rellenar "a mano" los valores en la pestaña de "Datos"; de esta forma cuando grabamos la memoria de programa del PIC, también se graban los valores que pusimos en la Eeprom.

Lo que yo no sabía, hasta ahora, es que utilizando una directiva en Mplab(en ensamblador al menos, en C18 no se si se puede...) se pueden guardar valores para la Eeprom en el archivo hexadecimal. Si insertamos lo siguiente en nuestro código:

Código: [Seleccionar]
ORG 0xF00000
DE 0x0A,0x0B,0x0C, 0x0D,0x0E,0x0F

Al compilar Mplab nos incluirá esa información(de la Eeprom) en el archivo Hexadecimal.

Mi sorpresa ha sido que al abrir el archivo .hex con WinPic800 he visto que el programa sólo reconoce los bytes impares y en posiciones de memoria consecutivas. Es decir, en vez de leer

Posiciones:     1       2      3        4       5        6

                    0xA   0xB  0xC   0xD   0xE      0xF

WinPic800 lee:


Posiciones:     1       2      3     

                    0xA   0xC  0xF   

Seguidamente, he corregido los valores en WinPic800 y he comparado los 2 hexadecimales... el caso es que WinPic800 guarda los bytes de la Eeprom como si fueran palabras(2 bytes) con el byte alto a 0. Por ejemplo, Mplab guardaría los valores  consecutivos 0xA, 0xB, 0xC y 0xD(estoy obviando el resto de información de la linea del archivo .hex para no liar más  :o) como:

0A0B0C0D

... mientras que WinPic guardaría:

0A000B000C000D00

De esta forma es facil comprender que cuando Winpic800 lee un archivo generado por Mplab con información de la Eeprom, obvia el  byte alto de cada palabra... pues para él en principio deberían ser = 0.

He planteado todo lo anterior porque estoy trabajando en mi propio software de grabación. Hasta ahora he utilizado Winpic800 para fijarme en como generaba los .hex. También encontré alguna diferencia más como que genera los bytes de la palabra de configuración en 2 lineas del .hex mientras que Mplab lo hace poniendo un único byte en cada linea... pero esto no es demasiado importante pues tiene fácil solución.

Mi duda es si alguién había notado lo que ocurre con la Eeprom y Winpic800. No me atrevo a afirmar que es un "bug" porque también pienso que es posible que el resto de compiladores(que no tengo por tanto no puedo comprobarlo :D) lo hagan como Winpic800 y que el diseñador no se fijase en el compilador de Microchip, sino en otros.... pero realmente no tengo ni idea...¿?

Se me ólvido comentar que el problema en sí ocurre con los Pic18, todavía no me ha dado tiempo a comprobar otras familias. Espero que alguien pueda opinar al respecto de mi duda/exposición o que comente si le ha ocurrido lo mismo utilizando otros compiladores.

Saludos a tod@s!

(Por favor, que algún moderador elimine el duplicado... pues me aparecen mensajes de fallo en la base de datos) ==>> LO SIENTO!!!
« Última modificación: 18 de Septiembre de 2007, 14:58:40 por manwenwe »
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado Sispic

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
Re: ¿Problema con WinPic800 al reconocer Eeprom declarada en Mplab?
« Respuesta #1 en: 18 de Septiembre de 2007, 15:59:29 »
Aciva en software configuración "HEX"
Archivo .hex - Datos 18Fxxx Direccion * 2

es que los compliladores no se aclaran con eso , de hay viene la opcion .
por ejemplo con ccs no hay que activarlo  .

felices proyectos

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: ¿Problema con WinPic800 al reconocer Eeprom declarada en Mplab?
« Respuesta #2 en: 18 de Septiembre de 2007, 17:34:32 »
Gracias por tu respuesta Sispic! Acabo de probarlo y veo que se me escapó ese detalle. Tengo un par de preguntas al respecto de estas diferencias entre compiladores:

1. En esta opción que comentas("Archivo .hex - Datos 18Fxxx Direccion * 2")... ¿Datos quiere decir memoria Eeprom? Lo digo porque al activar la casilla lo único que cambia en el .hex es la Eeprom... la memoria de programa se graba igual...

2. ¿Hay alguna diferencia más entre compiladores que deba tener en cuenta? Por ejemplo acerca de los "config bits" o de las "id locs". Por ejemplo, como comenté antes ví que Mplab te "pone" cada byte de las palabras de configuración en una única linea del hex algo que me descuadra un poco pues "rompe" con el diseño Low byte - High byte de los .hex al utilizar un único byte...¿?. Si existe algo más, con otro compilador, que sea diferente a la forma con la que Winpic800 graba los .hex te agradecería que me lo comentaras pues no tengo más compiladores y me basé en Winpic800 para mis pruebas.

Mil gracias!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado Sispic

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
Re: ¿Problema con WinPic800 al reconocer Eeprom declarada en Mplab?
« Respuesta #3 en: 20 de Septiembre de 2007, 07:45:45 »
Citar
¿Datos quiere decir memoria Eeprom?


No , pero es en la eeprom en donde se guardan normalmente los datos .

Citar
¿Hay alguna diferencia más entre compiladores que deba tener en cuenta?

no los he provado todos , esta opcion que yo sepa solo se activa com mplap y pic18F

por lo demas todo es igual

suertes