Hi I'm trying to create a program to write and read a value from an external EEPROM 25C160, but it doesn't work.
My code is:
#define DATAOUT 11//MOSI
#define DATAIN 12//MISO
#define SPICLOCK 13//sck
#define SLAVESELECT 10//ss
#define WRITE 2
#define READ 3
#define WREN 6
#include <SPI.h>
unsigned int data;
unsigned int address = 3;
unsigned int outval = 23;
byte invalue;
void setup()
{
Serial.begin(9600);
// set up to match device datasheet
pinMode(DATAOUT, OUTPUT);
pinMode(DATAIN, INPUT);
pinMode(SPICLOCK,OUTPUT);
pinMode(SLAVESELECT,OUTPUT);
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE1);
SPI.setClockDivider(SPI_CLOCK_DIV8); // max clock is 20MHz, so can set high speed
SPI.begin(); // sets up pin modes etc.
// Enable writing
digitalWrite(SS, LOW);
SPI.transfer(WREN);
digitalWrite(SS, HIGH);
// Write One Value to One Address
digitalWrite(SS, LOW);
SPI.transfer(WRITE); // write instruction
SPI.transfer(0X00);
SPI.transfer(0X03);
SPI.transfer(outval);
digitalWrite(SS, HIGH);
}
void loop()
{
// Read One Value from One Address
digitalWrite(SS, LOW);
SPI.transfer(READ); // read instruction
SPI.transfer(0x00);
SPI.transfer(0x03);
// SPI.transfer(0X00);
invalue = SPI.transfer(0);
Serial.print("Read Data = ");
Serial.println(invalue,DEC);
digitalWrite(SS, HIGH);
delay(1000);
}
I have used a oscilloscope to check that I'm trasmitting a correct sequence on MOSI signal and it is ok. But I'm not able to read any value on MISO
Do you have any suggestion?
Thanks for you support