Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: W3150A
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Fast Ethernet/Gigabit Ethernet/FibreChannel
H O--O K
Проблема в следующем. Дохожу до состояния LISTEN, открываю сокет с компьютера, прыгаем в состояние ESTABLISHED. Далее повторяю в точности кусок кода отправки из даташита. Для примера пока взял 3 байта. Всё один к одному с даташитом. Посылаю команду SEND. И отправляется три байта, но абсолютно не те, что я записал. Не понятно так же состояние регистра указателя на буфер отправки S1_TX_WR. Читаю его как вхожу в состояние ESTABLISHED и у него постоянно разные значения оказываются (но физический высчитанный адрес за пределы отведённые сокету не выходит). Это нормально? В общем, может кто сталкивался с такой проблемой, подскажите. P.S. все операции провожу на сокете 1.
Itch
Попробуйте для начала работать с сокетом 0, вполне возможно что вы напутали с масками для адресов.
В процедуре отправки 3 байт вы S1_TX_WR на 3 увеличить не забываете?
H O--O K
Цитата(Itch @ Jan 5 2007, 21:29) *
Попробуйте для начала работать с сокетом 0, вполне возможно что вы напутали с масками для адресов.
В процедуре отправки 3 байт вы S1_TX_WR на 3 увеличить не забываете?


Да. Вопрос немного меняется. Нулевой сокет действительно работает. Но я лиш подменяю в коде название с S1 на S0. Регистр увеличиваю как сказано в даташите. Теперь вопрос почему не работают как положено сокеты 1 - 3. Размеры сокетов для чистоты эксперимента взял пока по 2 Кб (как в даташите опять же). Все адреса в заголовочном файле не раз проверил, всё верно. Работает только сокет 0 sad.gif

И, как я понял из написанного Вами, если на сокете 0 всё заработает, то путаница с масками. А по мануалю маска вроде для каждого сокета одна и является константой. конкретно для случая, когда все сокеты по 2 Кб она равна 2048-1. Или я что-то недопонял?

Вот кусок кода:

gS0_TX_BASE = 0x4000;
gS0_TX_MASK = 0x7FF;
gS1_TX_BASE = gS0_TX_BASE+(gS0_TX_MASK+1);
gS1_TX_MASK = 0x7FF;
gS2_TX_BASE = gS1_TX_BASE+(gS1_TX_MASK+1);
gS2_TX_MASK = 0x7FF;
gS3_TX_BASE = gS2_TX_BASE+(gS2_TX_MASK+1);
gS3_TX_MASK = 0x7FF;
Gavr
У меня такая же проблема, причем проверял в режимах IPRAW и т.д. работала нормально, а в режиме ТСР такая фигня. 05.gif
H O--O K
Цитата(Gavr @ Sep 29 2007, 20:38) *
У меня такая же проблема, причем проверял в режимах IPRAW и т.д. работала нормально, а в режиме ТСР такая фигня. 05.gif


У меня был во всём виноват непропай на одной ноге шины... бегал сигнал. Поэтому инфа писалась иногда не туда и чип сбоил либо вообще весился. Пропаял - всё заработало. В финальной версии устройства перелез на W5100 и работаю по SPI.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.