Confirmation of connections of PIC18F87J50 and external memory

Thread Starter

geekoftheweek

Joined Oct 6, 2013
1,214
What I have is a IS61LV6416-10TL http://www.issi.com/ww/pdf/61lv6416_l.pdf 64 x 16 memory that I want to connect to a 18f87j50 http://ww1.microchip.com/downloads/en/devicedoc/39775b.pdf.

The plan is to use 16 bit word write mode shown in figure 7-2. The way I understand it is you don't connect address bit 0 from the PIC to the memory address bit 0 and shift the others over so that bit 1 from the PIC is connected to address bit 0 on the memory, 2 from the PIC goes to 1 at the memory, and so on. I would use address bits 1 - 16 from the PIC The CE, OE, WR, and data connections are easy enough.

At the memory side I would connect UB and LB to ground since it will always be 16 bit.
 

Thread Starter

geekoftheweek

Joined Oct 6, 2013
1,214
I thought I would add a little update to this.

I drew up the circuit, ordered the board, put it together, and have it somewhat working. I can use the TBLWT instructions to write to the external memory. The TBLRD instructions however give me unexpected data. I can manually manipulate the signals and read the memory that way. It does actually write to the memory as expected and all addresses work correctly.
I was hoping it would read correctly when running code from external memory so I put a little three line code to change an led and return together, loaded it to the external memory, called it, and found out while it doesn't run away and reset, it doesn't quite do what it should (I loaded the rest of the memory with NOPs to test).

I have tried all the available internal clock speeds down to 31kHz and neither TBLRD or code execution works.

Unfortunately there does not seem to be much online about PICs and external memory which is kind of what lead to the original question. If I find the answer I'll update again.
 

Thread Starter

geekoftheweek

Joined Oct 6, 2013
1,214
I spoke too soon. I found a problem in the test program that would return the data it was sent instead of the memory data under the right conditions.

Long story short after reworking programming for manually working with the memory and the test programs I found the memory itself actually works. The table read or write instructions only work when they want. Part of the problem is a connection that should have been made was left out, and a connection that should have been left out was connected to the one that was left out (I swear I checked it all at least three times before having the board made).

Oh well... it was a fun learning experience at least.

Thanks all who took a look at the initial post. It seemed to get a good number of views the first day, but I have a feeling most were thinking SPI, I2C, or something else EEPROM related instead of going down this road.

On to the next project!
 
Top