---
title: "[w7500] tcp interrupt 관련 문의"
url: "https://maker.wiznet.io/forum/12388"
markdown_url: "https://maker.wiznet.io/forum/12388/md"
type: "Forum topic"
category: "General"
author: "kbs0618"
created: "2017-07-25T06:15:31+09:00"
last_activity: "2017-08-01T01:22:09+09:00"
language: "ko"
views: 1372
replies: 3
source: "WIZnet Makers forum (https://maker.wiznet.io/forum/)"
---

# [w7500] tcp interrupt 관련 문의

## Question

Asked by kbs0618 on 2017-07-25 in General.

안녕하세요
w7500 tcp interrupt 관련하여 질문이 있어서 연락드립니다.

현재 wztoe 예제의 loopback을 활용해서 tcp modbus 프레임을 구축해서 다른 MCU와 통신이 되는것을 확인을 한 상황입니다. polling 방식으로 수행을 해서 이를 interrupt 방식으로 수정을 하려고 하는데요
socket의 인터럽트에(Sn_IR(0) = 0x0014로 sendok 및 recv interrupt가 발생을 함에도

w7500x_it.c 의 WZTOE_Handler로 구문이 들어가질 않아서 질문드립니다.

제가 이해하기로는…NVIC_EnableIRQ(WZTOE_IRQn)를 활성화 한 상태에서
interrupt가 발생(ex. Sn_IR(0) = 0x0004 - recv interrupt)하면 w7500x_it.c의 WZTOE_Handler(void)로 들어가서 수행을 하는 것이 아닌가 이해를 했었는데요…
![](https://maker.wiznet.io/forum_uploads/wiznet/original/2X/f/f59e801f79e305427e103d27962fdd3f2e0c6e38.png)
다른 MCU 측에서 데이터를 송신했음에도 불구하고 아무런 액션이 취해지질 않아서 여쭤봅니다…

확인좀 부탁드리겠습니다.

감사합니다.

## Replies

### Reply 1 by becky, 2017-08-01

안녕하세요

답변이 늦어 죄송합니다.
Interrupt Handler 을 사용하기 위해서는 NVIC Enable도 해주어야 하지만
해당 레지스터의 인터럽트 Enable 또한 해주어야 합니다.
WZTOE의 Register중에 SIMR(Socket Interrupt Mask Register)가 있습니다.
0번 소켓을 이용하셨으므로 0번 Pin을1로 설정해야합니다.
초기값은 0x0000_0000으로 설정되어 있습니다.

`setSIMR(0x01);`
위와같이 추가하시면 됩니다.

또한 Interrupt가 발생한 후 해당 인터럽트핀을 클리어 시켜주어야 다음 인터럽트때 작동 합니다.
따라서 WZTOE_Handler에 Sn_IR을 clear해주는 코드를 추가 하셔야 합니다.

![image](https://maker.wiznet.io/forum_uploads/wiznet/original/2X/0/052dc03ae5ecfb4cb403af4baf0dc563953ecc70.png)
`setSn_ICR(0, Sn_IR_RECV);`
위와 같이 추가하시면 됩니다.
(interrupt mask라고 되어있는 bit는 오타입니다. Interrupt Clear로 보시면 됩니다.)

감사합니다.

### Reply 2 by kbs0618, 2017-08-01 (in reply to reply 1)

넵 감사합니다!

### Reply 3 by becky, 2017-08-01

안녕하세요

부족한 부분이 있어 더 작성합니다.
제가 위에 Guide 한대로 작성 시,

Socket 0 의 CONNECT, DISCONNECT, RECV, TIMEOUT, SENDOK 모든 Interrupt 발생 시 Interrupt Handler가 발생합니다.
하지만, WZTOE Handler에서 RECV 에만 Interrupt를 Clear하게 되어있습니다.
따라서 처음 Connect 인터럽트 발생 후 Connect Interrupt가 Clear되지 않아 다음 Handler가 정상 동작하지 않습니다.

`setSn_ICR(0, Sn_IR_RECV);`
가아닌
`setSn_ICR(0, 0xff);`
로 작성해주세요

정찬미 드림

---

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