Skleciłem sobie ostatnio płytkę do eksperymentów z PIC32. Na pokładzie siedzi PIC32MX270F256B, ENC28J60, AT45DB641, gniazdko do podłączenia PenDrive'a i parę innych drobiazgów. Zabrałem się za oprogramowywanie poszczególnych elementów i problem pojawił się przy sieci.
Użyłem najnowszej dostępnej biblioteki z MLA od Microchipa (ta z 2013 roku). Zmiany jakie wprowadziłem są kosmetyczne - właściwie tylko tyle, że skopiowałem wyłącznie potrzebne mi pliki i zmodyfikowałem ścieżki w include'ach, dostosowując je do własnej struktury katalogów. Poza tym jest to dokładnie ten sam, standardowy kod. Projekt się skompilował, jednak po wgraniu go do MCU okazało się, że pingi nie wracają, a w tabeli ARP routera nie pojawia się wybrany przeze mnie adres MAC układu. Niemniej komunikacja po SPI działa prawidłowo, a sterownik od ENC raportuje pomyślne zakończenie inicjalizacji po włączeniu zasilania.
Po wykonaniu paru eksperymentów przekonałem się, że chociaż diody na gniazdku RJ45 zachowują się prawidłowo, funkcja MACIsLinked() za każdym razem zwraca false, bez względu na to, czy kabel jest podłączony, czy nie.
A akcie chwilowej desperacji wymieniłem nawet gniazdko RJ45 (standardowy HanRun z trafem) i ENC28J60 - podejrzewając, że któryś z tych elementów może być wadliwy. Przy okazji pomierzyłem ścieżki, w razie gdyby gdzieś było jakieś małe zwarcie, które pominąłem. Niestety, żadna z tych operacji nie przyniosła rezultatu - układ ciągle nie działa.
Połączenia sprawdzałem już kilkanaście razy, zresztą fragment schematu z ENC został przekopiowany z innego, działającego układu. Jedyna różnica jest taka, że tym razem nieco poprawiłem projekt płytki (menadry na liniach różnicowych RX i TX Ethernetu + lepiej umiejscowione rezystory na tych liniach).
Ktoś ma jakiś pomysł? Może jednak mimo wszystko problem jest programowy?