kko
February 13, 2019, 5:38am
1
There is no problem with S0 and server. All works as expected!
But S1 as client won’t work. This code:
unsigned char dst_addr[] = {192,168,0,107};
unsigned char dst_port[] = {99,99};
SPI_Write(S1_MR,MR_TCP);
//random sending port
SPI_Write(S1_PORT,0x12);
SPI_Write(S1_PORT + 1,0x12);
SPI_Write(S1_CR, CR_CONNECT);
SPI_Write(S1_DIPR + 0,dst_addr[0]);
SPI_Write(S1_DIPR + 1,dst_addr[1]);
SPI_Write(S1_DIPR + 2,dst_addr[2]);
SPI_Write(S1_DIPR + 3,dst_addr[3]);
_delay_ms(1);
SPI_Write(S1_DPORT + 0,dst_port[0]);
SPI_Write(S1_DPORT + 1,dst_port[1]);
_delay_ms(1);
SPI_Write(S1_CR, CR_OPEN);
If (SPI_Read(S1_SR) == SOCK_ESTABLISHED) {
///////
}
When i checked DIPR and DPORT they are not always have correct data. After mcu reset they may have 0 or correct data.
What am I doing wrong?
juvf
February 13, 2019, 8:11am
2
Не правильный код. вот как нужно
unsigned char dst_addr[] = {192,168,0,107};
unsigned char dst_port[] = {99,99};
SPI_Write(S1_MR,MR_TCP);
//random sending port
SPI_Write(S1_PORT,0x12);
SPI_Write(S1_PORT + 1,0x12);
START:
SPI_Write(S1_CR, CR_OPEN);
wait();
if(S1_SR != SOCK_INIT)
{
SPI_Write(S1_CR, CR_CLOSE);
goto START;
}
SPI_Write(S1_DIPR + 0,dst_addr[0]);
SPI_Write(S1_DIPR + 1,dst_addr[1]);
SPI_Write(S1_DIPR + 2,dst_addr[2]);
SPI_Write(S1_DIPR + 3,dst_addr[3]);
SPI_Write(S1_DPORT + 0,dst_port[0]);
SPI_Write(S1_DPORT + 1,dst_port[1]);
_delay_ms(1);
SPI_Write(S1_CR, CR_CONNECT);
wait();
If (SPI_Read(S1_SR) == SOCK_ESTABLISHED) {
///////
}
см даташит
START:
/* sets TCP mode */
Sn_MR = 0x01;
/* sets source port number */
Sn_PORT = source_port;
/* sets OPEN command */
Sn_CR = OPEN;
if (Sn_SR != SOCK_INIT) Sn_CR = CLOSE; goto START;
/* Write the value of server_ip, server_port to the Socket n Destination IP Address
Register(Sn_DIPR), Socket n Destination Port Register(Sn_DPORT). */
Sn_DIPR = server_ip;
Sn_DPORT = server_port;
Sn_CR = CONNECT;
If (Sn_SR == SOCK_ESTABLISHED) goto ESTABLISHED stage;
kko
February 13, 2019, 12:03pm
3
Спасибо! Всроде сейчас с регистрами адреса удаленного и портом все нормально… прописываются!