Проблема с записью в EEPROM

saniks
Offline
Зарегистрирован: 09.04.2013

Загружаю скетч, все работает как надо:





#include <EEPROM.h>
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  //Записываем в ячейку 1 число "5"
  String str="345";
  char j=str[2];
  int x = int(j);  //Преобразуем из char в int
  EEPROM.write(1, x);   
  
  //Считываем и посылаем на ПК
  int k = EEPROM.read(1);
  Serial.println(k);
  
  delay(1500);     
}

Если закомментировать строки 8-12, т.е. оставить только считывание, то возвращается 255 (тоесть ничего не записано). Подскажите как исправить?

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011



#include <EEPROM.h>
void setup()
{
  Serial.begin(115200);
}
void loop()
{
  //Записываем в ячейку 1 число "5"
  String str="345";
  char j=str[2];
  Serial.println(j,HEX);

  int x = j-48;  //Преобразуем из char в int
                 // а точнее в HEX вернее в один байт 
    //int x = j- '0'; // Или так если понятнее


  Serial.println(x,HEX);
  EEPROM.write(1, x);   

  //Считываем и посылаем на ПК
  int k = EEPROM.read(1);
  Serial.println(k,HEX);
  Serial.println();

  delay(5000);     
}

 

olegab
Offline
Зарегистрирован: 09.04.2013
saniks
Offline
Зарегистрирован: 09.04.2013

Спасибо за подсказку! Я прошивал атмегу через AVRdude, а не через бутлоаддер. Задействовал бит EESAVE (HIGH 0xD2), теперь EEPROM не стирается при каждой прошивке.