Forum Discussion
Altera_Forum
Honored Contributor
16 years agoHello,
I am having different problem. I send one packet to board, ISR executes, ReceivePacket function executes but then even though I don't send any packet, the ISR keeps running. When I set a breakpoint in ReceivePacket, I see rx_READY = IORD(DM9000A_BASE,IO_data)&0x03; rxReady is 0. But the algorithm doesn't care for this status. So I changed it like this: rx_READY = IORD(DM9000A_BASE,IO_data); if ((rx_READY & 0x01) == 1 ) { ... receive packet... } else //---UNCOMMENTED rest-- if ((rx_READY & 0x02) != 0 )//rx_READY) /* status check first byte: rx_READY Bit[1:0] must be "00"b or "01"b */ { //same code } but this is still not a good solution since ISR enters once more to reset the device. So how can I tell ISR not to enter ISR again after receiving the packet I already sent. What should I do? Clear ISR status/stop int request etc.. after receiving packet? According to datasheet, ISR Status Register-Packet Received bit is a RW/C1 so one has to write 1 to correspond bit. So I did a iow to ISR in ReceivePacket function. This solved the problem but I still don't think this as a good solution. Many thanks, Luisa