Autor Tema: Inicializar EEPROM para PIC18F4620  (Leído 2892 veces)

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

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
Inicializar EEPROM para PIC18F4620
« en: 06 de Diciembre de 2005, 20:02:00 »
Saludos amigos, tengo una duda de como puedo inicializar la EEPROM con valores determinados para que luego estos se carguen a mi RAM. Me explico en la familia PIC16F se colocaba la dirección ORG 0x2100 y se definian los datos a grabar en la EEPROM y estos se graban de forma secuencial (uno tras otro). Este mismo procedimiento aplico al PIC18F pero con la siguiente dirección ORG 0xF00000 pero la data no se guarda secuencialmente... estuve revisando unos manuales del MPLAB donde mencionan de crear OBJETOS para poder realizar esto, sinceramente no doy con el asunto.

Pongo un pequeño fragmento de la forma que programo la EEPROM:

Codigo:

;###########################################################################
;            DEFINICION DE EEPROM
;###########################################################################
   ORG   0XF00000
   DE   0X12,0X34,0X56,0X78
   DE   0X9F,0XE1,0X08
   DE   0X00,0x01
   DE   0XFF,0XFF,0XFF
   DE   0XFF,0XFF,0XFF



Al verificar lo programado en la EEPROM aparece lo siguiente:

0X12,0X34,0X56,0X78
0X9F,0XE1,0X08,0x00
0X00,0x01
0XFF,0XFF,0XFF,0x00
0XFF,0XFF,0XFF,,0x00

como podrán observar lo que está en negrita es lo que se agrega sin que yo se lo indique.

Gracias por la ayuda que me puedan ofrecer, por cierto programo en ASM.
Saludos,
Mario.

Lima - Perú

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Inicializar EEPROM para PIC18F4620
« Respuesta #1 en: 06 de Diciembre de 2005, 23:03:00 »
Creo que estas reservando a tamaño 16 bits.
Prueba con DB 0x04,0x17,etc...

Desconectado mario_pastor

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 101
RE: Inicializar EEPROM para PIC18F4620
« Respuesta #2 en: 07 de Diciembre de 2005, 02:28:00 »
Gracias por responder Modulay, te comento que ya probe esa directiva y me sucede lo mismo. Estuve revisando el HELPTOPICSLANGUAGE TOOLSMPASM ASSEMBLER del MPLAB, espec�ficamente la directiva DE y dice lo siguiente:

Codigo:

de - Declare EEPROM Data Byte
Syntax
[label] de expr [, expr, ..., expr]
Description
de - Data EEPROM.

This directive can be used at any location for any processor.

For PIC18 devices, reserve memory word bytes are packed. If an odd number of bytes is specified, a 0 will be added unless in a code_pack section. See the description for code_pack for more infomation.

For all other PICmicro devices, reserve memory words with 8-bit data. Each expr must evaluate to an 8-bit value. The upper bits of the program word are zeroes. Each character in a string is stored in a separate word.




Revisando la siguiente directiva:

Codigo:

code_pack - Begin an Object File Packed Code Section (PIC18 MCUs)
Syntax
[label] code_pack [ROM_address]
Description
This directive declares the beginning of a section of program code or ROM data where a padding byte of zero is not appended to an odd number of bytes. If label is not specified, the section is named .code. The starting address is initialized to ROM_address or will be assigned at link time if no address is specified. If ROM_address is specified, it must be word-aligned. If padded data is desired, use db.

Usage
This directive is used in the following types of code: relocatable. For information on types of code, see Assembler Operation.

This directive is commonly used when storing data into program memory (use with db) or the EEPROM data memory (use with de) of a PIC18 device.



me sale el siguiente error a la hora de compilar:

Error[149]   Directive only allowed when generating an object file

Por favor si tuvieras alguna idea de generar OBJECT FILES te agradecería... cualquier otro miembro que me pueda colaborar con alguna idea, será bien recivida
Giño
Saludos,
Mario.

Lima - Perú

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Inicializar EEPROM para PIC18F4620
« Respuesta #3 en: 08 de Diciembre de 2005, 14:19:00 »
Estuve ojeando el manual del mpasm y parece ser que lo que hace esa directiva es rellenar con ceros las posiciones impares que dejas sin inicializar.De todos modos,me extraña que sea necesario hacer eso que dices de los objects para reservar a tamaño 8 bits.Una opción para salir del paso que te puede valer es inicializar todos tus bytes con una unica directiva,así sólo te "robaría" la última en el caso de que reserves un número impar de bytes


 

anything