Testing, reading and writing bytes

This commit is contained in:
maddiebaka
2024-02-16 15:33:42 -05:00
parent 0ca6818a67
commit 282bc84e35
3 changed files with 262 additions and 104 deletions

99
ROMWireProtocol.cpp Normal file
View File

@@ -0,0 +1,99 @@
#include "ROMWireProtocol.h"
//#include <Arduino.h>
void setCtrlPins() {
pinMode(OE, OUTPUT);
pinMode(PGM, OUTPUT);
}
void setAddrPinsOut() {
for(int a = Addr0; a <= Addr18; a++) {
pinMode(a, OUTPUT);
digitalWrite(a, LOW);
}
}
void setDataPinsOut() {
for(int d = Data0; d <= Data7; d++) {
pinMode(d, OUTPUT);
digitalWrite(d, LOW);
}
}
void setDataPinsIn() {
for(int d = Data0; d <= Data7; d++) {
digitalWrite(d, LOW);
pinMode(d, INPUT);
}
}
void setByte(byte out) {
for(int i = 0; i < 8; i++) {
digitalWrite(Data0 + i, bitRead(out,i));
}
}
void setAddress(unsigned long addr) {
for(int i = 0; i < 19; i++) {
digitalWrite(Addr0 + i, bitRead(addr, i) );
}
}
byte readByte() {
byte temp_in = 0;
for(int i = 0; i < 8; i++) {
if(digitalRead(Data0 + i)) {
bitSet(temp_in, i);
}
}
return temp_in;
}
byte readData(unsigned long address) {
byte temp_read;
setByte(0);
setDataPinsIn();
digitalWrite(PGM, HIGH);
digitalWrite(OE, HIGH);
setAddress(address);
delayMicroseconds(3);
digitalWrite(OE, LOW);
delayMicroseconds(3);
temp_read = readByte();
return temp_read;
}
void writeByte(byte data, unsigned long address) {
setAddress(address);
setByte(data);
digitalWrite(OE, HIGH);
digitalWrite(PGM, HIGH);
delayMicroseconds(2);
digitalWrite(PGM, LOW);
delayMicroseconds(1);
digitalWrite(PGM, HIGH);
}
void programData(byte data, unsigned long address) {
setDataPinsOut();
writeByte(0xAA, 0x5555);
writeByte(0x55, 0x2AAA);
writeByte(0xA0, 0x5555);
writeByte(data, address);
delayMicroseconds(30);
//Serial.println(data, HEX);
//Serial.println(address, HEX);
}