From 222e05e7737561f34bb8f70a7ecba3e32234564f Mon Sep 17 00:00:00 2001 From: pottaocoding Date: Tue, 15 Jul 2025 19:42:42 -0700 Subject: [PATCH 1/5] Update README.md --- README.md | 44 ++------------------------------------------ 1 file changed, 2 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index 387d78f..abb764a 100644 --- a/README.md +++ b/README.md @@ -1,43 +1,3 @@ -# Arduino EEPROM programmer +this is a fork of the eeprom programmer by ben eater that use the nop instruction on the arduino nano to fix to too long delay on the write enable -Copyright 2017 Ben Eater - -This code and schematic are [MIT licensed](http://en.wikipedia.org/wiki/MIT_License). - -## Circuit - -This is a simple circuit for programming the 28C16, 28C64, 28C256, and similar parallel EEPROMs using an Arduino. Since the Arduino doesn’t have enough pins to directly control all of the address, data, and control lines of the EEPROM, two 74HC595 shift registers are used for the 11 address lines (15 for the 28C256) and the output enable control line. - -![Schematic of EEPROM programmer](https://raw.githubusercontent.com/beneater/eeprom-programmer/master/schematic.png) - - -## What’s here? - -There are four different Arduino sketches that correspond to several YouTube videos. A lot of the code is duplicated since each sketch built on the previous ones. But I’ve kept them separate to make it easier to find the exact code that goes with a particular video: - -### 1. Basic programmer - -The code in [`/eeprom-programmer`](/eeprom-programmer) is the basic programmer that programs a few bytes into the EEPROM and dumps the contents. - -That software, along with the EEPROM programmer’s hardware are described in detail in the following video. This is a good place to start if you’re looking for the fastest way to make sense of this repo: -- [Build an Arduino EEPROM programmer](https://youtu.be/K88pgWhEb1M). - -### 2. 8-bit decimal display - -The code in [`/multiplexed-display`](/multiplexed-display) is for programming an EEPROM to be used to decode 8-bit values and drive a 4-digit 7-segment display. Check out this video for more: -- [Build an 8-bit decimal display for our 8-bit computer](https://youtu.be/dLh1n2dErzE). - -### 3. 8-bit computer microcode - -The code in [`/microcode-eeprom-programmer`](/microcode-eeprom-programmer) is for programming a pair of EEPROMs to serve as an instruction decoder for an 8-bit breadboard computer. You’ll probably want to watch the whole 8-bit computer playlist (see below) for this to really make sense, but the specific videos describing the code here are: -- [Reprogramming CPU microcode with an Arduino](https://youtu.be/JUVt_KYAp-I). -- [Adding more machine language instructions to the CPU](https://youtu.be/FCscQGBIL-Y). - -### 4. 8-bit computer microcode with flags register - -The code in [`/microcode-eeprom-with-flags`](/microcode-eeprom-with-flags) adds functionality for a flags register to the microcode above to support conditional instructions. Again, you’ll likely want more context from the full series of videos, but here’s the video describing the code: -- [Conditional jump instructions](https://youtu.be/Zg1NdPKoosU). - -## More information - -This EEPROM programmer was designed as part of a larger project to build an 8-bit computer from scratch. There’s a much larger [series of videos about this project](https://www.youtube.com/playlist?list=PLowKtXNTBypGqImE405J2565dvjafglHU) on YouTube as well. In all likelihood, if this repo interests you, you want to binge that whole playlist. +this entend the chips lifetime because the normal delay is over ther maximum From c392dcb4f21034d9ad0baa9dcd368b2312e51ca4 Mon Sep 17 00:00:00 2001 From: pottaocoding Date: Tue, 15 Jul 2025 19:43:27 -0700 Subject: [PATCH 2/5] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index abb764a..0939ea2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -this is a fork of the eeprom programmer by ben eater that use the nop instruction on the arduino nano to fix to too long delay on the write enable +this is a fork of the eeprom programmer by ben eater that uses the nop instruction on the arduino nano to fix to too long delay on the write enable -this entend the chips lifetime because the normal delay is over ther maximum +this entends the chips lifetime because the normal delay is over the maximum From 484d15478b518d335e8b26f795cbacfeed9dc2ec Mon Sep 17 00:00:00 2001 From: pottaocoding Date: Tue, 15 Jul 2025 19:44:50 -0700 Subject: [PATCH 3/5] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 0939ea2..2c566f1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,4 @@ this is a fork of the eeprom programmer by ben eater that uses the nop instruction on the arduino nano to fix to too long delay on the write enable this entends the chips lifetime because the normal delay is over the maximum + i did not change anything other then to EEPROM_PROGRAMMER.INO so the other sketches are not changed From e022bc0f1ee49adae15d7d5abe67d2cc6a34ce14 Mon Sep 17 00:00:00 2001 From: pottaocoding Date: Tue, 15 Jul 2025 19:51:13 -0700 Subject: [PATCH 4/5] Update eeprom-programmer.ino adds the better delay --- eeprom-programmer/eeprom-programmer.ino | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/eeprom-programmer/eeprom-programmer.ino b/eeprom-programmer/eeprom-programmer.ino index 7073214..6bbeb1b 100644 --- a/eeprom-programmer/eeprom-programmer.ino +++ b/eeprom-programmer/eeprom-programmer.ino @@ -1,3 +1,4 @@ +#include #define SHIFT_DATA 2 #define SHIFT_CLK 3 #define SHIFT_LATCH 4 @@ -49,7 +50,7 @@ void writeEEPROM(int address, byte data) { data = data >> 1; } digitalWrite(WRITE_EN, LOW); - delayMicroseconds(1); + betterdelay(); digitalWrite(WRITE_EN, HIGH); delay(10); } @@ -125,3 +126,11 @@ void loop() { // put your main code here, to run repeatedly: } +void betterdelay() { +_NOP(); +_NOP(); +_NOP(); +_NOP(); +_NOP(); +_NOP(); +} From 86597de2477d285ce2f453323d0cb3dba2d28d94 Mon Sep 17 00:00:00 2001 From: pottaocoding Date: Tue, 15 Jul 2025 19:55:02 -0700 Subject: [PATCH 5/5] Add files via upload --- README.md | 45 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 42 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2c566f1..387d78f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,43 @@ -this is a fork of the eeprom programmer by ben eater that uses the nop instruction on the arduino nano to fix to too long delay on the write enable +# Arduino EEPROM programmer -this entends the chips lifetime because the normal delay is over the maximum - i did not change anything other then to EEPROM_PROGRAMMER.INO so the other sketches are not changed +Copyright 2017 Ben Eater + +This code and schematic are [MIT licensed](http://en.wikipedia.org/wiki/MIT_License). + +## Circuit + +This is a simple circuit for programming the 28C16, 28C64, 28C256, and similar parallel EEPROMs using an Arduino. Since the Arduino doesn’t have enough pins to directly control all of the address, data, and control lines of the EEPROM, two 74HC595 shift registers are used for the 11 address lines (15 for the 28C256) and the output enable control line. + +![Schematic of EEPROM programmer](https://raw.githubusercontent.com/beneater/eeprom-programmer/master/schematic.png) + + +## What’s here? + +There are four different Arduino sketches that correspond to several YouTube videos. A lot of the code is duplicated since each sketch built on the previous ones. But I’ve kept them separate to make it easier to find the exact code that goes with a particular video: + +### 1. Basic programmer + +The code in [`/eeprom-programmer`](/eeprom-programmer) is the basic programmer that programs a few bytes into the EEPROM and dumps the contents. + +That software, along with the EEPROM programmer’s hardware are described in detail in the following video. This is a good place to start if you’re looking for the fastest way to make sense of this repo: +- [Build an Arduino EEPROM programmer](https://youtu.be/K88pgWhEb1M). + +### 2. 8-bit decimal display + +The code in [`/multiplexed-display`](/multiplexed-display) is for programming an EEPROM to be used to decode 8-bit values and drive a 4-digit 7-segment display. Check out this video for more: +- [Build an 8-bit decimal display for our 8-bit computer](https://youtu.be/dLh1n2dErzE). + +### 3. 8-bit computer microcode + +The code in [`/microcode-eeprom-programmer`](/microcode-eeprom-programmer) is for programming a pair of EEPROMs to serve as an instruction decoder for an 8-bit breadboard computer. You’ll probably want to watch the whole 8-bit computer playlist (see below) for this to really make sense, but the specific videos describing the code here are: +- [Reprogramming CPU microcode with an Arduino](https://youtu.be/JUVt_KYAp-I). +- [Adding more machine language instructions to the CPU](https://youtu.be/FCscQGBIL-Y). + +### 4. 8-bit computer microcode with flags register + +The code in [`/microcode-eeprom-with-flags`](/microcode-eeprom-with-flags) adds functionality for a flags register to the microcode above to support conditional instructions. Again, you’ll likely want more context from the full series of videos, but here’s the video describing the code: +- [Conditional jump instructions](https://youtu.be/Zg1NdPKoosU). + +## More information + +This EEPROM programmer was designed as part of a larger project to build an 8-bit computer from scratch. There’s a much larger [series of videos about this project](https://www.youtube.com/playlist?list=PLowKtXNTBypGqImE405J2565dvjafglHU) on YouTube as well. In all likelihood, if this repo interests you, you want to binge that whole playlist.