Autor Tema: Defino eeprom en CCS con #rom pero MPLAB mete un byte nulo entre cada 2 bytes  (Leído 2195 veces)

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

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
He definito el contenido de la eeprom en CCS mediante:

Código: [Seleccionar]
#rom 0xf00000={25,0,0,0,0,0,11,250,1,251,60,61,62,63,64,64,251,254,10,10,251,60,61,62,63,64,64,251,248}
Pero cuando muestro la EEPROM en MPlab 8 aparece esto, es decir, hay un byte 00 entre cada 2 bytes que yo he definido. Esto provoca que el programa no se depure correctamente.



¿Por qué ocurre esto?
 PD: Estoy usando un 18F2455 y la eeprom se muestra correctamente en WinPIC800
Gracias
« Última modificación: 24 de Enero de 2008, 08:15:31 por jfmateos2 »

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Defino eeprom en CCS con #rom pero MPLAB mete un byte nulo entre cada 2 bytes
« Respuesta #1 en: 24 de Enero de 2008, 07:56:49 »
Parece ser que mplab reconoce cada valor de #rom como un dato de 16 bits, y por eso introduce el byte nulo, según deduzco de lo siguiente que encontré en el foro de CCS.

Citar
The problem you are having is because of the relationship between the output file, and the actual _word_ layout in the PIC. The PIC18 is a 16bit processor. The two successive bytes in the output file, actually correspond to the top and bottom bytes of a single output _word_. The #rom directive allows you to write words. Hence to put the values so that they appear in the successive output file locations, requires the definitions to be reformatted into words instead of bytes. Hence:
#ROM 0xF00000={0x0201,0x0403}
will put the four characters into the successive output locations.

Ahora la pregunta es:

¿Existe alguna opción en MPlab, similar a la que tiene WinPIC800, para que los valores de #rom se interpreten como datos de 8 bits.

Si no existe me va a tocar reescribir un montón de código.

Desconectado jfmateos2

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3145
Re: Defino eeprom en CCS con #rom pero MPLAB mete un byte nulo entre cada 2 bytes
« Respuesta #2 en: 24 de Enero de 2008, 08:14:41 »
Resuelto (parcialmente):

En lugar de usar simplemente

Código: [Seleccionar]
#rom 0xffffff ={...}
utilizo

Código: [Seleccionar]
#rom int8 0xffffff ={...}
y así puedo definir los datos de #rom mediante bytes en lugar de dobles-bytes.

De este modo MPlab lo reconoce correctamente, pero en WinPIC hay que hacer la siguiente modificación:

Configuración>Software>Hex: Desactivar la casilla Archivos .HEX -> Datos 18Fxxx dirección * 2

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Defino eeprom en CCS con #rom pero MPLAB mete un byte nulo entre cada 2 bytes
« Respuesta #3 en: 24 de Enero de 2008, 08:32:54 »
Veo que tú te lo guisas y tú te lo comes.

Quería comentarte lo de la opción de Winpic pero ya la has descubierto. Yo también me estuve comiendo el coco mucho rato con eso.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: Defino eeprom en CCS con #rom pero MPLAB mete un byte nulo entre cada 2 bytes
« Respuesta #4 en: 24 de Enero de 2008, 09:49:33 »
No conocia esa opcion de la instruccion #ROM  !!! :shock: :shock:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek