Работаю с переработанным кодом от производителя (CP220x_CORE.c, CP220x_ETH.c…) Переработка касается функций записи/чтения регистров МС. Есть один вопрос и одна проблема. Вопрос. В функции PHY_Init() есть строка if(temp_char == ANCINT){… Предполагаю, что это не проверка на равенство значения регистра, а проверка присутствие конкретного флага. По факту там стоят ещё два флага. Если я заменяю знак сравнения (==) на знак проверки бита (&) всё проходит нормально (иначе зацикливание на инициализации физического уровня). Но сомнение в правильности остается. Проблема. Дошёл до посылки ARP запроса. Он доходит до РС, распознаётся и посылается ответ, это я вижу сниффером и в свойствах сетевого подключения. Но МК эти посылки не видит, не проходит проверка if(CPINFOH & RXVALID)… Значение регистра CPINFOH равно 0x00. В чем может быть проблема?
|