Вопросик по работе с EEPROM
- Войдите на сайт для отправки комментариев
Вс, 16/11/2014 - 13:28
В ЕЕ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");
добавьте после строки 04 это:
Serial.println(ip[i]);
И посмотрите пример. Сравните размер массива ip
http://arduino.cc/en/Reference/EthernetBegin
Я ставил, у меня эти строки есть, я их убрал чтобы в посте не мусорить, там нормальный 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)), результат один.
в стандартной библиотеке EEPROM нужно не забывать что запись идет в два байта и память резервировать соответственно.
есть модифицированная библиотека EEPROM2 где этих плясок с бубном нет.
Объясните мне пожалуйста, без кода , на словах, я получаю строку типа 192.168.1.221, я раскладываю её на три int-a, то есть убираю точки и привожу каждый блок к инту..... а в EEPROM мне их в каком виде нужно ложить и в каком виде потом достать чтобы использовать в Ethernet.begin() ???
И ещё одно обнаружилось, EEPROM2 не работает с мегой, даже файл примера выдаёт ошибки на EEPROM _write и EEPROM_read (((
smcrim, покажите, что выводит ваша программа с добавленной строкой. Пустых байтов не бывает. Байт может иметь значение от 0 до 255. Размер ip адреса 4 байта, а не 3 и не 15. В примере, на который я сослался, размер массива ip ровно четыре байта. В еепроме нужно хранить ип адрес в виде четырёх байт. Никаких точек, разрывов строк и прочих.
Выводило это и в конце пару ячеек с пустым значением, ну тоесть чар пустой. Но это исчезло после того как я перестал указывать при инициализации масива его размер используя str.length() . Спасибо всем огромное, не пинайте сильно, я понял свою наиглупейшую ошибку ( пытался собрать {192.168.1.1} поместив массив символов , причём с запятыми , воо как (