Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/49: Рейтинг темы: голосов - 49, средняя оценка - 4.71
Iddys0m
0 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 2
1

Atmega16 + enc28j60. enc28j60 перестает отвечать

27.11.2014, 17:56. Просмотров 9044. Ответов 10
Метки нет (Все метки)

Столкнулся с непонятной проблемой, прошу помочь.

С чем и как работаю
В своей системе использую atmega16, ethernet-модуль enc28j60 (далее ENC) для связи с сервером. Для работы через ENC использую стек от Lifelover из цикла статей до уровня DHCP (статься). Для общения с сервером использую udp пакеты. AVR-проект со стеком я не изменял, а только расширил функциями для отправки udp-пакетов и обработки приходящих udp-пакетов. ethernet-модуль подключена согласно даташиту.
И все работает по заданной логике и вроде бы замечательно...

Проблема
Однако иногда проскакивает проблема с ENC: по пока непонятным для меня причинам ethernet-модуль перестает отвечать на сигналы из вне (при этом зеленый LED постоянно горит, а желтый мерцает с одинаковой частотой). МК при этом продолжает работать согласно логике. Чтобы привести систему в чувства приходится перезапускать модуль+мк.

Пляски с бубном
1. Сначала валил все на свои кривые руки, поэтому заменил самодельный модуль на готовую платку. Проблема с новым модулем долго не проявлялась, но сегодня опять вылезла. =(
2. Подумал, может быть модуль не справляется с количеством входящих пакетов. Загрузил его udp пакетами так, что желтый LED горел почти не переставая, но работал. При этом модуль спокойно справлялся со своей задачей, принимая и отправляя пакеты на сервер для выполнения логики системы. Конечно мой тест мог не создать единовременной пиковой нагрузки, однако заставил меня думать, что дело совсем не в пропускной способности модуля.
3. В данное время стараюсь отловить баг ENC (а может быть и не его баг, а мк например). Запустил систему и включил сниффер (wireshark). Результатов пока нет.

Прошу помочь мне раскрыть причину проблемы и решить ее! Готов по возможности дополнить свое описание необходимыми для анализа данными.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2014, 17:56
Ответы с готовыми решениями:

Отправка пакетов в enc28j60
Здравствуйте уважаемые форумчане. Хочу у Вас спросить про алгоритм отправки пакета в enc28j60....

ENC28J60 + DHCP = проблема
Доброго дня, уважаемые форумчане. Встала задача обмениваться данными по локальной сети. Почитал...

Проблема с ENC28J60 - через некоторое время отваливается
Привет. Взял тупо проект дихальта из статьи http://iosyitistromyss.ru/pinboard-ii-e ... 28j60.html...

Какой стек для Ethernet ATmega128 + ENC28J60 выбрать?
Подскажите пожалуйста, какой стек поможет мне решить следующую задачу: Нужно отправлять данные на...

Алгоритм случайным образом перестает входить в цикл (Atmega16)
#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> void desh_1(unsigned...

10
sitimur
0 / 0 / 0
Регистрация: 08.02.2012
Сообщений: 648
27.11.2014, 18:56 2
Были у меня похожие проблеммы, связаны были с питанием, и-за чего сетевая МК перезагружалась, пока не выяснил причины, я просто читал данные из регистров этой сетевой МК (это те настройки которые загружал в регистры при инициализации), и если отличались AVR МК дергал ресет.
Поэтому как вариант можно попробовать узнать не перезагрузилася сетевая МК
0
oost_spb
0 / 0 / 0
Регистрация: 25.05.2014
Сообщений: 190
28.11.2014, 01:16 3
Динные точно влезают в один эзернет фрейм (1482 байта), а то enc28j60 не умеет собирать пакеты.
0
Sym
0 / 0 / 0
Регистрация: 16.12.2016
Сообщений: 1
28.11.2014, 03:06 4
Цитата Сообщение от oost_spb
Динные точно влезают в один эзернет фрейм (1482 байта), а то enc28j60 не умеет собирать пакеты.
Переполнение буфера повод для зависания чтоли?
0
sitimur
0 / 0 / 0
Регистрация: 08.02.2012
Сообщений: 648
28.11.2014, 09:02 5
Если-бы сетевая МК зависала, то работа с ней по SPI по идее должна прекратиться, Т.С. может поверить есть ли обмен данными между мегой и сетевой МК при глюке?
0
tyzord66
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
28.11.2014, 10:56 6
Цитата Сообщение от sym
Цитата Сообщение от oost_spb
Динные точно влезают в один эзернет фрейм (1482 байта), а то enc28j60 не умеет собирать пакеты.
Переполнение буфера повод для зависания чтоли?
Переполнение буфера это потеря пакета. Возможно проблема в организации протокола на уровне приложения – МК ожидает пакет, который уже пропустил.

Не лишним будет заглянуть и в эррата, там целый список ограничений и рекомендаций, возможно ТС использует функцию, которая не работает корректно. У меня не было необходимости в DMA и т.п. , неудобством оказалось невозможность использовать прерывание от ENC. Довилось использовать и готовые модули и собирать вручную. UDP использовал только для DHCP и DNS, основной обмен был по TCP. Все изготовленные девайсы работали безупречно, тьфу-тьфу. Некоторые экземпляры вообще не обесточивают.

http://fas-tool.biz/forum/index.php/top ... l#msg10313
0
oost_spb
0 / 0 / 0
Регистрация: 25.05.2014
Сообщений: 190
28.11.2014, 14:12 7
Цитата Сообщение от sym
Переполнение буфера повод для зависания чтоли?
Может она и не зависает, но работать перестает - это точно. Более того, увеличение в программе внутреннего буфера до размеров езернет-фрейма (1480 байт) - так же приводит к неработоспособности сетевой части при запросе/получении страницы, не влезающей в этот один пакет.
0
tyzord66
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
28.11.2014, 15:44 8
Цитата Сообщение от oost_spb
увеличение в программе внутреннего буфера до размеров езернет-фрейма (1480 байт)
ТС писал, что работает с мега16, там столько памяти не будет. Мне приходилось пакет частями зачитывать из ENC и на лету парсить, благо в TCP сервер ждет от клиента ACK перед отправкой следующего пакета.

Баг может быть вызван переполнением внутреннего кольцевого буфера самой ENC? Не успели зачитать пакет – все, пропал.
0
Iddys0m
0 / 0 / 0
Регистрация: 24.11.2014
Сообщений: 2
29.11.2014, 03:49 9
Цитата Сообщение от oost_spb
Динные точно влезают в один эзернет фрейм (1482 байта), а то enc28j60 не умеет собирать пакеты.
Максимальный размер фрейма порядка 71 байта (полезные сообщения занимают порядка 29 байт)

Цитата Сообщение от sitimur
Если-бы сетевая МК зависала, то работа с ней по SPI по идее должна прекратиться, Т.С. может поверить есть ли обмен данными между мегой и сетевой МК при глюке?
1. Большая проблема в этом - отловить сам глюк.
2. Когда отловлю боюсь точно проверит не смогу (осциллографа, цифрового анализатора нет). Однажды просидел весь день с осциллографом пытаясь отловить баг и посмотреть что и как с сигналами на выходах/выходах сетевого модуля -баг не всплыл.
3. Из рассуждений: Мега точно не зависает, т.к. LED говорящий о подключенности атмеги к серверу после сбоя сетевого модуля продолжает гореть еще 20 секунд (согласно логике в это время идут попытки восстановить связь), после чего гаснет. При этом пакеты из сетевого модуля в сеть не попадают, предполагаю, что он то по spi и не отвечает.
Могу проверить по этому методу
Цитата Сообщение от sitimur
я просто читал данные из регистров этой сетевой МК (это те настройки которые загружал в регистры при инициализации), и если отличались AVR МК дергал ресет.
Поэтому как вариант можно попробовать узнать не перезагрузилася сетевая МК
Только вместо ресета использовать сигнальный LED.

Цитата Сообщение от tyzord66
Переполнение буфера это потеря пакета. Возможно проблема в организации протокола на уровне приложения – МК ожидает пакет, который уже пропустил.

Не лишним будет заглянуть и в эррата, там целый список ограничений и рекомендаций, возможно ТС использует функцию, которая не работает корректно. У меня не было необходимости в DMA и т.п. , неудобством оказалось невозможность использовать прерывание от ENC.
1. Приложение не ожидает определенных пакетов, оно в цикле проверяет соответствие любого пришедшего udp пакета требованиям (порт назначения, ip адресата, "маска команды"), если пришедший пакет - управляющая команда, но в программе проставляются флаги, управляющие дальнейшими действиями. Все команды ограничиваются одним самодостаточным пакетом. Так что приложение будет крутиться, даже если ни один пакет не придет.
2. Касательно функций сетевого модуля, использую только верхнеуровневые функции готового стека - посмотреть параметры входящего udp пакета, собрать udp пакет и отправить.
3. Сами конфиги, инициализирующие сетевой модуль не правил.

Цитата Сообщение от tyzord66
Баг может быть вызван переполнением внутреннего кольцевого буфера самой ENC? Не успели зачитать пакет – все, пропал.
"Пропал" - это про пакет, а не оборот речи- "все, пропал, сетевой модуль завис"? Т.к. Система работает по udp, то она изначально по архитектуре терпима к потере пакетов, а каждый пакет самодостаточен.

Подитог
1. Заглядываю в эррата
2. Проверяю регистры сетевого модуля и использую LED для сигнализации. Далее жду когда баг снова вылезет.

Вопрос
1. Я правильно понимаю, что само ритмичное мигание желтого LEDа ни о чём не говорит?
0
tyzord66
0 / 0 / 0
Регистрация: 14.10.2011
Сообщений: 806
29.11.2014, 11:01 10
Цитата Сообщение от Iddys0n
1. Я правильно понимаю, что само ритмичное мигание желтого LEDа ни о чём не говорит?
Как настроите то и будет означать.

0
pystotitov
0 / 0 / 0
Регистрация: 06.10.2011
Сообщений: 25
29.11.2014, 15:44 11
Я использовал либу от jeelabs для ардуино. Года три работает мой проектик уже. Странностей больших в работе не замечено. А да ws5100 так кажется поинтересней будет и цена у него упала

Отправлено с моего iPhone используя Tapatalk
0
29.11.2014, 15:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2014, 15:44

PIC18F60J67 ENC28J60 Разъем с трансформатором
опрос такой интересный))) Вопщем я купил неправильный разъем для ENC28J60, PIC18F60J67. Эти...

Библиотека ENC28J60 CCS GCC
Доброго времени суток! У меня огромная просьба к сообществу. Я нашел просто потрясающую...

COM-порт ЭЛКУС ТА1-SMART перестает отвечать
Всем здравствуйте, суть проблемы такова: Есть микроконтроллер, ТА1-SMART производства компании...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru