2008-09-08 09:01 PM
Ethernet interupt not interupting
2011-05-17 12:55 AM
I having problem with the Ethernet interupt. I got the transmit and receive to work but I can't get the interupt to work.
The ethernet is set up by:Code:
void PF_Enet_Init(void) { ENET_InitClocksGPIO(); /* configure all GPIO */ ENET_Init(PHY_FULLDUPLEX_100M); /* Operating mode = Fullduplex 100Mbs */ ENET_Start(); /* start Receive & Transmit */ PF_Setup_INT(ENET_ITLine, PF_Enet_Interrupt); // Sets up interupt } and the PF_Setup_INT looks like:Code:
void PF_Setup_INT(uint16 VIC_Source, void (*InterruptFunction)(void)) { uint16 Priority; if(VIC_Source < VIC_REGISTER_NUMBER) { Priority = VIC_Source; VIC0->VAiR[Priority] = (uint32)InterruptFunction; //Configuration of the ISR vector address VIC0->INTSR &= ~(VIC_MASK << Priority); //Set interrupt type to IRQ VIC0->VCiR[Priority] |= VIC_VECTOR_ENABLE_MASK; //Enable vector interrupt VIC0->VCiR[Priority] &= VIC_IT_SOURCE_MASK; //Select the interrupt source VIC0->VCiR[Priority] |= Priority; //and set the priority VIC0->INTER |= (VIC_MASK << Priority); //Enable the interrupt request lines. Vic0Inter = VIC0->INTER; } else { Priority = VIC_Source - VIC_REGISTER_NUMBER; VIC1->VAiR[Priority] = (uint32)InterruptFunction; //Configuration of the ISR vector address VIC1->INTSR &= ~(VIC_MASK << Priority); //Set interrupt type to IRQ VIC1->VCiR[Priority] |= VIC_VECTOR_ENABLE_MASK; //Enable vector interrupt VIC1->VCiR[Priority] &= VIC_IT_SOURCE_MASK; //Select the interrupt source VIC1->VCiR[Priority] |= Priority; //and set the priority VIC1->INTER |= (VIC_MASK << Priority); //Enable the interrupt request lines. Vic1Inter = VIC1->INTER; } } I have based my code on STR91x_webserver_v1_1 but this code does not use interupt in ethernet which I require. Anyone have a suggestion what I've missed?2011-05-17 12:55 AM
I've found out what I've missed.
In the init i added: ENET_DMA->IER = 0x80; // enable interupt when RX done and in the interupt I've added: ENET_DMA->ISR = 0x80; // Clear the interupt status for RX done