Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Silent Scope 1/2 Timekeeper RAM programmer
- Version 0.2
- Made by Porchy, 2015
- http://www.jammarcade.net
- */
- #define WE 23
- #define CE1 35
- #define CE2 46
- #define OE 31
- #define SDCS 53
- #include <SPI.h>
- #include <SD.h>
- File nvram;
- int address[] = {38,36,34,32,30,28,26,24,25,27,33,29,22};
- int data[] = {40,42,44,45,43,41,39,37};
- void setup()
- {
- Serial.begin(9600);
- pinMode(WE, OUTPUT);
- pinMode(CE1, OUTPUT);
- pinMode(CE2, OUTPUT);
- pinMode(OE, OUTPUT);
- digitalWrite(WE, HIGH);
- digitalWrite(CE1, HIGH); //active low
- digitalWrite(CE2, LOW); //active high
- digitalWrite(OE, HIGH);
- //setup address pins
- for (int addr=0;addr<=12;addr++)
- {
- pinMode(address[addr], OUTPUT);
- }
- //setup data pins
- for (int dat=0;dat<=7;dat++)
- {
- pinMode(data[dat], OUTPUT);
- }
- Serial.print("Looking for SD card...");
- pinMode(SDCS, OUTPUT);
- if (!SD.begin(SDCS))
- {
- Serial.print("No SD card found");
- while(1); //stop
- }
- Serial.println("Found");
- if (!SD.exists("nvram.bin"))
- {
- Serial.println("NVRAM data not found.");
- Serial.println("File ""nvram.bin"" needs to be present in root");
- while(1); //stop
- }
- Serial.println("NVRAM data found.");
- nvram = SD.open("nvram.bin", FILE_READ);
- Serial.println("Type 'S' to start");
- bool start=false;
- while(!start)
- {
- char wait = Serial.read();
- if (wait=='S') start=true;
- }
- }
- void setaddr(uint16_t addr)
- {
- addr = addr & 0x1fff; //trim if needed
- int Bit=0;
- for (int setbit=0;setbit<13;setbit++)
- {
- Bit = ((addr >> setbit) & 1);
- digitalWrite(address[setbit], Bit);
- }
- }
- void writedata(uint8_t thisData)
- {
- digitalWrite(WE, LOW);
- digitalWrite(CE1, LOW);
- digitalWrite(CE2, HIGH);
- for (int dat=0; dat<8;dat++)
- {
- int Bit = ((thisData >> dat) & 1);
- digitalWrite(data[dat], Bit);
- }
- digitalWrite(CE2, LOW);
- digitalWrite(CE1, HIGH);
- digitalWrite(WE, HIGH);
- }
- void loop()
- {
- Serial.println("Start");
- for (uint16_t addr=0;addr<0x2000;++addr)
- {
- uint8_t thisByte = nvram.read();
- setaddr(addr);
- writedata(thisByte);
- }
- nvram.close();
- Serial.println("Finished");
- while(1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement