|
|
  |
Работа с ENC28J60 |
|
|
|
Mar 20 2009, 08:10
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Насколько я ничего не понимаю,Flow-Control делается только при TCP-обмене? Нет. Это необходимо именно на уровне L2. TCPшный флоуконтрол - это совсем отдельная жизнь. Цитата С одной машины непрерывно пинговал девайс,с другой ARP слал-пакеты не дропались и девайс не вис. А Вы вот так сделайте в коммандной строке: Код for /L %i IN (1,1,100) DO start ping x.x.x.x -t 100 - это количество потоков пингов (можно и больше), x.x.x.x - адрес Вашего девайса. И тогда уже смотрите, дропает или нет пакеты. При рабочем Flow-Control не должно.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Apr 12 2009, 07:48
|
Частый гость
 
Группа: Участник
Сообщений: 146
Регистрация: 13-07-08
Пользователь №: 38 908

|
Цитата(zltigo @ Apr 12 2009, 14:04)  Вы будете, судя по представленым 'вариантам', очень удивлены, но он подключается к подходящему GPIO микроконтроллера. Ну я про этот вариант знал, только забыл его написать.  Благодарю за ответ
|
|
|
|
|
Apr 18 2009, 16:59
|
Частый гость
 
Группа: Участник
Сообщений: 146
Регистрация: 13-07-08
Пользователь №: 38 908

|
А кто-нибудь использовал 74HCT08 для поднятия уровней у ENCшки? Я так понимаю, можно напрямую подвести, например, [SO] с ENC28J60 к замкнутым между собой [A] и у 74HCT08 и ловить с [Y] 5V tolerant уровень?
Цитата(kernel @ Apr 19 2009, 00:59)  А кто-нибудь использовал 74HCT08 для поднятия уровней у ENCшки? Я так понимаю, можно напрямую подвести, например, [SO] с ENC28J60 к замкнутым между собой [A] и [B] у 74HCT08 и ловить с [Y] 5V tolerant уровень? Или на один из входов (А или В) нужно подводить питание?
Попробую объяснить яснее.
[b]Задача: необходимо согласовать уровни ENC28J60 и 5-вольтовой Меги. Судя по даташиту ENC28J60, согласовать уровни можно с помощью 74HCT08 вот так:  Функциональная схема 74HCT08 выглядит так: Вопрос: могу ли я просто замкнуть между собой [A] и [B] у 74HCT08, подводя к нему выход ENC28J60 и получать на выходе [Y] у 74HCT08 "съедобный" для 5v ATMEGA уровень? PS: уже всю схему нарисовал, а на этой 74HCT08 застрял  Уважаемые, ну неужели никто не поднимал уровень ENC28J60 до 5V ?
Сообщение отредактировал zltigo - May 31 2009, 08:55
Эскизы прикрепленных изображений
 РЈРСВВВеньшено Р В Р’В Р СћРІР‚ВВР С• 55%
386 x 287 (6.33 килобайт)
|
 Р В Р’ВВВзображенРСвЂВВР В Р’Вµ СѓРСВВВеньшено
152 x 246 (3.84 килобайт)
|
|
|
|
|
|
Oct 19 2009, 16:13
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 1-04-07
Пользователь №: 26 688

|
Тема немного постарела, но все же. Удалось ли кому нибудь победить подвисание ожидания отправки пакетов или нет? Пробую и так и сяк, кроме как принудительным прерыванием ожидания по таймауту, не выходит (кстати так же сделано в микрочиповском стеке). На всякий случай сделал повторную отправку пакета, если первый так и не ушел, интересно, что со второй попытки операция всегда успешно проходит. В таком варианте обмен по TCP стал поживее (исходящие пакеты перестали теряться).
|
|
|
|
|
Nov 1 2009, 21:07
|

Участник

Группа: Участник
Сообщений: 19
Регистрация: 21-04-09
Пользователь №: 48 019

|
Всем доброго времени суток. при работе с enc28j60 возникла проблема. сперва висла из-за огромного к-ва входящих пакетов (на каждый формировался ответ), но странным образом - пакеты принимались, а вот отсылать отказывалась (mega подмигивает на каждый входящий и исходящий пакет). полез в эррату, начал потихоньку править код в соответствии с рекомендациями. и вот дошел до пункта, где говорится о потери указателя на новый пакет в буфере enc. рекомендуют поменять местами входящий и исходящий буфера. сделал и в итоге получил ситуацию с точностью до наоборот - при зависании перестает принимать, но стабильно по таймеру раз в 3 секунды шлет пакеты. по началу все устраивало, т к программа опрашивала устройство раз в 15 секунд и контроллер следил за интервалами между запросами - если их не было в течении минуты, то enc получала софтовый ресет и работа возобновлялась. теперь же появилась необходимость в web-интерфейсе (заказчик хочет контролировать состояние девайса через мобильный браузер), а полинг девайса программой ушел на второй план (т е не факт, что программулина всегда будет включена). соответственно выходом из ситуации стал принудительный сброс каждые 30 минут. подскажите, есть ли выход из ситуации? мега тактируется от enc (1/4), SPI соответственно 3.125 МГц, ревизия чипа 6 (возвращает 110), выполнены требования B7 Silicon Errata (кроме пункта 15 про софтовый подсчет CRC), прерывания от enc не использую. завтра еще попробую запустить мегу на 20МГц и ограничить скорость на порту свитча в 64к, может тогда не будет переполнения буфера.
|
|
|
|
|
Nov 29 2009, 22:33
|

Участник

Группа: Участник
Сообщений: 19
Регистрация: 21-04-09
Пользователь №: 48 019

|
после того как сделал абсолютно все рекомендации в эррате к 6 ревизии + прикрутил маленький шаманский бубен все работает уже вот 3 недели на подоконнике под постоянными fping'ами (100мс период, 256 байт длина) + время от времени в перекурах кнопаю его web-интерфейс. все шарашит нормально  шаманство заключалось в том, что раз в минуту проверяю к-во входящих пакетов (после выполнения последней эрраты редко зависает только прием пакетов). если их нет (а они будут, т к включено это все в офисную сеть с 50+ компутерами) то под зад его софтовым ресетом и все пучком. судя по статистике такое случалось всего 4 раза за 3 недели. клокать мегу от enc (потому ногу reset enc на мегу цеплять запрещаеца  ). входные пакеты проверять только "полингом". вот собстна после бессоных ночей только в таком режиме и заработала более-менее. ну а если за минуту вдруг действительно не было ниодного пакета, то имхо ничего страшного, лишний ресет не помешает  всеравно в эфире тишина
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|