Mi sto leggendo il datasheet del W5100 e lo sto confrontando con quello che fa la libreria.
Prima di trasmettere un dato l'Arduino va a leggere nel W5100 qual è lo spazio disponibile per la trasmissione. Stessa cosa per la ricezione.
W5100.cpp
uint16_t W5100Class::getTXFreeSize(SOCKET s)
{
uint16_t val=0, val1=0;
do {
val1 = readSnTX_FSR(s);
if (val1 != 0)
val = readSnTX_FSR(s);
}
while (val != val1);
return val;
}
uint16_t W5100Class::getRXReceivedSize(SOCKET s)
{
uint16_t val=0,val1=0;
do {
val1 = readSnRX_RSR(s);
if (val1 != 0)
val = readSnRX_RSR(s);
}
while (val != val1);
return val;
}
Perché viene fatta la lettura due volte dello stesso registro fino a che le due letture non coincidono?