Вопросик по работе с EEPROM

smcrim
Offline
Зарегистрирован: 14.11.2014

В ЕЕPROM записан IP, со всеми запятыми как и должен указываться при Ethernet.begin(), но ни как не могу считав его из EEPROM стартануть Ethernet, при выводе его в Serial в цикле символы правильные, при старте Ethernet и запросе внутреннего IP выдаёт 0.57.12.38 вместо 192.168.1.221

 byte ip[15];
 byte mac[30];
  for(int i = 0; i<= 15; i++){
    ip [i]= byte(EEPROM.read(START_OF_IP + i));       
  }
  for(int m = 0; m<=30; m++){
    mac[m] = byte(EEPROM.read(START_OF_MAC + m));       
  }  
  Ethernet.begin(mac,ip);
  server.begin();
  Serial.println("Server started");  

 

toc
Offline
Зарегистрирован: 09.02.2013

добавьте после строки 04 это:
Serial.println(ip[i]);

И посмотрите пример. Сравните размер массива ip
http://arduino.cc/en/Reference/EthernetBegin

smcrim
Offline
Зарегистрирован: 14.11.2014

Я ставил, у меня эти строки есть, я их убрал чтобы в посте не мусорить, там нормальный ip выдаёт, всё как нужно 192.168.1.221 только в конце пара пустых байт, но при Ethernet.localIP() ту шнягу типа xx.xx.xx.xx, я уж пытался в ip[i] данные записывать и ip[i] = char(EEPROM.read(START_OF_IP+i)) и в ip[i] = byte(EEPROM.read(START_OF_IP+i)), результат один.

Maverik
Offline
Зарегистрирован: 12.09.2012

в стандартной библиотеке EEPROM нужно не забывать что запись идет в два байта и память резервировать соответственно.

есть модифицированная библиотека EEPROM2 где этих плясок с бубном нет.

smcrim
Offline
Зарегистрирован: 14.11.2014

Объясните мне пожалуйста, без кода , на словах, я получаю строку типа 192.168.1.221, я раскладываю её на три int-a, то есть убираю точки и привожу каждый блок к инту..... а в EEPROM мне их в каком виде нужно ложить и в каком виде потом достать чтобы использовать в Ethernet.begin() ???

И ещё одно обнаружилось, EEPROM2 не работает с мегой, даже файл примера выдаёт ошибки на EEPROM _write и EEPROM_read (((

toc
Offline
Зарегистрирован: 09.02.2013

smcrim, покажите, что выводит ваша программа с добавленной строкой. Пустых байтов не бывает. Байт может иметь значение от 0 до 255. Размер ip адреса 4 байта, а не 3 и не 15. В примере, на который я сослался, размер массива ip ровно четыре байта. В еепроме нужно хранить ип адрес в виде четырёх байт. Никаких точек, разрывов строк и прочих.

smcrim
Offline
Зарегистрирован: 14.11.2014
2050 1
2051 9
2052 2
2053 .

Выводило это и в конце пару ячеек с пустым значением, ну тоесть чар пустой. Но это исчезло после того как я перестал указывать при инициализации масива его размер используя str.length() . Спасибо всем огромное, не пинайте сильно, я понял свою наиглупейшую ошибку (  пытался собрать {192.168.1.1} поместив массив символов , причём с запятыми , воо  как (