---
title: "W5200 disconnect 관련 질의"
url: "https://maker.wiznet.io/forum/12138"
markdown_url: "https://maker.wiznet.io/forum/12138/md"
type: "Forum topic"
category: "Ethernet Chips"
author: "gman777"
created: "2017-02-08T06:28:50+09:00"
last_activity: "2017-05-04T08:39:47+09:00"
language: "en"
views: 886
replies: 3
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# W5200 disconnect 관련 질의

## Question

Asked by gman777 on 2017-02-08 in Ethernet Chips.

수고 많습니다.
w5200 을 Client Mode로 최신 Driver Program으로 Porting 하여 Testing 하고 있습니다.
SOCK_ESTABLISHED 상태에서 Client에서 먼저 disconnect 를 할 경우

disconnect Module

```
while(getSn_SR(sn) != SOCK_CLOSED)
{
   if(getSn_IR(sn) & Sn_IR_TIMEOUT)
   {
      close(sn);
      return SOCKERR_TIMEOUT;
   }
}
```

여기서 빠져 나오지 않는데 어떻게 해야 하나요?
close(sn) 는 정장적으로 되나 disconnect(sn)을 해야 서버 단의 연결을 끊을 수 있기 때문에
방법을 구합니다
socket Version
/! \version 1.0.3
//! \date 2013/10/21
w5200 Version
//! \version 1.0.0
//! \date 2013/10/21

int8_t disconnect(uint8_t sn)
{
CHECK_SOCKNUM();
CHECK_SOCKMODE(Sn_MR_TCP);
setSn_CR(sn,Sn_CR_DISCON);
/* wait to process the command… */
while(getSn_CR(sn));
sock_is_sending &= ~(1&lt;&lt;sn);
if(sock_io_mode & (1&lt;&lt;sn)) return SOCK_BUSY;
while(getSn_SR(sn) != SOCK_CLOSED)
{
if(getSn_IR(sn) & Sn_IR_TIMEOUT)
{
close(sn);
return SOCKERR_TIMEOUT;
}
}
return SOCK_OK;
}

## Replies

### Reply 1 by becky, 2017-02-09

안녕하세요

현재상황만 봐서는 Interrupt가 발생하지 않는것 같은데, 다른 요인도 있는것인지 확인해봐야할것 같습니다.
우선, IR값을 확인해보세요.

추가적으로 Sn_IR_TIMEOUT의 값이 0x08로 정상적으로 define이 되어있는지
Sn_IMR레지스터의 값이 0xFF로 설정되어있는지 확인부탁드립니다.
default값으로 따로변경하지 않으셨다면, 위의 값대로 설정되어있어야 합니다.

감사합니다.

### Reply 2 by gman777, 2017-02-13

안녕하세요
확인해 보았는데 Timeout 08, SnMR은 0xff 정상적으로 초기화 되어 있습니다.
참고로 Loop Back 예제에서는 Interrupt 방식을 사용하지 않은것 같아서 그것과 유사하게 Hardware를 만들었습니다.
반드시 Interrupt 방식을 사용해야 하는가요?

### Reply 3 by becky, 2017-02-17

안녕하세요

제 설명에 오해가 있었나보네요
Interrupt 방식을 사용하는것이 아니라,
Timeout 발생시 Socket IR레지스터의 값이 바뀌게 되어있습니다.
IR레지스터값이 update되지않아 close 명령이 send 되지않고, 상태가 close되지 못하기 때문에 while문을 빠져나오지 못하는것같습니다.

---

Source: https://maker.wiznet.io/forum/12138
