Hi,
I work with WIZ820io board and SAM3S uC to have an ethernet connection to my device. To be clear: communication works fine, but I want to achieve an event driven mode working not to poll W5200 in any loop.
So I noticed one problem: nINT pin remains high on an interrupt of a configured socket event: tcp connect, data received, disconnect.
Everything in registers seems to be set correctly (mask), since I read IR2 and Sn_IR registers in while(true) and specific bits are being set correctly (on connect, data reception and disconnect). All lines SPI and nINT I connected to DAQ Logic analyzer and everything is ok besides nINT line which stays high (nINT was measured directly on WIZ802io board to eliminate connectors problem).
GPIO interrupt in uC is configured correctly (input, pull-up), when I short that pin to GND application jumps to the interrupt handler.
My interrupt masks configuration (socket 1):
setIMR(IR_SOCK(1));
setSn_IMR(1, (uint8_t) (Sn_IR_CON | Sn_IR_RECV | Sn_IR_DISCON));
Reading in while, which confirms correct bit settings:
SOCKET s = 1;
while(1)
{
uint8_t val = getIR2();
if(IR_SOCK(s) == val)
{
val = getSn_IR(s); //app gets here on event
setSn_IR(s, 0); //clear intterrupt
}
loopback_tcps(s, 5000);
}
Am I missing something or it is just hardware problem (I don’t have a second board to compare)?
M