Homemade EEPROM Programmer Issues - Page 1
Forum section: electronics / projects

author: ziptol
author_rank: Contributor
timestamp: February 14, 2020, 12:35:09 am
content: Hi,I've recently been working on making an EEPROM programmer using an Arduino Mega 2560, and have run into a roadblock. I am attempting to program an AT28C256. After hooking up the EEPROM and running my program, which currently writes to an address than reads from it as a test, no matter what I write, I always read 11111111 (0xFF).At first I thought it was an issue with my program or connections, but after checking all of the elements of the program and double checking all of my connections, I decided to try it on a HM62256LP-70 RAM chip, which has the same pinout as the AT28C256 and, as far as I can tell, the same timing. When I did this, it worked perfectly. At this point, I assumed that I had broken my EEPROM at some point and ordered another one.Today, I got the EEPROM, plugged it into my "programmer" and ran the program, only to get the same issue I had with my first EEPROM.At this point, I have no idea what the issue could be, would be very grateful for any troubleshooting advice someone can offer me, and am happy to answer any questions.AT28C256 EEPROM Datasheet:http://ww1.microchip.com/downloads/en/DeviceDoc/doc0006.pdfHM62256LP-70 RAM Datasheet:https://www.futurlec.com/Datasheet/Memory/62256ALP.pdfArduino Code is attached.Thanks All!

author: mikerj
author_rank: Super Contributor
timestamp: February 14, 2020, 12:59:19 am
content: Are these new parts from a reputable supplier? Are you waiting sufficient time for a write to complete (or polling the status bit) before trying to read back the data? Is the supply voltage to the part definitely remaining above the write lock-out voltage during the write operation? Have you tried disabling the software data protection (though shouldn't be enabled on genuine new parts)?

author: ziptol
author_rank: Contributor
timestamp: February 14, 2020, 01:15:36 am
content: 1. The parts are all supplied from Jameco, which, to the best of my knowledge, is reputable.2. After the write operation, the program waits 10ms before continuing, which should be well after there would be a problem with reading.3. The supply voltage is remaining at around 4.85V, which is within the 10% tolerance of 5V of the AT28C256.4. I just did the write operations to disable SDP, with no luck. The part, as far as I know, is new.

author: Helix70
author_rank: Unknown
timestamp: February 14, 2020, 11:04:09 am
content: I am not sure, but it doesn't look like you are handling CE as per the datasheet (or at all for that matter).

author: ziptol
author_rank: Contributor
timestamp: February 14, 2020, 12:50:03 pm
content: I’m holding CE low in hardware

author: Helix70
author_rank: Unknown
timestamp: February 14, 2020, 01:15:51 pm
content: Which might be incorrect.

author: ziptol
author_rank: Contributor
timestamp: February 14, 2020, 04:17:47 pm
content: From the datasheet:A low pulse on the WE or CE input with CE or WE low (respectively) and OE high initiates a write cycle.Tcs, which would be the time between CE going low and WE going low, has a minimum of 0ns and an undefined maximum. To my knowledge, this means that it does not matter when the WE and CE signals go low relative to each other, just as long as they are both low. This is the same for Tch, which is the time after the write cycle.

author: Helix70
author_rank: Unknown
timestamp: February 14, 2020, 10:35:14 pm
content: Your call. You said it isn't working, and the timing diagrams show CE being toggled, so I guess I would follow the timing diagram.

author: ziptol
author_rank: Contributor
timestamp: February 14, 2020, 11:02:39 pm
content: I gave it a shot, but no dice. Still works on the RAM, but same issue on the EEPROM. Thanks for the suggestion though.

author: oPossum
author_rank: Super Contributor
timestamp: February 14, 2020, 11:32:04 pm
content: Do what is shown in figure 21 on page 10.Write 0xAA to 0x5555, 0x55 to 0x2AAA, 0xA0 to 0x5555, and then a 64 byte block.I have built a few EPROM/EEPROM/Flash programmers and have always used the unlock sequence for 28xx series parts. That has always worked.

author: ziptol
author_rank: Contributor
timestamp: February 15, 2020, 01:25:17 am
content: YES! I FINALLY GOT IT WORKING! I found a program online that basically does the same thing that I am trying to do, and also has read/write to binary file functionality. After using its unprotect function the first time, with no success, I checked the code and found that the addresses for the unprotect command needed to be changed. I changed the address, ran the unprotect again, and finally got it to work. I had attempted to run the unprotect command in my program yesterday, but it seems that I must have neglected some element of the SDP commands, and it didn't work.Another note: The command you provided, oPossum, seems to be the protect enable, not the disable, for the chip. That didn't cause any problems, just wanted to note for anyone reading this thread in the futureThanks for your help!

author: Bud
author_rank: Super Contributor
timestamp: February 15, 2020, 02:06:15 am
content: Funny that the datasheet says the chips are supplied out of the factory with write protect disabled.

author: oPossum
author_rank: Super Contributor
timestamp: February 15, 2020, 02:15:21 am
content: Quote from: ziptol on February 15, 2020, 01:25:17 amIt will leave it protected after the write. That is typically what you want.