//4k e2prom and cpu supervisor
#include <SPI.h>
#define WRITE 2
#define READ 3
#define WREN 6
#define RDSR 5
#define WRSR 1
unsigned int address = 0x01;
byte outval = 250;
byte invalue;
void setup(){
Serial.begin(9600);
// set up to match device datasheet
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE0);
SPI.setClockDivider(SPI_CLOCK_DIV2); // 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);
digitalWrite(SS, LOW);
SPI.transfer(WRITE); // write instruction
SPI.transfer((address >> 16) & 255);
SPI.transfer(address >> 8 & 255);
SPI.transfer(address & 255);
SPI.transfer(outval);
digitalWrite(SS, HIGH);
delay(5);
digitalWrite(SS, LOW);
SPI.transfer(READ); // read instruction
SPI.transfer((address >> 16) & 255);
SPI.transfer(address >> 8 & 255);
SPI.transfer(address & 255);
invalue = SPI.transfer(0); // Clock out the data
digitalWrite(SS, HIGH);
Serial.print("Read Data = "));
Serial.println(invalue,DEC);
}
void loop(){
}
i am able to write to one address, im assuming its 0, no matter what i make it. ive also tried your code.
//4k e2prom and cpu supervisor
#include <SPI.h>
#define WRITE 2
#define READ 3
#define WREN 6
#define RDSR 5
#define WRSR 1
unsigned int address = 0x01;
byte outval = 250;
byte invalue;
void setup(){
Serial.begin(9600);
Serial.println("RESET");
// set up to match device datasheet
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SPI_MODE0);
SPI.setClockDivider(SPI_CLOCK_DIV2); // 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);
digitalWrite(SS,LOW);
SPI.transfer(WRITE | (address & 0x0100) ? 8 : 0);
SPI.transfer(address & 0xFF);
SPI.transfer(outval);
digitalWrite(SS, HIGH);
digitalWrite(SS,LOW);
SPI.transfer(READ | (address & 0x0100) ? 8 : 0);
SPI.transfer(address & 0xFF);
invalue = SPI.transfer(0x00);
digitalWrite(SS,HIGH);