проблема с enc28j60+arduino
- Войдите на сайт для отправки комментариев
помогите разобраться в проблеме: имеется ардуино точнее клон craftduino
http://robocraft.ru/blog/RoboCraft/97.html]http://robocraft.ru/blog/RoboCraft/97.html- описание, для тех кому интересно
и недавно пришедший по почте модуль ethernet на enc28j60
http://www.evodbg.com/doc/ep_eth.pdf]http://www.evodbg.com/doc/ep_eth.pdf- распиновка разьема
http://starterkit.ru/html/index.php?nam ... view&id=57 - описание
подключал по данной табличке, согласование уровней проигнорировал
так как на сайте http://we.easyelectronics.ru/electro-and-pc/podklyuchenie-mikrokontrolle...
цитата"Питание — 3.3 В. Но входы микросхемы совместимы с 5-вольтовыми TTL уровнями."
3.3 вольта взял с платы ардуино помеченно маркером 10 на фото сверху
результат как всегда не ответа не привета пробовал стандартные примеры из ардуино айди полный ноль enc-шка подключена к роутеру прямым кабелем так как в статье
http://www.kiranjose.com/blog/2011/09/connect-to-internet-with-arduino-m... говорится что для прямого соендинения нужен старинный вариант кросс кабель которого у меня увы нет. прошу помощи у тех кто применял и применяет данные модули вместо оригинальных ethernet шилдов
> пробовал стандартные примеры из ардуино айди
Так в них же всех написанно для " using an Arduino Wiznet Ethernet shield. " какое они имеют отношение к enc28j60?
Совсем другой чип, соответсвенно и другие библиотеки нужны. Гуглите "enc28j60 arduino library" их несколько есть. Но все немного похуже чем для "официального шишлда". Хотя почти год прошел как с ней игрался, может счас что уже и получше стало в этом смысле.
Я подключал вот по этим двум статьяем: http://figleymigley.livejournal.com/tag/enc28j60
Потом нашел какую-то более удобную либу, чем в статях, но счас уже не упомню какую и где (на вначале все запустилось на либах из статитьи).
И еще, зарбота-ть она заработала, но частенько "висла". То пингуется, то нет. Пока не померял напряжение на 3.3 пине (у меня мега). Оно там "проседало". Собрал для нее отдельный регулятор питания (который брал с 5v пина и в 3.3-переделывал) - начала стабильно работать.
Я не уверен, но как я понял, на 3.3v пине, на некоторых платах, напряжение генерируется FTDI чипом (в качестве побочной функции). И там максимальные токи довольно маленькие. Хилый он для этого.
большое спасибо за развернутый ответ :), поясните пожалуйста насчет согласования уровней? обязательно ли? или все и так стабильно работает? и если не затруднит обьясните чем лучше viznet?
>поясните пожалуйста насчет согласования уровней?
Год назад с этим копался. Сейчас не помню. Зрительная память говорит что не согласовывал. И к первой статье, ссылку на которую я дал, вижу что сам поднимал этот вопрос к автору статьи. Он рекомендовал "согласовывать", но я нашел в даташите что "можно плюнуть", плюнул и заработало :) (в комментах там тоже об этом отписал).
> или все и так стабильно работает?
У меня стабильно заработало после того как обеспечил качественное питание.
>и если не затруднит обьясните чем лучше viznet?
В первую очередь тем что он стандартный (с точки зрение официальной ардуины), следовательно готовых проектов написанных "под него" - на порядок больше. Но учитывае разницу цен, enc28j60 тоже набирает популярность (хотя где-то и видел жалобы типа "глючные чипы это").
Говорить что сам чип-шилд лучше хуже - не готов. В тяжелых условиях - не гонял. Так, поигрался чуток. Лучше библиотеки для работы с wiznet. Но за год может и для enc28j60 ситуация улучшилась - не знаю. Опять-таки лучше не "принципиально", просто удобней. Больше низкоуровневой работы спрятанно в саму библиотеку.
Сейчас уже не вспомню в чем именно отличие, можете сами просто сравнить семплы идущие с одной и другой библиотекой. Посмотрите где меньше нужно кода самому писать :) Я говорю про разницу типа: "одна библиотека дает только функцию вычитывания байтов в буффер, а другая еще и функцию readln предоставляет", в одной уже реализованн, к примеру, dhcp, а в другой самому руками это нужно делать....
Вообщем принципиально что можно сделать на одном чипе - можно и на другом. Вопрос - удобства. Но это персонально, да со временем меняется.
примного вам благодарен, большое спасибо
Беглое гугление показало вот на такую библиотеку
https://github.com/turicas/Ethernet_ENC28J60/
Авторы общещают что у нее такое же API как и у стандартной. Цель авторов что-бы один и тот же код мог работать и Wiznet и c ENC2860. Насколько у них получилось - не знаю. Можете попробовать. Когда я игрался - еще небыло таких библиотек. А сейчас нет времени "искать/пыль сдувать", хотя в планах - имеется :)
доброго вечера по вашим рекомендациям подобрал себе библиотеку для работы с encшкой все отработало на ура(тестовый скетч с термодатчиком), но сталкнулся с небольшими трудностями имеется блок питания(12в) к нему подключен стабилизатор крен5а, а к ней уже (noname) стабилизатор на 3.3в так вот суть проблемы: все было повешенно на этот БП (ардуина на 5в), а encшка на 3.3в так вот весьма удевительный казус кренка и noname стабилизатор разогрелись не на шутку прелепил к ним по очереди термодатчик из тестового скетча температура оказалась 70 градусов это нормально или стоит подобрать другие стабилизаторы для питания? если да то посоветуйте
п.с. тестировал периодами боясь что стабилизаторы выйдут из строя
>доброго вечера по вашим рекомендациям подобрал себе библиотеку для работы с encшкой
А ссылочку на библиотеку, которая в итоге заработала? Может и после вас кто-нибудь захочет с таким шилдом поигратся захочет. А тут глядишь и ответ готовый.
По поводу нагрева - на 12в - вполне реально. Поэтому и говорят что "лучше питать от 7.5 д 9 в". Не совсем понятно зачем крен5а? Разве на плате нет стабилизатора? (кстати там они тоже говорят что 12в - может грется).
Смотретие тут логика проста: стабилизатор должен выдать 5v. Все что ему дали на вход "лишнего" - он выбрасывает в виде тепла в воздух. Логично что при понижении с 9v до 5v меньше атмосфера греется больше чем с 12v до 5v. Ну и плюс все это умножается на проходящий ток. Так что можно, еще померять амперметром какой ток потребляется, потом смотреть в даташит - похоже на "нормальную работу или нет".
На у сказать нормально ли что греется noname с неизвестными характеристиками - как возможно? Смотрите что по паспорту он позволяет через себя пропускать и что в реальности идет.
Как сейчас обстоят дела с ENC28J60? У кого работает как клиент?
У меня работает. Буквально вчера "имел секс с ним". Вам повезло :) : воспоминания свежи и контекст, пока, в голове.
Работать заставил, но "все очень грустно" с библиотеками для него. Куча библиотек с одинаковыми именами, в разной степени готовности.
В данный момент у себя на винте наблюдаю три библиотеки:
Родную - смотрел год назад. Тогда работала, в этот "заход" почему-то не захотелось завестить. Но я долго и не мучал, изначально не нравится то что много протокольного уровня положенно на плечи скетча. Так что "не пошла" и бог с ней.
Ethernet_ENC28J60 ( https://github.com/turicas/Ethernet_ENC28J60/ ) - самая симпатичная по "использованию". Главная идея - совместимость по API с winznet шилдом. Но похоже автор ее забросил, а список ToDo/Bug - пугает. Так что не рискнул тратить на нее время для запуска в продакшн. Хотя именно "вот такую" и хотел-бы....
EtherCard (не помню точно где брал, но возможно тут http://jeelabs.org/ethercard или https://github.com/jcw/ethercard/) - вообщем та которую использую на данный момент. Работает и API относительно симпатично, но "внутри у нее" - тихий ужас (лично для меня). Документации - практически нет (смотреть примеры и "сам код библиотеки"), одновременно есть "два API" (и какой пример на каком - фиг догладаешься). Но главное - работает, авторы вроде "развивают" ее, плюс, по отзывам библиотека где наиболее полно учтены всякие "заглюки" чипа (а, опять-таки по отзывам, он довольно глючиный). Ну и всякий плюшки типа "отвечать на ping запросы", DNS, DHCP, гейтвеи и т.п. - у нее уже есть "на борту" самому код для этого сочинять не нужно. Плюс некоторое количество хелперов для конструирования/парсинга запросов
Добавлю и свои "3 копейки".
Работает и вот эта библиотека: http://trollmaker.com/article11/arduino-1-0-with-enc28j60-ethernet-shield-v1-1/
автор в комментариях к этому посту отвечает (но не на все вопросы, к сожалению ;))
Добавлю и свои "3 копейки".
Работает и вот эта библиотека: http://trollmaker.com/article11/arduino-1-0-with-enc28j60-ethernet-shiel...
автор в комментариях к этому посту отвечает (но не на все вопросы, к сожалению ;))
Спасибо за ссылочку, не попадалась на глаза. Беглый осмотр показал:
Так что ссылку "в копилку однозначно". Для реализации сервера типа "хочу через веб включать-выключать диод" она очень не плоха. Но что-то более существенное, на ней строить IMHO рановато.
Большое спасибо за ответы. У меня уже три неуспешных подхода за два дня.
С библиотеками не просто печально, а беда. Как уже сказано куча библиотек с одинаковым именем или мега-паки на си и асемблере.
Сервер на этом чипе это единственное что, наверное, на данный момент работает без нариканий (и то, я не тестил, а просто поигрался).
Про клиента. В голове есть как докрутить обертку над стандартной библиотекой (в которой куча страшных методов) чтоб сделать юзабельной функцию клиента. Ведь, в примерах то оно есть, только...Только фиг поймеш с первого раза.
Про подсети. В той же обертке нет поддержки подсетей. В моем случае два роутера, один в сети второго. Ардуина коннектится ко второму. В стандартной либе есть метод void ES_client_set_gwip(uint8_t *gwipaddr), который не то что не поддерживает обертка, этот метод еще и вырезан автором из исходной библиотеки.
Вобщем, вечером секс с ENC28J60.
По ходу буду отписываться и ждать Ваших решений.
EtherCard (не помню точно где брал, но возможно тут http://jeelabs.org/ethercard или https://github.com/jcw/ethercard/) - вообщем та которую использую на данный момент. Работает и API относительно симпатично, но "внутри у нее" - тихий ужас (лично для меня). Документации - практически нет (смотреть примеры и "сам код библиотеки"), одновременно есть "два API" (и какой пример на каком - фиг догладаешься). Но главное - работает, авторы вроде "развивают" ее, плюс, по отзывам библиотека где наиболее полно учтены всякие "заглюки" чипа (а, опять-таки по отзывам, он довольно глючиный). Ну и всякий плюшки типа "отвечать на ping запросы", DNS, DHCP, гейтвеи и т.п. - у нее уже есть "на борту" самому код для этого сочинять не нужно. Плюс некоторое количество хелперов для конструирования/парсинга запросов
Не получилось добиться результата. Компилирует, заливает и молчит...Можете кинуть сюда коротенький пример?
P.s. добиваюсь функции клиента.
Только "ждать решений" не стоит. По крайней мере не задав конкретный вопрос. Бо разные задачи решаются больно "по разному".
Например даже такая банальщина как "послать дополнительный хедер", решается ВООБЩЕ ПО РАЗНОМУ в случае если нужно послать GET-том или POST-том.
Дать свой скетч целиком - я не могу. Во первых "объем", во вторых "писался для клиента". А вот "поделится кусочками" на конкретный вопросы (или подсказать в какой пример смотреть нужно) - возможно.
Если будете пробовать эту библиотеку предупрежу об одний "граблях по умолчанию" (мой клиент "наступил на них", учень удобно они подложенны :)
По дефолту эта библиотека предполагает что CS-пин это D8, а многие примеры в инете предполагают что это D10. Но, к счастью, при старте можно указать какой юзать. Третим параметром функции begin.
Вместо
писать
Ну и гейтвеем вроде не особо сложно
Третим параметром можно еще dns_ip передать.
Ну либо не морочится со всем этим,в ключить DHCP на ротере и вызвать
и так, дела начали двигаться, ура.
Вот подправленный скетч из примера:
Молчит...В сериал ничего не выдает...
Не получилось добиться результата. Компилирует, заливает и молчит...Можете кинуть сюда коротенький пример?
P.s. добиваюсь функции клиента.
Стандартную "граблю" проверили (CS_PIN)?
Молчать он может если пытаетесь использовать DHCP и DNS, а они при этом неверно сконфигурены или нет их. Долго может молчать. До минут. Пока не скажет что "обломс". Но что-то сказать должен (ну смотря какой пример вы пытаетесь завести)
Например webClient.ino должен квакнуть
"Failed to access Ethernet controller" или "DHCP failed"
Ну или, если все хорошо, то вывести какие IP-шники будут юзатся.
Если "без DHCP", то смотрите как инитится шилд в getStaticIP.ino , там же фактически и сразу пример клиента есть, который GET запрос шлет ( browseUrl это они так обозвали httpGet)
>добиваюсь функции клиента.
Это понятно. Вопрос в том, что клиент "посылать должен" (каким методом, нужно ли доп. хедеры, нужно ли "получать ответ"). Больно разные партитуры для этих случаев выходят :)
Хотя. Блин, события разворачиваются в онлайне)) Подумал, подумал и выдал
т.е. скетч работает
О клиенте: добиваюсь простого ГЕТ запроса на сервер. Слушаясь ваших советов, чую, сейчас нарою)
>Молчит...В сериал ничего не выдает...
Быть не может. Как минимум "[webClient]" должен написать.
Ну и строки 32 и 36-37 - взаимоисключащи. Вы решите юзаете вы DHCP или руками все указываете. Если "руками", то выкидываем 36-37 и вместо на их место пишем staticSetup
и 43-44 - тоже нафиг, если мы все IP-шники сами будем указывать (если ваш сервер локальный и роутер не умеет его резолвить по имени DNS нам нафиг упал).
И еще подмечу, часа два потерял в муках над железкой, оказалось, что скайп занял 80й порт.
Все, примеры заработали. Как я понимаю проблеммы были в ether.begin(sizeof Ethernet::buffer, mymac,10).
Спасибо leshak!
Развиваем дальше...
Все! Муки закончены! И клиент и dhcp, полный фарш!
Спасибо! *чуть не прыгает от радости*
Два часа - это просто "заработало почти сразу" :)
> что скайп занял 80й порт
Я тоже пару раз танцевал так с ним. Причем у меня на 80-том висит IIS обычно. Но раз в пару месяцев скайп, вдруг, почему-то решает что "ему нужней". И хотя знаю про эту подляну, каждый раз забываю и тоже часок трачу :)
Что-бы быть увереным что порт не занят, можно свой сервер перевесить на другой порт. А в скетче, если порт не 80-тый, сделать что-то типа
ether.hisport=8080;
кстати, что-бы два раза не вставать, указать руками IP-сервера куда слать запросы, можно так:
ether.copyIp(ether.hisip, server_ip);
и потом убедится (или посмотреть куда DNS разрезовил имя сервера) так ether.printIp("SRV: ", ether.hisip);
По поводу скайпа можно попробовать вот эту галку снять
Но сам не пробовал, обычно у меня IIS, все-таки, успевает первым схватить 80-тый порт на себя
Как я понимаю проблеммы были в ether.begin(sizeof Ethernet::buffer, mymac,10).
По всей видимости. У меня он завелся без этой поправки. Хотя у меня мега и подключен он к 53-тьему пину :) Почему у меня "заработало" сразу я так и не понял :)
Работаем над enc28j60. День третий.
Вроде все работает как надо. Железо не тупит, не греется. Библиотека "норм", куча всяческих фишек и возможностей.
Но, что делать, если памяти в МК 14кб, а сама библиотека занимает почти 10кб?
Подмечу, что пока я обхожусь простым get запросом. Что и где можно урезать, чтоб выиграть хотябы несколько килобайт под сторонние библиотечки?
>Но, что делать, если памяти в МК 14кб, а сама библиотека занимает почти 10кб
За "фишки" платить нужно :) Самый "тупой вариант" перейти на мегу где памяти больше :)
На днях, возможно, сам столкнусь с этой проблемой, нужно будет упихивать готовую работу в более мелкий контроллер чем тот на котором девелопилось, но общий подход примерно такой: главными "пожирателями" оперативки являются текстовые строки. Всякие Serial.print("Bla-bla-bal"). Выход - либо нафиг их, либо читать руководства по PROGMEM и PSTR (но это позволит съекономить только оперативку, но не флеш память).
Далее: Попытатся уменьшить буфер для чтения byte Ethernet::buffer[700], если вы не ожидаете "развернутых ответов от сервера" (но не забываем, что "ответ" влючает не только "тело", но еще и всякие http заголовки, для которых тоже место требуется).
Ну а дальше либо искать "более скромную библу", либо "хардкор".
Лезть в саму библиотеку и потрошить ее. Искать всякие буферы и тоже пытаться их уменьшать (до тех пор пока все не навернется), искать куски кода которые вы не используете и выкидывать их (например icmp ответы - для работы ping. dhcp, dns и т.п. сервисы, выпиливать webserver поддержку и творить прочие пакости)
Что-бы не "корежить все с концами", можно вместо выкидывания оборачивать в конструкции типа
Тогда что-бы "вернуть как было" достаточно будет закоментить #define DISABLE_SOME_FEATURE
>Подмечу, что пока я обхожусь простым get запросом
Ну так в http протоколе GET от POST/PUT/DELETE и т.п. вообщем-то принципиально не отличается. И то и то просто "набор строк-комманд" которые вы шлете серверу. Разница "в пару слов".
Все выше перечисленное пробовал, выигрыш 1кб максимум.
Упоминая только гет запросы, я имел ввиду как раз то, что все остальное можно выкинуть, но толку мало, скорее всего при компиляции лишнее и так отбрасывается.
Ну 1кб. это не так уж и мало. Почти 10%. В нее "собственной логики" можно напихарить достаточно много. В одном из предыдущих моих проектов 1кб - это то что вообще было на камне заказчика.
Но вообщем-то такова специфика восьмибитников. Как ни крути, а полноценная реализация tcp/ip стека для них "тяжела". Даже если "памяти хватает" - все равно медленноваты они для этого. Так что если что-то "сурьезнозное" монстрячить нужно смотреть в сторону более взрослых камней и/или искать ether-нет чипы со встроенным tcp/ip стеком.
А "ограниченные ресурсы" - так в этом же и "симус". В 128гига оперативы любой дурак влезет :)
нужно смотреть в сторону более взрослых камней и/или искать ether-нет чипы со встроенным tcp/ip стеком.
Кстати, похоже для этого не нужно смотреть "очень далеко". "Официальный шилд", на wiznet-е, говорят, как раз и есть пример такого чипа, где tcp/ip реализован аппаратно, а не ложится на плечи камня. Поэтому и дороже, быстрее, надержней... и памяти жрать меньше должен.
Имею дело и с тем и с тем.
Как следствие аппаратной поддержки таких "фишек" - это возможность работы с несколькими клиентами и серверами. Wiznet'ы куда удобнее и производительней. Но в некоторых проектах вполне хватит enc28j60.
Пользуясь случаем задам вопрос: не возникали ли у Вас проблемм при "вторичном" вызове browseUrl ?
К примеру:
Проблемма: в callback() не отрабатывает ether.browseUrl, в логах сервера нет "обращений".
Можно конечно попытся выяснить "почему так", но я бы, "интуитивно" так не писал.
Я бы завел какой-то флаг, взводил его callback, и в loop проверял, если он true - вызвал-бы, опять-таки в loop(), browseUrl
Я можно, еще, попробовать работать через их "новый API".
Функцией Stash::prepare(...) подготавливать запрос для отправки (кстати тогда можно не только get, а вообще все что хочешь в него пихнуть, дополнительные header, PUT/DELETE и т.п. запросы).
Фунией session_id=ether.tcpSend(); делать саму отправку запроса, а
Проверять собственно что нам ответили именно на этот запрос.
Спасибо, вечерком попробую.
Пользуясь случаем задам вопрос: не возникали ли у Вас проблемм при "вторичном" вызове browseUrl ?
Алаверды: а у вы не замечали что первый, после старта ардуины, запрос "теряется". Нет ответа, а "дальше" идут нормально?
Мне вообщем-то не критично. У меня, если нет ответа больше таймаута - запрос повторяется, так что я не "докапывался", но просто любопытно.
Как я понимаю проблеммы были в ether.begin(sizeof Ethernet::buffer, mymac,10).
По всей видимости. У меня он завелся без этой поправки. Хотя у меня мега и подключен он к 53-тьему пину :) Почему у меня "заработало" сразу я так и не понял :)
Дернул черт "сделать по правильному". Написать инициализацию так что-бы и на меге работало и на Nano (у клиента). Типа раз есть оперделенная константа SS (при компиляции на меге она равна 53, при компиляции на Nano = 10).
Написал
ether.begin(sizeof Ethernet::buffer, mymac,SS).
И получил "болт". Не инициализируется. Шилд начал пугающе грется. Полез в библиотеку, смотрю что там "по дефолту", там дефолный пин 8-мой.
Пробую
ether.begin(sizeof Ethernet::buffer, mymac,8)
работает. Пробую ",10" - не работает. Выпадаю в осадок. У меня же к нему ничего не подключено (как и к 10-тому)!!! У меня же мега, 53-тий!!! И на него подключено. То есть с "правильным пином" (53) - не работает. С одним "неправильным" (8) - работает, с другим (10) - не работает.
В чем магичность 8-мого пина? Лезу в схематику. Нет на ICPS коннектор он не выведен (я через него шилд подключал).
Отключают проводок от 53-тего (проверяю что он вообще используется) - перестало работать. Подключают на 43-тий (ну вдруг оно просто подтяжку к питанию хочет) - не работает. Значит нет. все-таки 53 нужен, правилен и используется.
Тихо шизею. Как оно вообще работает если я говорю ему не правильный пин?
Опять лезу в библиотеку. И нахочу такой прелестный кусок кода
То есть оно напрямую порту B выставляет нулевой бит (при csPin=8), лезем в пинмаппинг меги смотрим какой пин соотвествет PB0? Оппа. 53-тий!!!!!!
Итого. Для этой библиотеки. В конструкторе цифра 8-мь третим параметром, в случае Arduino Mega, на самом деле, означает 53-ти пин :) , а цифра 53-три - вообще непойми что :) (приводит к попыткам устновить 45 бит в байте. :)
Надеюсь что это поможет это избежать "битья лбом о стол" :) Так что для "Мега-водов" либо не использовать третий параметр либо пихать туда 8-рку, а подключать на 53.
Я что-то не могу понять как в этой библиотеке сервер поднять? Или тут это не реализовано?
Решил апнуть тему, а не создавать новую. Имею обсуждаемый шилд и мегу. Все завелось с библиотекой ETHER_28J60 (скачал с одной из ссылок этой темы).
Вопрос следующий: Т.к. шилду нужно питание 3.3V, собрал стабилизатор на LM317T (точнее два, второй на 5V для Arduin'ы). Вход от 12V. Все работает, и не греется. Проблема в том, что при таком подключении перестал работать SERIAL к компьютеру. При попытке открыть Serial Monitor или залить скетч в Arduino IDE, пишет, что порт занят. Если все собрать без внешнего питания, т.е. Arduino питается через USB, а питание шилда от +5 или +3,3 Arduin'ы, то все работает. В чем может быть причина такого поведения? И как можно исправить?
При попытке открыть Serial Monitor или залить скетч в Arduino IDE, пишет, что порт занят. Если все собрать без внешнего питания, т.е. Arduino питается через USB, а питание шилда от +5 или +3,3 Arduin'ы, то все работает. В чем может быть причина такого поведения? И как можно исправить?
Питание выше, чем идет с компьютера: для определения USB устройства на шине надо, чтобы это устройство "сосало" по ней ток... Иначе умный чип со стороны компьютера считает шину свободной и не передает по ней ничего. Я у себя на время заливки скетча просто переключаюсь на питание с USB шнурка. Померяйте - сколько у Вас идет по USB, и можно попробовать 5 вольт внешнего питания чуть просадить вниз... Хотя у меня на ноуте такой фокус не проходит.
добрый день подскажите пожалуйста основные различия между библиотеками ethernet.h и EtherCard (https://github.com/jcw/ethercard/)
у меня есть код написанный под wiznet 5100 , а у меня шилд на enc28j60 вот теперь и думаю как его перелопатить (
добрый день подскажите пожалуйста основные различия между библиотеками ethernet.h и EtherCard (https://github.com/jcw/ethercard/)
Разница примерно как между ВАЗ и фурой с прицепом.
По легкости управления - winznet - это жигули, enc28j60 - фура.
По возможностям (грузоподъемности) - wiznet - фура, enc28j60 - жигули.
Пересесть с одного на другой - примерно так же просто. У одного TCP стек реализован аппаратно, у другого програмно. У одного - высокоуровневое API (бортовой комьютера), где про детали протокола не нужно думать (WizNet), у в второго все низкоуровнево (не забудть "вытянуть подсос", подкачать руками бензин в карьюратор и т.п.)
Поищите по форуму. Где-то летом уже обсуждался enc2860. Там есть ссылки на разные его библиотеки (у них разный уровень глючности и легкости использования). Мелькала и библиотека с таким же API (именами функций классов), как и у визнетовской. С нет, теоретически, код вообще переписывать не нужно. Но... автор ее кажись забросил. По крайней мере у меня она "не завелась".
Так что вариант один. Много ковыряния. Разбиратся как на enc2860 сформировать запрос, как его послать (у него это разный процесс), как получит ответ, как распарсить из него данные.... вообщем лазить по примерам.
А потом пытатся реализовать свой скетч. Вообщем "поменять одну функцию на другую" - не выйдет. Слишком разная у них логика работы. Так что свой основной код прейдется "перепахивать" основательно (если он изначально не писался что-бы работу с сетью "выделить" в какой-то отдельный слой-класс).
добрый день подскажите пожалуйста основные различия между библиотеками ethernet.h и EtherCard (https://github.com/jcw/ethercard/)
Разница примерно как между ВАЗ и фурой с прицепом.
По легкости управления - winznet - это жигули, enc28j60 - фура.
По возможностям (грузоподъемности) - wiznet - фура, enc28j60 - жигули.
Пересесть с одного на другой - примерно так же просто. У одного TCP стек реализован аппаратно, у другого програмно. У одного - высокоуровневое API (бортовой комьютера), где про детали протокола не нужно думать (WizNet), у в второго все низкоуровнево (не забудть "вытянуть подсос", подкачать руками бензин в карьюратор и т.п.)
Поищите по форуму. Где-то летом уже обсуждался enc2860. Там есть ссылки на разные его библиотеки (у них разный уровень глючности и легкости использования). Мелькала и библиотека с таким же API (именами функций классов), как и у визнетовской. С нет, теоретически, код вообще переписывать не нужно. Но... автор ее кажись забросил. По крайней мере у меня она "не завелась".
Так что вариант один. Много ковыряния. Разбиратся как на enc2860 сформировать запрос, как его послать (у него это разный процесс), как получит ответ, как распарсить из него данные.... вообщем лазить по примерам.
А потом пытатся реализовать свой скетч. Вообщем "поменять одну функцию на другую" - не выйдет. Слишком разная у них логика работы. Так что свой основной код прейдется "перепахивать" основательно (если он изначально не писался что-бы работу с сетью "выделить" в какой-то отдельный слой-класс).
Красиво описал )
код там действительно выглядит красиво и просто http://arduino.ru/forum/programmirovanie/pomogite-skrestit-dva-koda-dlya...
все что у меня получилось это присобачить библиотеку ethercard
и вывести саму "страничку" в браузер ), логика пока у меня отдыхает ( к сожалению
Итак, меня тоже постиг выворот мозга на наборе MEGA2560 и ENC28J60.
Но! Уважаемый leshak не позволил пасть духом и повелел все проверив победить эту парочку! За что ему отдельное спасибо!
Значит, подключил я ее так как должно подключать к Меге т.е. 50 - 53 Раза по два по три испробовав все возможные библиотеки уже трудно соображаю...
Скайпа нет. IP статичный. Подключаю через роутер. Шнурок обычный.
Питание 3.2в от платы Меги. Всего шесть проводов. Включая CND и 3.3в.
Еще раз, пожалуйста, какую библиотеку использовать и нужно ли, что-то менять или дополнять в содержащихся в ней файлах?
Питание 3.2в от платы Меги. Всего шесть проводов. Включая CND и 3.3в.
Пост #1 последние два абзаца
Еще раз, пожалуйста, какую библиотеку использовать и нужно ли, что-то менять или дополнять в содержащихся в ней файлах?
Я использую пост #9 последний абзац.
P.S. И не расчитывайте что кто-то сможет вам помочь на "ничего не работает". Какой скетч, какие логи... и т.п.
:) И за это спасибо! Плохо когда неизвестных совсем много. Мне бы убедиться, что шилд вообще работает. Пока со мной разговаривает только скетч и выдает ошибки и нулевые адреса. Скетч из примера.
Кх-м... шилд заработал. Проходит ping. Но только после того как были исправлены косяки с подключением. На штырьки шилда одел 10ти пиновую розеточку и напутал в ленточке шлейфа.
"Я использую пост #9 последний абзац."
Нет ли Вас рабочего примера. Примеры из либы не отвечают, шилд не пингуется. Примеры из Ethernet_ENC28J60 тоже не работают, но шилд пингуется. Пины Reset и INT необходимо подключать?
Из рабочего проекта код я дать, естественно не могу (там куча всего что вас только собъет с толку), но ведь начал "рабочий" я делать именно с запуска библиотечных примеров и copy-paste кусков из них. Так что примеры в библиотеке - рабочие.
Но проигнорировали
>P.S. И не расчитывайте что кто-то сможет вам помочь на "ничего не работает". Какой скетч, какие логи... и т.п.
Все таки пошли по пути "аааааа... .у меня ничего не работает". Так вам никто помочь не сможет. Раз не работает - значит что-то не так. Не буду же я перебирать/угадыть что вы не так сделали.
Может при подключении MOSI/MOSI перепутали, может библиотечный пример чуть-чуть подправили там где не нужно было (сам когда-то убил пару дней из-за того что решил подправить MAC адресс, а оказалось что не любые цифры в него можно пихать), что с питанием - тоже не ведемо (даже какая именно у вас ревизия меги), откуда питаете, что пробовали отдельный регулятор или нет.... и т.д. и т.п.
Да банально что в логе видно - и то не сказали. А ведь не может скетч полностью отмалчиватся, что-то он да говорит...
Не справился...:( Питание подавал отдельно. Шилд не греется светодиод горит. Напряжение 3.28.
Шилд пингуется только при заливке скетчей из либы Ethernet_ENC28J60. В браузере не откликается. Где смотреть логи я не знаю. Не уверен, что шилд рабочий. Может быть IDE 1.0.3 виновата? Нужно попробовать на UNO.
В браузере не откликается. Где смотреть логи я не знаю.
В Serial Monitor. В ArduinoIDE (кнопочка похожая на лупу спарава в тулбаре)
Не уверен, что шилд рабочий. Может быть IDE 1.0.3 виновата? Нужно попробовать на UNO.
Ну раз на одной библиотеки пингуется, то скорее всего рабочий и подключен верно.
Ну а какой пример вы заливаете я телепатически должен угадать? Ну хотя-бы представлять себе что вы пытаетесь запустить и что у вас должно происходить "по нормальному"?
Название примера или код давайте сюда (особенно если что-то меняли в нем, хоть букву).
Как из браузера вызываете - тоже признайтесь. Вдруг вы "дергаете не так", не тот урл или еще что-то. Но для начала - нужно добится что-бы он тоже пинговался (или сам что-то из сети смог увидить).
Можете дать сюда еще и пример "который пингуется", посморим какие у него настройки используются и найти разницу с примером из ethercard
Вообщем поймите же, я у вас за плечом не сижу. Ваш монитор - не вижу. Только то что вы напишите, то я и знаю. А важной может оказатся любая деталь..
А еще желательно знать как у вас сеть сконфигурена.
Кнопку Start (в винде), набираем
cmd.exe<enter>,
в открывшемся черном окошке набираем
ipconfig<enter>
что он выведет - копируем сюда.
Если копирование из этого черного окошка вызвает проблемы, то можно сделать
ipconfig > ipconfig.txt<enter>
Оно создаст файл ipconfig.txt в котором и будет "описание ваших IP-шников", вот их сюда и показать.
Ну или просто руками перенабрать, интересует что оно выведет, для вашей сетевой карты, там должно быть что-то типа такого
Шилд пингуется только при заливке скетчей из либы Ethernet_ENC28J60. В браузере не откликается. Где смотреть логи я не знаю. Не уверен, что шилд рабочий. Может быть IDE 1.0.3 виновата? Нужно попробовать на UNO.
У шилда своих мозгов нету, так что на пинги откликается софтовая часть. Значит физика - работает. А дальше, чтобы "откликался в браузере" - надо принимать пакеты, парсить и отвечать на них соответствтвующим образом. На enc28 - оно все вручную делается...