processHTTP()에서 지연이 있는 듯 해서 변경을 해 보았습니다

#1

W5500으로 Http를 돌릴때에 disconnect()함수에서 지연이 많이 생겨서
disconnect_h()함수를 만들었습니다. 이 함수는 ProcessHttp()에서만 씁니다…

이 함수의 특징은 원래 disconnect()함수에서는 CLOSE상태를 기다려서
안되면 TimeOUT될 때까지 기다려서 close()를 부르는데,
disconnect_h()는 기다리는 루틴을 다 빼버리고
DISCON명령이 먹으면(SOCKET_CR이 0 이 되면)
바로 CLOSE명령을 주어서(SOCKET_CR에 SOCKET_CLOSE값을 WRITE)
CLOSE명령이 먹으면(SOCKET_CR이 0이 되면)
끝내는 식으로 동작하게끔 했습니다.

뭔가 위험한지요.
이렇게 하니까 시간지연이 다 없어졌습니다.

#2

Sn_CR_DISCON과 Sn_CR_CLOSE는 엄연히 다른 명령입니다.
데이타시트에 명기되어 있듯이,
Sn_CR_DISCON은 Diconnect-processing을 완료한 후 소켓을 해제하지만,
Sn_CR_CLOSE는 Diconnect-processing 과정을 무시하고 바로 소켓을 해제합니다.

또한, Sn_CR 이 0이 된다는 것은 command 완료를 의미하지 않으며, 해당 명령어를 처리하겠다고 즉 사용자의 명령을 칩이 인지했을 때 0으로 됩니다. 착오없으시길 바랍니다.

Webserver 같은 경우 빈번한 connect과 disconnect가 발생하므로 disconnect보단 말씀하신 것 처럼 close로 소켓을 해제하는 것이 좋을 것 같긴 합니다.