Jump to content
Sign in to follow this  
wallaby

Burning EEPROM problems

Recommended Posts

Hey everyone.

 

I'm trying to make my own custom cartridge but I've run into some problems. Here are the steps I took:

 

1. Got a donor cartridge PCB (Skiing by Activision). This is a 2k game but the layout looked straight forward.

2. I got an Atmel 8-bit 5-volt 64k EEPROM.

3. I desoldered the skiing EPROM and soldered pin headers in instead. (since the Atmel EEPROM doesn't actually fit because it has more pins.)

4. I programmed the EEPROM with the Skiing ROM. I checked the data in Stella and on the programmer and the bytes match.

5. I placed wires from the headers on the cartridge to the EEPROM on a breadboard.

 

When I turn the Atari on, it usually makes random sounds and scrambled screens. It's almost like the Atari is getting random data every time it turns on. The sounds and screen data changes every time if anything is displayed at all.

 

Checking with a logic probe, it looks like everything is high. The address pins and the data pins all register as high.

 

I'm not sure what to do with the sGND and the A12 address bit. If I connect the sGND to the GND the Atari won't start. Do I just connect the A12 to the EEPROM's A12? Does the Atari use A12 or is it always on?

 

Outside of wiring it wrong, is there anything that stands out? When I programmed the EEPROM, I left the remaining ~62k empty (FF) assuming the Atari can't address it anyway.

 

Thanks!

Share this post


Link to post
Share on other sites

I read A12 is used for chip-enable. I just wired my chip-enable directly to ground. Does it get switched on and off continuously? I could put a not-gate on A12 and wire it to my CE line.

Share this post


Link to post
Share on other sites

You need to map your ROM into the address space of $1000-$1fff. A0-A11 should be wired directly to the ROM's A0-A11. A12 should be wired to a not gate and then to /CE. The remaining address pins on the ROM should be tied to ground.

Share this post


Link to post
Share on other sites

Also, since it's a 2k ROM you need to either program it twice to fill the ROM out to 4k or tie ROM A11 to ground so the first 2K is mirrored at $f800

Share this post


Link to post
Share on other sites

You need to map your ROM into the address space of $1000-$1fff. A0-A11 should be wired directly to the ROM's A0-A11. A12 should be wired to a not gate and then to /CE. The remaining address pins on the ROM should be tied to ground.

 

Ahhh. Is the address space set when I program it?

 

I'm using a hex inverter to invert the A12 line and pretty sure everything else is wired correctly.

Share this post


Link to post
Share on other sites

Did you double up the 2k image to fill the first 4k or wire eeprom A11 to ground? As you described it in your first post it sounds like you have $1800-$1fff set to $ff.

 

The address map is determined by the hardware. What you do with address bus and chip enable is what decides what gets mapped where

Share this post


Link to post
Share on other sites

Did you double up the 2k image to fill the first 4k or wire eeprom A11 to ground? As you described it in your first post it sounds like you have $1800-$1fff set to $ff.

 

The address map is determined by the hardware. What you do with address bus and chip enable is what decides what gets mapped where

 

 

This is where I'm confused. The Skiing PCB has A9 and A11 connected to +5v. My Atari Defender PCB has A11 connected to +5v. But don't you need those address lines to access the full ROM?

 

If you only have 11 address bits that only allows 2,048 bytes (in the case of Defender).

 

And Skiing is even worse at 1,024. I'm misunderstanding something fundamental.

 

I have grounded A12 on the EEPROM. Is the address bus active low? I might be redirecting the address to $1000 but only have FF at that location.

 

When I programmed the ROM, I just programmed it from the start. Should I put the ROM at $1000 on the EEPROM?

Share this post


Link to post
Share on other sites

Sounds like you may have an incorrect pinout. 2KB games should ignore A11 and 4KB games should use all 13 (A0-A12) address bits. A12 is used for CE so that leaves 12 bits for 4KB and 11 bits for 2KB games which is exactly what is required.

 

Here's what the eeprom memory map should look like for a 2KB game.

VCS	EEPROM
$0000	Not Enabled
$0fff	Not Enabled

$1000	$0000
$17ff	$07ff

$1800	$0000
$1fff	$07ff

Share this post


Link to post
Share on other sites

Ah yes. It was incorrect because there were some connections on the PCB. I had to make a jumper wire and a few changes.

 

About every 20 or 30 tries the game will show. But a strong breeze can disrupt it. I'm guessing this is because I made all the connections on a breadboard. Or would a capacitor between power and ground improve the stability?

Share this post


Link to post
Share on other sites

I think I sorted the stability problem. I had the GND connection from the cartridge connected to the GND on the EEPROM. Now the EEPROM GND isn't connected to anything but everything works?

Share this post


Link to post
Share on other sites

The clock speed is relatively low. Long wires and breadboards shouldn't prevent it from being stable. It should work better with the grounds all connected, not worse.

 

One thing I can think of is that there is a loose connection somewhere and you moved other wires while removing the ground connection. It could be a bad solder joint, open hookup wire, loose socket in the PCB, etc. I'd wiggle each wire one at a time while it's running and see if wiggling a wire causes it to stop working. If it does then I'd carefully inspect all connections related to that wire.

 

Are you using solid core hookup wire? I've always used that for these type of experiments and it's always worked well. If you're using stranded wire it may not work as well.

Share this post


Link to post
Share on other sites

The clock speed is relatively low. Long wires and breadboards shouldn't prevent it from being stable. It should work better with the grounds all connected, not worse.

 

One thing I can think of is that there is a loose connection somewhere and you moved other wires while removing the ground connection. It could be a bad solder joint, open hookup wire, loose socket in the PCB, etc. I'd wiggle each wire one at a time while it's running and see if wiggling a wire causes it to stop working. If it does then I'd carefully inspect all connections related to that wire.

 

Are you using solid core hookup wire? I've always used that for these type of experiments and it's always worked well. If you're using stranded wire it may not work as well.

 

Yes, I was baffled. But it works rock solid with no ground connection on the EEPROM. As soon as I make that one connection, everything goes south.

 

I wiggled the wires and pulled them out. That's how I found the ground disconnection actually fixed it. Nothing else has any effect at all.

 

The wires are stranded though. I wonder if the problem stems from that. I'll recreate the interface with single core wires and see how it goes.

 

Thanks again!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...