Pages: [1]   Go Down
Author Topic: Grabar y Leer Eeprom SPI  (Read 900 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenas Gente :

Estoy con una EEprom SPI (de 128k en concreto CAT25128LI de Onsemi ) y sigiendo el ejemplo de  http://arduino.cc/es/Tutorial/SPIEEPROM
conecto la placa perfecto con la memoria pero a la hora de cargar el programa K.O. error de compilacion ??????

EJ: del sketch completo:

#define DATAOUT 11//MOSI
#define DATAIN  12//MISO
#define SPICLOCK  13//sck
#define SLAVESELECT 10//ss

//opcodes
#define WREN  6
#define WRDI  4
#define RDSR  5
#define WRSR  1
#define READ  3
#define WRITE 2

byte eeprom_output_data;
byte eeprom_input_data=0;
byte clr;
int address=0;
//data buffer
char buffer [128];

void fill_buffer()
{
  for (int I=0;I<128;I++)
  {
    buffer=I;
  }
}

char spi_transfer(volatile char data)
{
  SPDR = data;                    // Start the transmission
  while (!(SPSR & (1<<SPIF)))     // Wait the end of the transmission
  {
  };
  return SPDR;                    // return the received byte
}

void setup()
{
  Serial.begin(9600);

  pinMode(DATAOUT, OUTPUT);
  pinMode(DATAIN, INPUT);
  pinMode(SPICLOCK,OUTPUT);
  pinMode(SLAVESELECT,OUTPUT);
  digitalWrite(SLAVESELECT,HIGH); //disable device
  // SPCR = 01010000
  //interrupt disabled,spi enabled,msb 1st,master,clk low when idle,
  //sample on leading edge of clk,system clock/4 rate (fastest)
  SPCR = (1<<SPE)|(1<<MSTR);
  clr=SPSR;
  clr=SPDR;
  delay(10);
  //fill buffer with data
  fill_buffer();
  //fill eeprom w/ buffer
  digitalWrite(SLAVESELECT,LOW);
  spi_transfer(WREN); //write enable
  digitalWrite(SLAVESELECT,HIGH);
  delay(10);
  digitalWrite(SLAVESELECT,LOW);
  spi_transfer(WRITE); //write instruction
  address=0;
  spi_transfer((char)(address>>smiley-cool);   //send MSByte address first
  spi_transfer((char)(address));      //send LSByte address
  //write 128 bytes
  for (int I=0;I<128;I++)
  {
    spi_transfer(buffer); //write data byte
  }
  digitalWrite(SLAVESELECT,HIGH); //release chip
  //wait for eeprom to finish writing
  delay(3000);
  Serial.print('h',BYTE);
  Serial.print('i',BYTE);
  Serial.print('\n',BYTE);//debug
  delay(1000);
}

byte read_eeprom(int EEPROM_address)
{
  //READ EEPROM
  int data;
  digitalWrite(SLAVESELECT,LOW);
  spi_transfer(READ); //transmit read opcode
  spi_transfer((char)(EEPROM_address>>smiley-cool);   //send MSByte address first
  spi_transfer((char)(EEPROM_address));      //send LSByte address
  data = spi_transfer(0xFF); //get data byte
  digitalWrite(SLAVESELECT,HIGH); //release chip, signal end transfer
  return data;
}

void loop()
{
  eeprom_output_data = read_eeprom(address);
  Serial.print(eeprom_output_data,DEC);
  Serial.print('\n',BYTE);
  address++;
  if (address == 128)
    address = 0;
  delay(500); //pause for readability
}


Error de compilacion en void setup .

Soy novato en esto .. hay algun ejemplo mas sencillo ??? el el IDE de Arduino los ejemplos de EEPROM son de su propia eeprom no externa , es decir sin comunicación verdad???

Saludos

Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 18
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Por lo que veo, tienes algunos problemas con los arrays y con la función serial.print

Cuando llenas el buffer, fíjate que en el ejemplo pone

Code:
buffer[I]=I;
y tú tienes
Code:
buffer=I;


Luego da error de compilación porque parece que ya no se puede usar
Code:
serial.print(var,BYTE);
, sino que debes cambiarlos por
Code:
serial.write(var);

A mí ahora me compila con 1.0.1 y 1.0.2

smiley-wink

PD: edito porque el elemento del array cambia el formato a cursiva y no aparece bien. Como a ti también te pasa, supongo que también lo tendrás bien. Para pegar códico usa los tags de CODE smiley-wink
« Last Edit: December 15, 2012, 06:39:19 am by OoTzToO » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 22
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias OoTzToO .... en cuanto tenga un ratito le doy caña y os comento .
 
Todavía ando un poco novel jajajjaja.

 smiley-cool
Logged

Pages: [1]   Go Up
Jump to: