interrupt void xint1_isr(void)//w5300 extra int
{
// uint8 * data_buf = (uint8 *) tx_buf; // buffer for loopack data
uint16 int_val;
uint8 * data_buf = (uint8 *) tx_buf;
uint16 idx;
wait_1us(1000);
loopback_tcps(0,5000,data_buf,0);
// initiate_w5300();
IINCHIP_CRITICAL_SECTION_ENTER();
// loopback_tcps(0,5000,data_buf,0);
//M_01052008 : replaced '==' with '='.
//while(int_val == IINCHIP_READ(IR)) // process all interrupt
// while((int_val = IINCHIP_READ(IR)))
int_val = IINCHIP_READ(IR);
{
for(idx = 0 ; idx < MAX_SOCK_NUM ; idx++)
{
if (int_val & IR_SnINT(idx)) // check the SOCKETn interrupt
{
if((uint8)IINCHIP_READ(Sn_IR(idx)) & 0x10);
else
{
SOCK_INT[idx] |= (uint8)IINCHIP_READ(Sn_IR(idx)); // Save the interrupt stauts to SOCK_INT[idx]
IINCHIP_WRITE(Sn_IR(idx),(uint16)SOCK_INT[idx]); // Clear the interrupt status bit of SOCKETn
}
}
}
IINCHIP_WRITE(IR, int_val & 0xFF00);
}
IINCHIP_WRITE(IR, int_val & 0xFF00);
IINCHIP_CRITICAL_SECTION_EXIT();
// led_on(4);
// loopback_tcps(0,5000,data_buf,0);
PieCtrlRegs.PIEACK.all = PIEACK_GROUP1;
}
中断设为下降沿进入
信号由W5300芯片的提高,有连接时输出低电平,无连接时输出高电平。
现在的现象是中断只能进一次,后面因为引脚一直为低电平,无法产生下降沿。此时已经断开连接了,并且程序已经执行了几步了,但是这个引脚的电平保持不变。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>