Files
relay-cpu/SRAM-Driver/SRAM-Driver.ino
2023-12-20 16:40:11 +01:00

232 lines
6.0 KiB
C++

int RAM_Addr0 = A0;
int RAM_Addr1 = A1;
int RAM_Addr2 = A2;
int RAM_Addr3 = A3;
int RAM_Addr4 = A4;
int RAM_Addr5 = A5;
int RAM_Addr6 = A6;
int RAM_Addr7 = A7;
int RAM_Data0 = A8;
int RAM_Data1 = A9;
int RAM_Data2 = A10;
int RAM_Data3 = A11;
int RAM_Data4 = A12;
int RAM_Data5 = A13;
int RAM_Data6 = A14;
int RAM_Data7 = A15;
int analogPin_H = 650;
int val0 = 0; // Variable, die den gelesenen Wert speichert
int val1 = 0; // Variable, die den gelesenen Wert speichert
int val2 = 0; // Variable, die den gelesenen Wert speichert
int val3 = 0; // Variable, die den gelesenen Wert speichert
int val4 = 0; // Variable, die den gelesenen Wert speichert
int val5 = 0; // Variable, die den gelesenen Wert speichert
int val6 = 0; // Variable, die den gelesenen Wert speichert
int val7 = 0; // Variable, die den gelesenen Wert speichert
void readBus(int bus_size, char debug)
{
unsigned char byte = 0;
for(int i=0;i <= bus_size;i++)
{
switch(i)
{
case 0:
val0 = analogRead(RAM_Data0); // Pin einlesen
if(debug == 0x01) Serial.println(val0);
if(val0 > analogPin_H) byte += 0x01;
break;
case 1:
val1 = analogRead(RAM_Data1);// Pin einlesen
if(debug == 0x01) Serial.println(val1);
if(val1 > analogPin_H) byte += 0x02;
break;
case 2:
val2 = analogRead(RAM_Data2); // Pin einlesen
if(debug == 0x01) Serial.println(val2);
if(val2 > analogPin_H) byte += 0x04;
break;
case 3:
val3 = analogRead(RAM_Data3); // Pin einlesen
if(debug == 0x01) Serial.println(val3);
if(val3 > analogPin_H) byte += 0x08;
break;
case 4:
val4 = analogRead(RAM_Data4); // Pin einlesen
if(debug == 0x01) Serial.println(val3);
if(val4 > analogPin_H) byte += 0x10;
break;
case 5:
val5 = analogRead(RAM_Data5); // Pin einlesen
if(debug == 0x01) Serial.println(val3);
if(val5 > analogPin_H) byte += 0x20;
break;
case 6:
val6 = analogRead(RAM_Data6); // Pin einlesen
if(debug == 0x01) Serial.println(val3);
if(val6 > analogPin_H) byte += 0x40;
break;
case 7:
val7 = analogRead(RAM_Data7); // Pin einlesen
if(debug == 0x01) Serial.println(val3);
if(val7 > analogPin_H) byte += 0x80;
break;
}
}
Serial.print("0x");
Serial.println(byte, HEX);
}
void readRAMAddr(int bus_size, char debug)
{
unsigned char byte = 0;
for(int i=0;i <= bus_size;i++)
{
switch(i)
{
case 0:
val0 = analogRead(RAM_Addr0); // Pin einlesen
if(debug == 0x01) Serial.println(val0);
if(val0 > analogPin_H) byte += 0x01;
break;
case 1:
val1 = analogRead(RAM_Addr1);// Pin einlesen
if(debug == 0x01) Serial.println(val1);
if(val1 > analogPin_H) byte += 0x02;
break;
case 2:
val2 = analogRead(RAM_Addr2); // Pin einlesen
if(debug == 0x01) Serial.println(val2);
if(val2 > analogPin_H) byte += 0x04;
break;
case 3:
val3 = analogRead(RAM_Addr3); // Pin einlesen
if(debug == 0x01) Serial.println(val3);
if(val3 > analogPin_H) byte += 0x08;
break;
case 4:
val4 = analogRead(RAM_Addr4); // Pin einlesen
if(debug == 0x01) Serial.println(val3);
if(val4 > analogPin_H) byte += 0x10;
break;
case 5:
val5 = analogRead(RAM_Addr5); // Pin einlesen
if(debug == 0x01) Serial.println(val3);
if(val5 > analogPin_H) byte += 0x20;
break;
case 6:
val6 = analogRead(RAM_Addr6); // Pin einlesen
if(debug == 0x01) Serial.println(val3);
if(val6 > analogPin_H) byte += 0x40;
break;
case 7:
val7 = analogRead(RAM_Addr7); // Pin einlesen
if(debug == 0x01) Serial.println(val3);
if(val7 > analogPin_H) byte += 0x80;
break;
}
}
Serial.print("0x");
Serial.println(byte, HEX);
}
void setup() {
// put your setup code here, to run once:
pinMode(RAM_Addr0, INPUT);
pinMode(RAM_Addr1, INPUT);
pinMode(RAM_Addr2, INPUT);
pinMode(RAM_Addr3, INPUT);
pinMode(RAM_Addr4, INPUT);
pinMode(RAM_Addr5, INPUT);
pinMode(RAM_Addr6, INPUT);
pinMode(RAM_Addr7, INPUT);
pinMode(RAM_Data0, INPUT);
pinMode(RAM_Data1, INPUT);
pinMode(RAM_Data2, INPUT);
pinMode(RAM_Data3, INPUT);
pinMode(RAM_Data4, INPUT);
pinMode(RAM_Data5, INPUT);
pinMode(RAM_Data6, INPUT);
pinMode(RAM_Data7, INPUT);
Serial.begin(9600);
}
void loop() {
//Serial.println("Starte Programm:");
delay(1000);
Serial.print("Lese: ");
readBus(8, 0x00);
Serial.print("an Adresse: ");
readRAMAddr(8,0x00);
Serial.println();
if (Serial.available() > 0) {
// Lies das eingehende Byte:
//SerialIncoming = Serial.read();
String buffer = Serial.readString();
// Ausgeben:
Serial.print("I received: ");
Serial.println(buffer);
if(buffer.compareTo("setdata\n") == 0)
{
Serial.println("Schreibe 0xFF");
pinMode(RAM_Data0, OUTPUT);
digitalWrite(RAM_Data0, HIGH);
pinMode(RAM_Data1, OUTPUT);
digitalWrite(RAM_Data1, HIGH);
pinMode(RAM_Data2, OUTPUT);
digitalWrite(RAM_Data2, HIGH);
pinMode(RAM_Data3, OUTPUT);
digitalWrite(RAM_Data3, HIGH);
pinMode(RAM_Data4, OUTPUT);
digitalWrite(RAM_Data4, HIGH);
pinMode(RAM_Data5, OUTPUT);
digitalWrite(RAM_Data5, HIGH);
pinMode(RAM_Data6, OUTPUT);
digitalWrite(RAM_Data6, HIGH);
pinMode(RAM_Data7, OUTPUT);
digitalWrite(RAM_Data7, HIGH);
Serial.println("Warte 4 Sekunden");
delay(4000);
pinMode(RAM_Data0, INPUT);
pinMode(RAM_Data1, INPUT);
pinMode(RAM_Data2, INPUT);
pinMode(RAM_Data3, INPUT);
pinMode(RAM_Data4, INPUT);
pinMode(RAM_Data5, INPUT);
pinMode(RAM_Data6, INPUT);
pinMode(RAM_Data7, INPUT);
}
}
//Serial.println(analogRead(RAM_Data0));
// put your main code here, to run repeatedly:
}