Arduino mini pro + ENC28J60+dht22+bmp180. проблема в передачи данных.
- Войдите на сайт для отправки комментариев
Чт, 07/08/2014 - 14:16
Arduino mini pro + ENC28J60+dht22+bmp180
Проблема в отправке данных на http://narodmon.ru , а именно не постоянно отправляет данные. в код забит интервал в 6 минут, в реале данные отправляются могут через любое время. ввел сброс мк через 30 минут, теперь он не зависает больше чем на 30мин. но это не выход. вот и хотел бы решить проблему.
код
#include <EtherCard.h> #include <Wire.h> #include <BMP085.h> BMP085 bmp; #include "DHT.h" #define DHTPIN 3 #define DHTTYPE DHT22 #define LED 8 #define svet 13 DHT dht(DHTPIN, DHTTYPE); #define REQUEST_RATE 360000 // milliseconds static byte mac[] = { МАК адресс}; //В этой строке задайте свой MAC адрес static byte hisip[] = { 94, 19, 113, 221, 8080 }; //Здесь надо указать IP адрес сайта narodmon.ru String macstring; byte Ethernet::buffer[500]; static long timer; Stash stash; void setup() { Serial.begin(57600); delay(1000); bmp.begin(); dht.begin(); if (ether.begin(sizeof Ethernet::buffer, mac, SS) == 0) Serial.println( "Failed to access Ethernet controller"); if (!ether.dhcpSetup()) Serial.println("DHCP failed"); //overwrite DNS with google's if there are problems with DNS setup static byte dnsip[] = {8, 8, 8, 8}; ether.copyIp(ether.dnsip, dnsip); ether.printIp("My IP: ", ether.myip); ether.printIp("GW IP: ", ether.gwip); ether.printIp("DNS IP: ", ether.dnsip); ether.copyIp(ether.hisip, hisip); ether.printIp("Server: ", ether.hisip); while (ether.clientWaitingGw()) ether.packetLoop(ether.packetReceive()); Serial.println("Gateway found"); macstring = ""; for (int k = 0; k < sizeof(mac) / sizeof(byte); k++) { char msg[3]; sprintf(msg, "%02X", mac[k]); if (macstring != "#") macstring += "-"; macstring += msg; } pinMode(svet, OUTPUT); timer = - REQUEST_RATE; // start timing out right away } void loop() { if (millis() > 1800000) { // количество полных часов с момента последнего срабатывания digitalWrite(LED, HIGH); // включение реле, которое выключает питание МК } ether.packetLoop(ether.packetReceive()); if (millis() > timer + REQUEST_RATE) { timer = millis(); byte sd = stash.create(); stash.print("ID="); stash.print(macstring); Serial.println("\n\n\nPosting...\n"); digitalWrite(svet, LOW); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(svet,HIGH ); delay(1000); // wait for a second String result; char msg[50]; result = macstring + "\n"; stash.print("&"); stash.print(macstring); stash.print("01"); stash.print("="); stash.print(bmp.readTemperature()); stash.print("&"); stash.print(macstring); stash.print("02"); stash.print("="); stash.print(bmp.readPressure() ); delay(1000); float h = dht.readHumidity(); float t = dht.readTemperature(); stash.print("&"); stash.print(macstring); stash.print("03"); stash.print("="); stash.print(t); stash.print("&"); stash.print(macstring); stash.print("04"); stash.print("="); stash.print(h); stash.print("&"); delay(1000); stash.save(); // generate the header with payload - note that the stash size is used, // and that a "stash descriptor" is passed in as argument using "$H" Stash::prepare(PSTR("POST http://narodmon.ru/post.php HTTP/1.0" "\r\n" "Host: narodmon.ru" "\r\n" "Content-Length: $D" "\r\n" "\r\n" "$H"), stash.size(), sd); // send the packet - this also releases all stash buffers once done ether.tcpSend(); for (word i = 0, n = Stash::length(); i < n; ++i) { char c; Stash::extract(i, 1, &c); Serial.print(c); } //Serial.println("Done"); } }
данные на сервер уходят в таком формате 2014-08-07T13:16:30+04:00 POST ID=-мак&-мак01=30.51&-мак02=100289&-мак03=33.90&-мак04=26.30&
как решить проблему со стабильность выдачи данных на сервер. ?
http://visualbooster.com/share/20140807131530780.png то как он щас отправляет, а должно быть через каждые 6 мин.
А вы обратили внимание на то, что временные интервалы в последовательности на приведенной вами картинке кратны 6 ?
Что это значит ? Это значит, что ардуина исправно раз в 6 мин делает свое дело, не зависает.
да вы правы, просто не тот скрин выложил. но вот посмотрите на график http://visualbooster.com/share/20140807134403483.png
там видно длинные линии. задержка между отправками может находиться в разных диапазонах. от 6мин до 30мин. http://narodmon.ru/1752 адресс датчиков. посмотрите на время между точками.
и я сделал что бы она перезагружалась каждые 30мин. но это плохое решение. та и не помогло.
Вставка программного кода в тему/комментарий (кстати это прикрепленная тема)
Мигаем светодиодом без delay() | Аппаратная платформа Arduino (кстати это один из базовы примеров, в разделе "программирование").
Ну и, за одно, смотрим
millis() | Аппаратная платформа Arduino
обращаем внимание на тип возвращаемого значения.
Еще проблемы со стабильностью могут быть вызваны плохим питанием шилда (то что выдает дуина на 3.3v не всегда хватает)
И... раз у вас столько библиотек, да еще enc28j60 с которым весь TCP/IP стек програмнно реализуется, то ... банальная нехватка памяти может быть.
"Вставка программного кода в тему/комментарий (кстати это прикрепленная тема)" да, извините первое сообщение на этом форуме.
остаток озу 435 байт.
питание щшильда отдельное 3.3в
остаток озу 435 байт.
Есть подозрение что это не так. Откуда взяли эту цифру?
И... разбирайтесь со своим millis()/timer.
Не уверен что они у вас "причина текущих проблем", но то что с ними проблемы есть - это точно (где-то через 24-дня вылезут, может раньше).
Вынсите весь свой код отсылающий данные на сервер в отдельную функцию
а в loop() оставте свой свой millis()/timer и вызов это sendDataToServer().... легче будет отдалживать отедльно "логику отсылки" и отдельно "логику переодичности". Можно будет временно подменять вызов sendDataToServer(), на какую-нибудь sendDataToSerial() и смотреть в Serial... что у нас "все вовремя делается". Когда с "вовремя" пробелма решится - тогда уже саму отсылку делать.
И... разбирайтесь со своим millis()/timer.
у вас неверный тип переменной и проверка что интервал прошел делается неправильно.
смотрите как в примере "мигаем без делай". чере вычитание нужно делать, а не через сложение.
Память смотрел через библиотеку, выводило в порт.
Спасибо что дали направление в котором копать. Буду пробовать.
Ага. Ну тогда, возможно "правда". А то новая IDE тоже говорит, еще при компиляции сколько RAM свободно и многие принимаю это "за чистую монету", не понимая что при выполнении "расклады могут поменться".
Помониторте еще, что память со временем, не уменьшается.
Если, в итоге, дело окажется все-таки в памяти, то я бы пробовал аккуратненько уменьшить буффер
byte Ethernet::buffer[500];
По идее, принимать вы ничего не принимаете, так что сильно большой он не нужен.
Еще расход памяти может давать
String macstring;
Лично я предпочитаю обычными строками пользоватся. Хоть и гиморней, зато четко понимаешь сколько там памяти расходуется. Сравнивать обычный через strcmp
И вот вещи типа таких:
нужно внимательно перепроверять. Что-бы случайно не превысить размеь msg[3], не забывать что один символ по нулев должен быть выделен и т.п. ( тут вроде все впорядке, беглям взлядом, вроде должно трех хватать, но вот "все подобное" перепроверить).
А еще вот тут, что-то немного "смущает"
С одно стороны в комменте написанно "release all stash buffers", и тут же уже ПОСЛЕ этого явная попытка выводить содержимое этого stash.
То есть, либо выводим то что уже "в неопределенном состоянии", либо очистка, на самом деле - не произошла.
Опять-таки, я не уверен что "проблема тут" (лень лезть смотреть реализацию этого Stash), но "я бы обратил внимание".
byte Ethernet::buffer[500]; было 700, уменьшил.
3-6 строки в коде что вы привели. То вывод данных что идут на сервер. То для проверки.
Можно откл. Но ничего не по меняется .
Я все же думаю что проблема вmillis()/timer как написали выше.
Буду дома попробую переделать. Я пока учусь, не очень понимаю что делаю. Но попробую.
Насчёт ОЗУ, сутки отработал. ОЗУ не уменьшилось. Стабильно держит.
Да я понял, что это.. я же не сказал что "там неправильно". Просто обратил внимание что "подобные вещи нужно перепроверять". При работе со строками и массивами. Когда что-то глючит, то в первую очередь смотришь где есть потенциальные "выходы за границы массива".
Ну там проблема есть... но, по идее она должна проявится попозже, а не сразу.
Вообщем начните с "разделения" логики по нескольким функциям. В "единой простыне" - трудно что-то найти.
Я бы еще и "чтение датчиков" и "отсылку данных" отделил. В отдельной функции - опросили все датчики. Показания сохранили куда-то в переменную.
В отдельной - отсылку данных из этих переменных, а прямо чтение.
Тогда можно взять и отдельно попосылать даныне (да хотя-бы и просто нули), убедится что приходят.. отедельно фунцию опроса датчиков подергать...
что-то такое в итоге:
Ну и комбинируя (закоменчивая/раскоменчивая) вызов этих функций collectSensorData(), sendDataToSerial(), sendDataToServer()
можно, в итоге выяснить "кто же пакостит". "По частям" скетч погонять.
А еще... лучше всего вместо
вот так писать
без "UL" на конце, тоже могут "заподлянки" вылазить.
Пока сделал такие изменения
сделал выдачу минуту , 10 минут смотрел. стабильно до секунды отправляло.
щас выставил 6мин. посмотрю как будет.
1 минута и 6 мин http://visualbooster.com/share/20140807212945984.png такого раньше не было :) стабильно.
Господа, я вмешаюсь в вашу беседу со своим вопросом :)
Собственно практически тоже самое что и у ТС, но проблема в другом. На народмон никаких данных не поступает. Иногда появляется строка
и все.
tcpdump на роутере показывает
и последнее length меня смущает. Я же напрямую прописал что отправить уже. В чем мб проблема?
2xorkrus:
а вы тему перечитали? Все возможные траблы (питание и т.п.) перепроверили?
То что памяти хватает удостоверились?
Или вот на "в чем мб проблема", нужно сейчас еще раз все перечислить, но уже "лично для вас"?
И вот я не понимаю, ну что вот за манечка пошла "взять всего железа побольше", все слепить вместе а потом пытаться среди всего этого найти "что же не работает".
Ну вот не приходят вам данные на сервер. Ну ведь значит это и перепроверять нужно. Посылку данных от ардину до сервера.
Для выяснение если с этим проблемы, не нужны ни экраны, ни датчики, ни библиотеки таймеров. Они будут только мешать.
Просто взять пример из библиотеки и взять что-то попытаться "послать". Тупо что-то захадкоженное. Просто строку какую-нибудь. КАкиет-то цифры 1,2,3... Убедится что отсылка данных проходит нормально. Хотя-бы одна.
Когда это "заработает", тогда добавлять "переодичнсоть". Через мillis() или сторонние библиотеки.
Вначале убедится что "переодичность работает". Обычным Serial.println увидеть что "все вовремя запускается".
Когда "и то и другое" заработало, тогда вместе... отсылаем одну строку переодично. Убеждаемся что приходит на сервер.
Когда уверенны что "связ работает, отсылать переодично - железно можем".
Начинаем уже датчики подключать.
Подключили один - проверили что рабоатет.
Подключили второй - провреили что работает.
Подключили экран .... "оппа, не работет" (это я к примеру) - ну значит в первую очередь нужно смотреть тот код который с экраном работает.
ПОшагово. Каждый раз отталкиваясь от "уже железно работает".
А не взяли кучу всего, намешали.... и потом "ой, что-то не так...".
Не, конечно еще то хита прошлой недели, когда вывалили 1000 строк, кода. с немецкими названиями функций и коментами. и спросили "оно делает не то что я хочу, почему?" вы еще не дотянули, конечно. Размер скетче еще "можно проглотить", но вот не могу понять зачем же самому себе жизнь-то усложнять? (честно даже не сколько "наехать" хочу, сколько действительно удивляюсь).
http://visualbooster.com/share/20140807231617687.png за час стабильно. поставлю до завтрешнего вечера.
Спасибо, помогли разобраться. и кое что нового узнал.
leshak, отвечаю: с питанием все в порядке и памяти хватает. этот этап я уже проходил, правда пытался юзать другую библиотеку.
Ну и не додумался я отключить всё, не додумался упростить код до минимума. Ну и...
Не работает :)
IP 192.168.1.88.2982 > mail.net13.info.www: Flags [S], seq 5632, win 768, options [mss 550], length 0
Повторно перепроверил питание, и работоспособность модуля - все нормально.
Собственно в первом варианте прошивки, все тоже самое, только с настоящими данными на экране. А "экранчик" нужен для отладки ибо программирую через ISCP и доступа к уарту временно нет.
Совсем все убрал. даже библятеку таймера. Все равно не отправляется.
IP 192.168.1.88.2850 > mail.net13.info.www: Flags [S], seq 2560, win 768, options [mss 550], length 0
> А "экранчик" нужен для отладки
Для отладки, зачастую проще использовать светодиод на какой-то ножке (или втсроенный 13-тый). Что-то типа "мигнул когда послал". Это всяко проще чем экран... (то выравнивание не то, то еще что-то-то...). Да и скажем когда нужно четко временные интервалы отслеживать, можно логическим анализатором или осцилографом смотреть точно "в какой момент ножка дрягнулас" (выполнилась интересующая строчка кода).
Но... " и доступа к уарту временно нет." - это не дело. Без этого что-то разрабатывать/отлаживать, это, простите, как занятия сексом в гамаке стоя на одной ноге. И так нормальной отладки нет в арудине, так еще и "эрзац" недоступен...
Далее...
Это фигня. Шансы что "сработает" пара процентов. У вас же нет гарантии, что строчка попадет на выполнение точно в нужную, круглую миллисекунду. Вот чуть-чуть где-то "задержался", на одну миллисекунду.... и все. "поезд ушел".
Правда, для объективности, нужно признать что я вчерась, засыпая, тоже "фигню упорол":
Правильно будет так:
далi буде....
Итак, мы имеем два хоста. Которые между собой должны общатся, но не общаются...
Возможные места проблем:
1. Проблема у передающего
2. Проблема у принимающего
3. Проблема между ними
Для начала, проверяем естественно то что "проще проверить". "Передающего и принимающего". Вначале что они вообще хоть как-то работают.
Как проще всего проверить? Да банальным ping-гом.
Пингуем шилд.
Пингуем целевой хост.
А еще "вопрос на засыпку": из скольки цифр состоит IP ардесс? (кстати вопрос относится и к andrej777)
Далее:
то что вы "упростили" - это хорошо. Тольк обычно начинают работу с шилдами даже не со своих "упрощенных примеров", а с примеров идущих с библиотекой.
Посмторите примеры библиотеки, не замечаете никаких отличий вашего кода в вопрсое инициализации шилда?
Или... если не примеры, то хотя-бы на код andrey777 посмотрите. Как известный пример "который работает". Сами же сказали что у вас задача "практически таже самая", так почему бы не проиграться в игру "найди 10-ть отличий" (особенно в setup())? ИЛи вообще взять его код, убедится что он работает у вас и начать его потихоньку (по одному шагу) начать переделывать в ваш и смотреть на какой переделке "перестанет работать"?
Кому светодиод, а кому экранчик. это уже зависит от тараканов. мне экран вполне себе уарт заменяет. Пинги идут в обе стороны. разница в сетапе из-за дхцп и статики. У меня все на статике.
Конструкции if не считаю нужными в данном месте, так как мак присваивается и енк запускается. роутер устройство видит. принтип туда же. гатевей также задан статически. И на этом гатевее я вижу идущие пакеты по нужному адресу, но почему-то нулевой длины.
По поводу millis вы правы, выполняется код 1 раз, а потом молчит, но большего и не требуется для отладки пока.
Пробовал делать отправку на основе экземплового скетча xively, но почему-то не сделал. Попробую ещё раз. Там данные отправлялись (кстати там я статику прописывал также как и в том, что выкладывал ранее.).
Возможно я что-то упускаю, но я вижу проблему именно в выполнении пустого запроса, а не в ините контроллера сети. Но попробую ещё раз с ксивели, как уже писал.
>Конструкции if не считаю нужными в данном месте, так как мак присваивается и енк запускается. роутер устройство видит.
Зря...
Я бы все-таки делал их... когда возявкаешься, лучше моментально видиеть "где-то что-то отвалилось".
Если не в Serial, то хотя-бы LED, типа "ошибка" зажигать.
Ну и... я смотрю, у вас строка
появилась. Я ее имел ввиду, а не "динамику/статику". Раз мы куда-то на удаленный хост стучимся, то нам явно нужен гейтвей. и стоит долждаться пока он будет "готов".
и проверок, и всяких println (ну экран, лед и т.п.) все-таки "побольше". они помогают не только "поймать fail", но и вещи типа "gateway found" - помогают иметь уверенность что "вот этот кусок точно работает".
А еще... обычно не лишним сообщать какая у вас плата.
И попробуйте, все-таки, без экрана. Причем не только "из скетча убрать", но и физически его отключить.
Вообщем что-бы была "плата и enc28j60". И "больше ничего".
Кстати раз вы шьете по ICPS. Еще и программатор отключить желательно на момент проверки.
Как ни крути, а висит-то он на тах же пинах, что и модуль.
Вообщем в таких ситуациях приходится проверять все. даже то что выглядит "ну не может оно мешать никак".
Лешак опять пристал к специалисту. Ты же видишь товарищ все знает, все умеет. Только где то ошибка, но не по его же вине. Просто это враги с ним шутят. А ты заместо исправить ошибку, начал ему читать лекции, да еще просить делать как принято. Не можешь исправить ошибку, ну так и сиди молча. :)
Puhlyaviy, Враги-враги, сам видел! Всё злостные ливийские власти задумали...
Puhlyaviy, Враги-враги, сам видел! Всё злостные ливийские власти задумали...
Ну тут тогда только один выход. Когда пишеш код и заливаешь его в ардуино. Накрывайся одеялом с головой. Чтобы враги не подглядывали.
А одеяло-то помогло!, спасибо Puhlyaviy!
leshak, пополам на пополам - но все заработало, спасибо. Правда на дхцп, но ничо. роутер сам ему ип назначит нужный.
Обнаружил такую проблему.
из за чего сбивается время отправки.
http://visualbooster.com/share/20140809164711375.png это комп (сетевой кабель был вытащен )
потом, ничего не делая , я подключил просто сетевой кабель до компа. http://visualbooster.com/share/20140809174508765.png
стабильность показаний стала отличной!
может что то с роутером? типа когда через роутер идёт какой то обмен данными, то вся система правильно работает, а если выкл. комп, или вытащить сетевой кабель , что бы никто инет не сосал, то начинаются вот такие глюки.
Предлагаете достать хрустальный шар? Погадать на тему как у вас раутер глючит? Попробуйте другой раутер.
роутер тплинк Model No. TL-WR340G/TL-WR340GD
у Вас Puhlyaviy , наверное куча их дома?
роутер тплинк Model No. TL-WR340G/TL-WR340GD
у Вас Puhlyaviy , наверное куча их дома?
У меня 4 раутера дома и один свич и все разные. Одного не хватает. Возмите у соседа на 10 минут для эксперементов.
была бы возможность, взял бы. и не писал бы тут.
была бы возможность, взял бы. и не писал бы тут.
И теперь ждете что кто то соберет точно такое как у вас. С такими же проводами и косяками и проверит? Да вы оптимист.
Хорошо. Давайте ждать вместе. Не пойму где вам мерещится флуд. Я с тем же успехом могу всю вашу тему назвать флудом ибо не о чем.
andrej777, я использовал вот эту библиотеку
int
tickEvent2 = t.every(15000, nm_upd);
// 1 iteration in 10 minute
Выполняется вполне себе четко и без обсчетов всяких миллисов. Сбоев со временем небуло вообще.
вся проблема в роутере. как тока откл комп. сразу начинает глюки давать. я так понял если через роутер не идёт инет. то он засыпает, может сделать что бы ардуинка что то пинговала постоянно ?
вся проблема в роутере. как тока откл комп. сразу начинает глюки давать. я так понял если через роутер не идёт инет. то он засыпает, может сделать что бы ардуинка что то пинговала постоянно ?
может настроить раутер? или купить нормальный который не будет засыпать :)
А еще "вопрос на засыпку": из скольки цифр состоит IP ардесс? (кстати вопрос относится и к andrej777)
0x00, 0x02, 0x27, 0xAF, 0x25, 0xB0
щас сделал кое какие изменения из того что вы писали, 15 часов отработала и перестала выдавать.
чем ближе кконцу было дело тем больше становились задержки, 10,15,20,30, ... конец, перестали ваще идти.
но если комп включен. то идут данные стабильно.
и ещё вопрос, можно ли данные отсылать меньше чем 5мин, не забанять?
и почему то я выставляю показ данны каждые 5мин, а он отображает как 6мин. так и должно быть?
http://visualbooster.com/share/20140813213727312.png вот, это я выставил 5мин.
А еще "вопрос на засыпку": из скольки цифр состоит IP ардесс? (кстати вопрос относится и к andrej777)
0x00, 0x02, 0x27, 0xAF, 0x25, 0xB0
Что это было?
щас сделал кое какие изменения из того что вы писали, 15 часов отработала и перестала выдавать.
Ага. То есть предполагается что я помню, что и кому я советовал неделю назад? Да еще должен предвитеть в каком объеме и как эти советы реализовались?
чем ближе кконцу было дело тем больше становились задержки, 10,15,20,30, ... конец, перестали ваще идти.
но если комп включен. то идут данные стабильно.
Ну так может дело в вашем роутере? Или питании, все-таки?
В лог вы выводите? Попытки отсылок регулярны?
Ну разве не логично, если что-то куда-то не приходит, то начинать с того что-бы убедится что "оно отсылается" (хотя-бы пытается)?
Какой ответ получаете от сервера?
Или вы думаете что по цифрам "10,15,20,30" - кто-то сможет "прозреть" и сказать вам причину ваших проблем?
и ещё вопрос, можно ли данные отсылать меньше чем 5мин, не забанять?
А почему вы нас об этом спрашиваете? Спросите владельца сервера которому шлете.... откуда нам знать за что там банят, а за что нет?
to andrej777
на основе Вашего кода (не разобрался с какой BMP085 библиотекой Вы собирали, заменил на Adafruit) собрал свою версию. Сутки отпахала как часы (плюс-минус пара минут в логе народмона) через роутер TP-Link MR3420 v.1.0 с родной прошивкой.
Сейчас добавил второй датчик DHT22, посмотрим как срастется.
В планах еще к этому LCD присобачить , во флэш место есть, там посмотрим.
Скетч интересует ?
Maker39
я уже отказался от модуля этого ENC28J60, сделал на другом. показания стабильны, свободной памяти больше.
если через роутер идет какой то обмен информации ,то шильд работает отлично, но если после роутера убрать всех, и оставить только ардуину. шильд засыпал. как выяснилось, это не только у меня. и по этому я перешёл на 5100 шильд, который мне больше понравился чем тот .
А у меня не засыпал. Мне все как-то больше памяти не хватало (BMP085, enc28j60, lcd24x2, dht11 dht22, анемометр) :)
Sketch uses 25 700 bytes (83%) of program storage space. Maximum is 30 720 bytes.
Global variables use 1 172 bytes (57%) of dynamic memory, leaving 876 bytes for local variables. Maximum is 2 048 bytes.
это щас с шильдом 5100, та и то не орчень красиво написан. dht22,1820,BMP085, если по чистить. то можно ещё расшарить. пока необходимости нет. щас надо будет прикрутить, аналоговыфе датчики, на них памяти мало. ну и впринцепи можно 1602 прикрутить.
Program: 21726 bytes (66.3%)
Data: 1788 bytes (87.3%)
Да у меня все равно толще...
Sketch uses 25 700 bytes (83%) of program storage space. Maximum is 30 720 bytes.
Global variables use 1 172 bytes (57%) of dynamic memory, leaving 876 bytes for local variables. Maximum is 2 048 bytes.
Научите пожалуйста , как узнать такие подробности :)
Подключил 1602 дисплей , теперь Nano v3+ ENC28J60+2xDHT22+LCD1602 , пока что хотел - все получилось.
С 3.10 фурычит без остановок.
Задался вопросом : почему постоянно горит ACT (желтый светодиод на ENC28) и только в момент передачи данных мигает. Посмотрел в логе роутера, а оказывается постоянно запрашивается DHCP ( скетч из первого поста топика пробовал - без изменений так-же) .
Вопрос к andrej777 : это специально для чего-то сделано или издержки ?
ps/ только начал изучение , вопросы могут показаться ламерским.
В IDE включите детальный отчет и будет вам все показывать.
версия 1.06 "Настройки-> показывать подробный отчет при компиляции / загрузке " ?
В логе только "размер скетча" .
Больше ничего похожего не нашел.
Вмешаюсь. Как это в самой ардуине увидеть, я не знаю. Пользуюсь т.с. дедовским способом:
> C:\Program Files (x86)Arduino\hardware\tools\avr\bin>avr-size.exe --mcu=atmega3
28p -d -C "C:\Users\xopek\AppData\Local\Temp\build8348424080955295979.tmp\INT_ML
S_XWS_ETHERCARD.cpp.elf"
AVR Memory Usage
----------------
Device: atmega328p
Program: 21726 bytes (66.3% Full)
(.text + .data + .bootloader)
Data: 1788 bytes (87.3% Full)
(.data + .bss + .noinit)
в CMD выполняем. утилита в составе ардуины есть. Папка с ельфом - папка где скетч собирается.
Sketch uses 25 700 bytes (83%) of program storage space. Maximum is 30 720 bytes.
Global variables use 1 172 bytes (57%) of dynamic memory, leaving 876 bytes for local variables. Maximum is 2 048 bytes.
Научите пожалуйста , как узнать такие подробности :)
ардуино иде 1.5.6 http://visualbooster.com/share/20141017094614812.png можно ещё кусок кода вставить и покажет тоже сколько осталось. или иде сама напишет что осталось мало памяти.
я отказался от ENC28J60, не стабилен он. взял W5100. меньше памяти ну и плюс флешку можно вставить.
andrej777
А подскажите\покажите, пожалуйста свои наработки по W5100. Я что-то не увидел ни капли экономии в сравнении с ENC28J60...