#include <SPI.h>
const byte PIN_CS = 4;
#include <EEPROM_SPI_WE.h>
EEPROM_SPI_WE myEEP = EEPROM_SPI_WE(PIN_CS, 999);
#define WREN 6
#define WRDI 4
#define RDSR 5
#define WRSR 1
#define WRITE 2
uint8_t readSReg() {
uint8_t sreg = 0;
digitalWrite(PIN_CS, LOW);
SPI.transfer(RDSR);
sreg = SPI.transfer(0x00);
digitalWrite(PIN_CS, HIGH);
return sreg;
}
void setup() {
Serial.begin(115200);
uint8_t sreg = 0;
uint8_t ws = 0x80 | 0x0c | 0x02;
sreg |= ws & 0x8c ;
Serial.println(sreg);
//pinMode(PIN_START, INPUT_PULLUP);
/*if(myEEP.init()){
Serial.println("EEPROM connected");
}
else{
Serial.println("EEPROM does not respond");
while(1);
}*/
pinMode(PIN_CS, OUTPUT);
digitalWrite(PIN_CS, HIGH);
SPI.begin();
/*digitalWrite(PIN_CS, LOW);
SPI.transfer(WREN);
digitalWrite(PIN_CS, HIGH);
Serial.print("SREG: ");
Serial.println(readSReg());
return;
digitalWrite(PIN_CS, LOW);
SPI.transfer(WRDI);
digitalWrite(PIN_CS, HIGH);
Serial.print("SREG: ");
Serial.println(readSReg());
return;*/
digitalWrite(PIN_CS, LOW);
SPI.transfer(WREN);
digitalWrite(PIN_CS, HIGH);
digitalWrite(PIN_CS, LOW);
SPI.transfer(WRSR);
SPI.transfer(0x80);
digitalWrite(PIN_CS, HIGH);
// WREN
digitalWrite(PIN_CS, LOW);
SPI.transfer(WREN);
digitalWrite(PIN_CS, HIGH);
digitalWrite(PIN_CS, LOW);
SPI.transfer(WRITE);
//SPI.transfer(32767>>8);
//SPI.transfer(32767 & 0xff);
SPI.transfer(63>>8);
SPI.transfer(63 & 0xff);
SPI.transfer(100);
SPI.transfer(110);
SPI.transfer(120);
uint16_t addr = 44+64; // 108
addr = 257;
uint16_t p = addr / 64;
// p è il numero di pagina
Serial.println(p);
//p = p * 64;
uint8_t a = addr - p * 64;
// a è l'indirizzo del buffer di pagina (0÷63)
uint16_t startPage = (p * 64);
Serial.print("startPage: ");
Serial.println(startPage);
Serial.println(a);
uint16_t eeadr = startPage + a + 64;
if (eeadr > startPage + 64) {
eeadr = startPage;
}
Serial.print("eeadr: ");
Serial.println(eeadr);
digitalWrite(PIN_CS, HIGH);
/*digitalWrite(PIN_LATCH, LOW);
SPI.transfer(3);
SPI.transfer(32767>>8);
uint8_t v = SPI.transfer(32767 & 0xff);
v = SPI.transfer(0);
Serial.println(v);
v = SPI.transfer(0);
Serial.println(v);
v = SPI.transfer(0);
Serial.println(v);
digitalWrite(PIN_LATCH, HIGH);*/
/*delay(1);
digitalWrite(PIN_CS, LOW);
SPI.transfer(6);
digitalWrite(PIN_CS, HIGH);
delay(1);
digitalWrite(PIN_CS, LOW);
SPI.transfer(4);
digitalWrite(PIN_CS, HIGH);
delay(1);
// prova a scrivere
digitalWrite(PIN_CS, LOW);
SPI.transfer(2);
SPI.transfer(32767>>8);
SPI.transfer(32767 & 0xff);
SPI.transfer(10);
SPI.transfer(11);
SPI.transfer(12);
digitalWrite(PIN_CS, HIGH);
*/
}
void loop() {
}