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

[0] Message Index

There was an error while thanking
Thanking...
Go to full version
Powered by SMFPacks Advanced Attachments Uploader Mod