Burn an EEPROM with an 8-bit computer bus
HTML-код
- Опубликовано: 7 авг 2024
- Build a DIY programmer for 28C parallel EEPROM with an Arduino Nano and use it to burn an 8-bit Commodore 64 cartridge ROM
Download free open source EEPROM programmer HERE:
github.com/trevor-makes/avr-e...
github.com/trevor-makes/core
View the assembly code with Compiler Explorer:
godbolt.org/z/rW3x3navM
Visual Studio Code: code.visualstudio.com/
PlatformIO IDE: platformio.org/platformio-ide
Chapters
00:00 - Introduction
01:57 - Breadboard the Arduino
04:02 - Arduino port I/O
08:22 - Compiler Explorer
11:12 - Command-line interface
13:03 - Breadboard the EEPROM
14:02 - Coding the bus timings
17:50 - Faster write with page mode
18:55 - Import monitor commands
20:04 - EEPROM escape sequences
21:09 - Burn a Commodore 64 cartridge Наука
RUclips doesn't let me add links in my videos yet. Help me get more subscribers so I can fix it!
Find the code for this project here:
github.com/trevor-makes/avr-eeprom-programmer
github.com/trevor-makes/core
Check out Compiler Explorer here:
godbolt.org/z/rW3x3navM
I remember when I put a 28C16 EEPROM into my s100 (Explorer) system. That was the game changer of the 1980s when diskettes were still expensive and UV EPROMS were a pain. Trevor you were just in time where I'm about to use wifi and wired IOT boards to from the 8085 and 1802 systems I have. Usagi Electric on YT along with Jame Sharman and Ben Eater have been great inspiration. Love for the Z80 comes full circle.
Wow, after watching this video, I was astonished to find your channel doesn't have at least a few hundred thousand subscribers, if not millions. Top quality content, and that core library is quite nifty all in it's own right. I deeply enjoy the "no-nonsense" production style akin to Ben Eater, which is always a hallmark of a legendary teaching channel in my book, and a surefire way to gain me as a subscriber. Great work!
Thank you very much! I'm still learning to make better videos more frequently, but I appreciate your support!
Really nice walk through relating hardware setup to code. Thanks!
nice start and inspiration for a more mature product. keep it up!
WOW learned moe in this video than I have in a decade MANY THANX
I subbed more Z80 breadboard magic pls.
Nice edit. You mentioned that you weren't "totally happy with" other solutions. What didn't you like? Did they do something obnoxious, or do you have future plans that you're designing towards?
The first two were just technical details I wanted to improve, which I covered in the video:
- other designs use shift registers for the address, I used latches instead
- other designs set the data bits one at a time, I used port registers to set 4 at a time
The third issue, which I cut from the video, was how other designs either embed the ROM image in the Arduino code (so you have to reprogram the Arduino to burn a different ROM) or use their own client software on the PC to upload the ROM.
Instead, I built all the commands into the Arduino, so it works with any serial monitor program--no need to install anything else.
You could have a job for life in the Nuclear industry making legacy systems work with old eeprom. Many legacy systems are dying due to lack of engineering support and management incompetence.
Maintaining legacy computer systems sounds like a pretty relaxing job. Where would one go to start looking for that sort of work?
@@TrevorMakes its relaxing until you have to fix a bug that was caused 40yrs ago with 0 documentation and code written in cobol😂
(16:52) I think I see a potential problem here. Since you enable reading from the bus before setting the data port to input mode, and both the data port on the Arduino and the EEPROM's data pins are directly connected to the bus, won't there be a small amount of time when the both the data port and the EEPROM could be writing to the bus, causing a potential short depending on the data?
Yes, good catch! It would be safer to set input mode first and just put 2 NOPs after read enable (I initially did that). I think I figured that no harm would come from a few hundred nanoseconds of bus contention... Tbh, this was a late night decision that doesn't make much sense now. You've inspired me to change it back 😀
Great catch. Current follows so as long as it's quick the buffers on the chips should stand the jolt. If I remember correctly most chips are open collector avoiding a shorted path for current but we still face the bad data that could be latched somewhere.
Any chance you could show us the mico-mini-baby-steps to setup and be able to build the software? as loading your folder so the core library loads?
Sure thing. I'm planning a video on using VSCode and PlatformIO for Arduino, so I'll use this project as an example.
@@TrevorMakes Great! then people like me will not have to drink five cups of coffee to keep up! 🙂
I regret the 5 cups of coffee I drank before I recorded this video
Yeah I’m stuck too
I'm glad you figured it out! I've been doing this stuff too long, so I needed a reminder that not everyone knows these tools already. There's also a "Download ZIP" button on GitHub to just get the code without needing Git. I'm editing a follow up video right now with just these steps to download the tools and code. I'll think about doing another video on just using Git and GitHub, since those are very useful on their own.
What kind of EEPROM or flash for 3.3v I don't to use spi?
AT28BV64B (BV=battery voltage) is like the EEPROM in this video but at 3.3v. These only come in SMT packages, so you might need an adapter to use them.
@@TrevorMakes so many thanks
L I K E 👍👍👍👍👍 💯🧡💯💛💯 🤩🤩🤩🤩🤩
Would this also work with something like the 27C256?
This could only read the data. 27x EPROMs need a higher voltage pulse to write and usually UV light to erase. A TL866 programmer is good for those
@@TrevorMakes I'm not entirely well enough versed on the voltage requirements (could you use something like a twelve volt supply fed into the Arduino with a transistor?) but I do know that the IC I have in mind doesn't need UV erasing.
So that's something at least.
It looks like pin 1 needs to be raised from 5 V to 12.5 V during programming. If you look at the TommyPROM design, they appear to use a physical switch that you select while programming. Pin 20 (E#) is pulled low to write instead of pin 27 (WE#) like the 28C EEPROM. It seems to be recommended to raise the Vcc pin to 6.5 V during programming, but it may not be necessary? I think these changes could be made to the circuit/code from this video, but I don't think I have a 27C chip on hand to test it out.
Check the bottom of this page tomnisbet.github.io/TommyPROM/pcb/
@@TrevorMakes Thank you. This should be fun! :D
This is similar to Ben eater
I actually found Ben Eater's channel when I was starting to plan my own channel. Seeing how successful his videos are encouraged me to move forward with mine!
@@TrevorMakes cool!
Concerned about efficient read/ write access, therefore not using shift registers, but uses eeprom and Arduino framework instead of proper hardware.
Is this comedy ?
Arduino is what hobbyists are most likely to have around and be familiar with, so I'm showing how to start going beyond the Arduino framework (replacing digitalWrite with AVR port I/O etc). What would you use instead?
atmel
atmel membuat barang elektronik yang bagus 😀