안녕하세요.
이번에 w5500 을 이용해 제품을 개발하고 있습니다.
통신상 문제가 발생했을 때 w5500를 정기적으로 하드웨어 리셋을 걸고 싶은데
2~3번 정도는 리셋이 잘되는데 시간이 지나고 나서는 리셋을 할 때마다 sip, mac, gw, sn등 설정해놓은 값들이 엉뚱한 값으로 변경되어 통신이 되질 않습니다.
펌웨어 실행시 실행되는 초기화 과정은 위즈네트에서 제공해주는 예제로 진행하였습니다.
리셋시 동작되는 코드는 다음과 같습니다.
uint8_t gw[4], sn[4], sip[4];
uint8_t mac[6];
getSHAR(mac);
getGAR(gw); getSUBR(sn); getSIPR(sip);
// hw reset
wizchip_reset();
delay(50);
setSHAR(mac);
setGAR(gw); setSUBR(sn); setSIPR(sip);
delay(100);
getGAR(gw); getSUBR(sn); getSIPR(sip);
printf("lan %d config\n", lan+1);
printf("gw : %d.%d.%d.%d\n",gw[0], gw[1], gw[2], gw[3]);
printf("sip : %d.%d.%d.%d\n",sip[0], sip[1], sip[2], sip[3]);
디버그 출력 코드
gw : 3.1.3.0
sip : 3.0.0.1
==> 실제로 넣은 데이터는 gw : 192.168.0.1, sip : 192.168.0.80 입니다.
LAN1/sn=0 link off
LAN1/sn=0 status 0x01.
LAN1/sn=0 link off
LAN1/sn=0 tcp sock closed
LAN1/sn=0 :try to open socket [TCP]
RTR : 0303
RCR : 0034
LAN1/sn=0 :Socket Open[TCP]