Skip to main content

 

W5100 sockety zase zase zase!


 
Možná by bylo zajímavé dumpnout síťový provoz za pomocí nějakého packet snifferu do souboru a podívat se, např. ve Wiresharku, jak si mezi sebou povídají. Mnohokrát mi to pomohlo.
 
tak máme 16.7., a výtuh se opět objevil. Zkusil jsem tedy wireshark a vidím tohle:
1) moje PC pošle TCP SYN paket na port 80 Arduina
2) Arduino za 111 mikrosekund odpoví TCP RST paketem
3) za 2,5 milisekundy moje PC pošle TCP retransmission SYN
4) Arduino opět hned odpoví TCP RST
5) moje PC to ještě jednou zkusí TCP retransmission SYN
6) Arduino na to zase hned TCP RST

moje PC je z toho tak vydivočené, že se zeptá ARP, jestli má arduino fakt tu IP adresu, jakou si myslí, že by mít mělo - na to W5100 okamžitě odpoví, že ano, že to souhlasí.

A pak se to opakuje od začátku, stále bezvýsledně.

Co se z toho dá poznat?
 
To bude následek, ne příčina. Třikrát provedený nepodařený handshake a poté kontrola adres v ARP tabulce. To je správné chování. W5100 nechce navázat spojení
Ty adresy skutečně sedí? Ve Wiresharku je nutné u jednotlivých paketů zkontrolovat zdrojovou a cílovou adresu a zdrojové a cílové porty. Pomáhá mi, když si to nakreslím na kus papíru.
Další možností je, že W5100 bude vytížené
 
Všechny adresy sedí. W5100 nemá být čím vytížené, na ping ochotně odpovídá. Taky samotný Arduino program normálně běží. Jen ta klasická webserverovská podmínka

if (webserver.available())

asi holt nevrátí true, z nějakého neznámého důvodu. Vždycky ale až tak po měsícid od restartu, čili je to nedebugovatelné.
 
 
This entry was edited (11 months ago)
 
No ještě máš jednu možnost: překousnout svou mužskou ješitnost (Já na to příjdu!), vzít to jako fakt (это жизнь), dát do kódu reset jednou za 14 dní a věnovat svůj drahocený čas něčemu zajímavějšímu :)
 
 
máš pravdu, ale já jsem asi tvrdohlavý - mým cílem je zkrotit Arduino Ethernet. Už jsem si postavil "test bed" a teď studuju zdrojáky Ethernet knihoven. Začíná to být velmi zajímavé, už jsem našel fakt divné věcičky...
 
Tak určitě je to záslužný, jestli tam nějaký chyby najdeš, neřkuli odstraníš. Já bych se na to asi spíš vyprdnul :)
 
dvě poznámky k věci: za prvé - nikde není řečeno, že SW restart opraví ethernet problém, takže možná, že ani plánované restarty by nepomohly, a za druhé - to je docela bomba - mě napadlo, proč smrt přichází až čtvrtý týden: v Arduinu je počitadlo času od startu, tzv. millis(), který 25. den přeteče do záporných hodnot, pokud ho někdo uloží do signed long nebo pokud někdo špatně provádí porovnání po odečtení.
 
No jo, zas nosim drivi do lesa :) Jsem celej zhavej, na co prijdes!
 
posunutý čas nic nepřinesl, takže záporným millis() to není.
This entry was edited (10 months ago)
 
Mas mou uprimnou soustrast :(