| Electronics > Projects, Designs, and Technical Stuff |
| Arduino test program for anAM27ls01 RAM |
| (1/1) |
| gkmaia:
I am trying to set a very simple arduino program to test just ONE address of a AM27ls01 or SN74S301. As the data output is an open collector I have connected it to a 5v supply by a 300ohms resistor hoping for when data out put is low it gets shorted to ground and I get a LOW signal. Or when data is HIGH the collector is open and I get a HIGH signal. But no matter what data I store or read I am always getting a HIGH data output. I am also trying to follow the write and read sequence provided by the datasheet. So I am not sure where my code is wrong. #include <SoftwareSerial.h> #define CE1 14 // A0 #define CE2 15 // A1 #define CE3 16 // A2 #define WE 17 // A3 #define XA0 2 // D2 #define XA1 3 // D3 #define XA2 4 // D4 #define XA3 5 // D5 #define XA4 6 // D6 #define XA5 7 // D7 #define XA6 8 // D8 #define XA7 9 // D9 //#define XA8 10 // D10 #define DI 11 // D11 #define DO 18 // A4 int ret = 0; void setBus(){ digitalWrite(XA0, HIGH); digitalWrite(XA1, LOW); digitalWrite(XA2, HIGH); digitalWrite(XA3, HIGH); digitalWrite(XA4, LOW); digitalWrite(XA5, HIGH); digitalWrite(XA6, LOW); digitalWrite(XA7, LOW); } void clearBus(){ digitalWrite(XA0, LOW); digitalWrite(XA1, LOW); digitalWrite(XA2, LOW); digitalWrite(XA3, LOW); digitalWrite(XA4, LOW); digitalWrite(XA5, LOW); digitalWrite(XA6, LOW); digitalWrite(XA7, LOW); } //////////////////////////////////////////////// //WRITE////////////////////////////////////////// //////////////////////////////////////////////// void write(){ //WRITE delay(500); // BIT TO WRITE ///////////////////// Serial.println("Bit to write"); digitalWrite(DI, HIGH); delay(500); //////////////////////////////////// // ADDRESS Serial.println("Set Address"); setBus(); digitalWrite(CE2, LOW); delay(500); //WRITE digitalWrite(WE, LOW); //RELEASE delay(500); digitalWrite(WE, HIGH); delay(500); digitalWrite(CE2, HIGH); delay(500); clearBus(); } //////////////////////////////////////////////// //READ////////////////////////////////////////// //////////////////////////////////////////////// void read(){ clearBus(); //ROW Serial.println("Set address"); setBus(); digitalWrite(CE2, LOW); delay(500); //READ DATA int sensorValue = analogRead(A4); float voltage= sensorValue * (5.0 / 1023.0); Serial.println("Read voltage"); Serial.println(voltage); Serial.println("Read data"); ret = digitalRead(DO); Serial.println(ret); delay(500); //RELEASE digitalWrite(CE2, HIGH); clearBus(); } //////////////////////////////////////////////// //SETUP////////////////////////////////////////// //////////////////////////////////////////////// void setup() { Serial.begin(9600); Serial.println("START"); pinMode(XA0, OUTPUT); pinMode(XA1, OUTPUT); pinMode(XA2, OUTPUT); pinMode(XA3, OUTPUT); pinMode(XA4, OUTPUT); pinMode(XA5, OUTPUT); pinMode(XA6, OUTPUT); pinMode(XA7, OUTPUT); pinMode(DI, OUTPUT); pinMode(DO, INPUT); pinMode(CE1, OUTPUT); pinMode(CE2, OUTPUT); pinMode(CE3, OUTPUT); pinMode(WE, OUTPUT); digitalWrite(WE, HIGH); digitalWrite(CE1, HIGH); digitalWrite(CE2, HIGH); digitalWrite(CE3, HIGH); clearBus(); write(); delay(500); read(); delay(500); } void loop() { } |
| Navigation |
| Message Index |