Como saben. Los pic18f8xxxx tienen la ventaja de poder conectar una memoria FLASH, EEPROM o SRAM a 28 de sus pins para poder controlarlos de manera "sencilla". Me he dado a la tarea de implementar dicha interfaz pero por mas que hago, no logro mandar datos a la memoria SRAM externa que tengo conectada. Estoy utilizando C18 como compilador y el pic18f87j50 como dispositivo. Esto es lo que he hecho hasta el momento.
2.- //Habilitar el modo "Extended microcontroller mode" para activar la interfaz (el bit 7 del registro MEMCON es el que habilita o deshabilita la funcion de "bus de memoria externa"
3.- Modifiqué el Linker file de dicho pic agregando las siguientes lineas:
4.- En el main.c de mi proyecto escribi las lineas:
Al debuggear con el pickit3 puedo ver que la variable interna si se inicializa (con 256) pero la externa no (su valor es 0) lo cual me hace pensar que no esta pudiendo accesar a la memoria SRAM externa. Alguien sabe se a nivel software he hecho algo mal? Revise el hardware y no encontré ningún error. Estoy usando la memoria AS7C34098A de Alliance Memory Inc. y dos latches TI-HC373(LATCHX8) ya que la interfaz los necesita para poder funcionar. Si alguien tiene alguna idea de como puedo solucionar o si quiera encontrar algún error en el software o en el hardware le agradeceré mucho la información. Si a alguien le interesa este tema y necesita que proporcione mas información, lo haré con gusto.
Muchas Gracias
Código:
1.- // CONFIG3L - Seleccionar los pragmas necesarios para configurar dicha interfaz
#pragma config EASHFT = ON
#pragma config MODE = XM20
#pragma config BW = 16
#pragma config WAIT = ON
2.- //Habilitar el modo "Extended microcontroller mode" para activar la interfaz (el bit 7 del registro MEMCON es el que habilita o deshabilita la funcion de "bus de memoria externa"
Código:
MEMCON=1; //Byte Select Mode.
3.- Modifiqué el Linker file de dicho pic agregando las siguientes lineas:
Código:
CODEPAGE NAME=xram START=0x20000 END=0x1FFFFF PROTECTED
SECTION NAME=SRAM_BASE ROM=xram
4.- En el main.c de mi proyecto escribi las lineas:
Código:
#pragma romdata SRAM_BASE //= SRAM_BASE // Declare section to place the ext variables
// declare some variables
rom far int var_ext; //Inicializo una variable en una dirección "externa" definida en el linker file (0x20000)
#pragma romdata // return to default section - in case you have local variables
int var_int; //Inicializo una variable en la memoria interna del pic
Al debuggear con el pickit3 puedo ver que la variable interna si se inicializa (con 256) pero la externa no (su valor es 0) lo cual me hace pensar que no esta pudiendo accesar a la memoria SRAM externa. Alguien sabe se a nivel software he hecho algo mal? Revise el hardware y no encontré ningún error. Estoy usando la memoria AS7C34098A de Alliance Memory Inc. y dos latches TI-HC373(LATCHX8) ya que la interfaz los necesita para poder funcionar. Si alguien tiene alguna idea de como puedo solucionar o si quiera encontrar algún error en el software o en el hardware le agradeceré mucho la información. Si a alguien le interesa este tema y necesita que proporcione mas información, lo haré con gusto.
Muchas Gracias