This is the
writting cycle:
Note: I added a led to digital pin 2 to show when the cycle is finished.
#include <SPI.h>
int variable = 56; //data to record
int resultado, registro=0;
void setup() {
pinMode(10,OUTPUT);
pinMode(2,OUTPUT);
digitalWrite(10, HIGH);
digitalWrite(2, HIGH);
SPI.begin();
SPI.setDataMode(SPI_MODE3); // set SPI protocol
SPI.setClockDivider(SPI_CLOCK_DIV2); // 10 Mhz max for 25LC256
SPI.setBitOrder(MSBFIRST);
digitalWrite(10, LOW);
SPI.transfer(6); // write enable 6
digitalWrite(10, HIGH);
digitalWrite(10, LOW);
SPI.transfer(1); // remove block protection 1,0
SPI.transfer(0);
digitalWrite(10, HIGH);
delay(5);
for(int j=0; j<9; j++)
{
digitalWrite(10, LOW);
SPI.transfer(6); // write enabled 6
digitalWrite(10, HIGH);
digitalWrite(10, LOW);
SPI.transfer(2); // write 2,0
SPI.transfer(0);
SPI.transfer(registro); // registry
SPI.transfer(variable); // data to record
digitalWrite(10, HIGH);
delay(5);
digitalWrite(10, LOW);
SPI.transfer(6); // write enabled 6
digitalWrite(10, HIGH);
registro++; // +1
variable++; // +1
}
digitalWrite(10, LOW);
SPI.transfer(4); // write disabled 4
digitalWrite(10, HIGH);
}
void loop() {
digitalWrite(2, LOW);
}
This is the
reading cycle:
Note: I added a led to digital pin 2 to show when the cycle is finished.
#include <SPI.h>
int resultado, registro=0;
void setup() {
pinMode(10,OUTPUT);
pinMode(2,OUTPUT);
digitalWrite(10, HIGH);
digitalWrite(2, HIGH);
Serial.begin(9600);
SPI.begin();
SPI.setDataMode(SPI_MODE3); //setup SPI protocol
SPI.setClockDivider(SPI_CLOCK_DIV2); // 10 Mhz max for 25LC256
SPI.setBitOrder(MSBFIRST);
for(int j=0; j<9; j++)
{
digitalWrite(10, LOW);
SPI.transfer(3); // read 3,0
SPI.transfer(0);
SPI.transfer(registro); // registry
resultado = SPI.transfer(0x00);
digitalWrite(10, HIGH);
Serial.print("direccion"); //print on screen
Serial.print(registro);
Serial.print(" : ");
Serial.println(resultado);
registro++;
}
}
void loop() {
digitalWrite(2, LOW);
}