W5300을 사용한 lan통신 프로그램 소스 관련 질문입니다
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Ethernet Chips
No replies yet. Be the first to reply.
Join the discussion.
Share projects and connect with makers.
Joined before the site update? first.
New to WIZnet Makers?
We sent a verification link to your address. Open it to activate your account, then log in.
Accounts from this email provider are reviewed by an administrator after verification. Approval usually takes one business day.
Already have an account?
Enter your email address. If it belongs to an account, we'll send a link to set a new password. Members who joined before the site update use this to set their password.
If an account uses that address, we sent a link to set a new password. The link works once and expires in 30 minutes.
Know your password?
Need an account?
RE: W5300을 사용한 lan통신 프로그램 소스 관련 질문입니다
by tgo1800 ·
전번에 제가 질문을 잘못드린것 같아 다시 질문드립니다.
w5300을 클라이언트로 PC를 서버로 사용하고 있습니다. MCU로는 DSP(TMS320C28346)를 사용하고 있습니다.
PC에서 서버 프로그램을 먼저 실행한 후 클라이언트(w5300)를 동작시키는 경우에는 데이터 전송이 잘 됩니다.
데이터 전송중에 PC 서버 프로그램을 종료 후 다시 동작시킨 경우
서로 연결(connect)이 안되는 문제가 발생하였습니다.
코딩한 프로그램에 브레이크를 걸어가며 확인해 보니
아래 Connect 함수 중 while문에서 빠져나가지 못하고 있었습니다.
uint8 connect(SOCKET s, uint8 * addr, uint16 port)
{
…
// Connect
ApplySubnet();
setSn_CR(s,Sn_CR_CONNECT);
while( IINCHIP_READ(Sn_SSR(s)) != SOCK_SYNSENT )
{
if(IINCHIP_READ(Sn_SSR(s)) == SOCK_ESTABLISHED)
{
break;
}
if(getSn_IR(s) & Sn_IR_TIMEOUT) // original
{
setSn_IR(s,(Sn_IR_TIMEOUT));
break;
}
ClearSubnet();
return 1;
}
설정시 timeout은 아래와 같이 설정하였고, 약3분가량 기다렸으나 while문을 빠져나오지 않았습니다.
setRTR(14);
setRCR(8);
이 외에 timeout관련 레지스터를 설정해야 하나요?
RE: W5300을 사용한 lan통신 프로그램 소스 관련 질문입니다
by tgo1800 ·
위에 질문드린 3번에 관해 추가 질문드립니다.
Sn_SSR이 0x10에서 변하지 않는 내용에 관한문제가 "erratum1"인것으로 보이는데
이미 제공된 예제의 Close()함수에 이 내용이 들어가 있는 것을 보입니다.
if(loop_cnt++ > 10)
{
uint8 destip[4];
// M_11252008 : modify dest ip address
//getSIPR(destip);
destip[0] = 0;destip[1] = 0;destip[2] = 0;destip[3] = 1;
socket(s,Sn_MR_UDP,0x3000,0);
sendto(s,(uint8*)“x”,1,destip,0x3000); // send the dummy data to an unknown destination(0.0.0.1).
break; // M_11252008 : added break statement
}
그런데도 0x10을 계속 유지하는데,
원인 및 해결책이 따로 있을 까요?
RE: W5300을 사용한 lan통신 프로그램 소스 관련 질문입니다
by tgo1800 ·
패킷을 캡처하여 올립니다.
w5300의 ip는 192.168.0.230입니다.
서버를 먼저 동작시킨 후에 클라이언트(w5300)을 동작시켰습니다.
그 결과 데이터 전송이 잘 이뤄지는 것을 확인하였습니다.
그 후 서버를 off하였을 때 빨간색으로 재전송이 9번 시도되는 것으로 보여지는 것을 확인하였습니다.
하지만 그 이후로는 아무런 변화도 없었습니다.
서버를 다시 on 시킨뒤에도 마찬가지 였습니다.
프로그램에 브레이크를 걸어 다시 확인해 봤더니
위에서 질문드렸던 내용중에서 처럼 while문을 계속돌고 있었습니다.
이때의 Sn_SSR값은 0x10이고, Sn_IR값 역시 0x10이 었습니다.
제가 통신쪽은 초보라 많이 부족합니다.
검토 부탁드립니다.