Subversion Repositories Code-Repo

Rev

Rev 261 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 261 Rev 263
Line 113... Line 113...
113
    do {
113
    do {
114
        value = ETH_PHY_Read(PHY_ADDRESS, 0x0);
114
        value = ETH_PHY_Read(PHY_ADDRESS, 0x0);
115
    } while (value & 0x8000 != 0);
115
    } while (value & 0x8000 != 0);
116
 
116
 
117
    // Delay to wait for the link to be established
117
    // Delay to wait for the link to be established
-
 
118
    // Something needs to be done about this. 5s is WAY too long to wait
118
    Delay_MS(5000);
119
    Delay_MS(5000);
119
    
120
    
120
    // Wait for auto-negotiation to finish
121
    // Wait for auto-negotiation to finish
121
    do {
122
    do {
122
        value = ETH_PHY_Read(PHY_ADDRESS, 0x1F); // Acquire link status
123
        value = ETH_PHY_Read(PHY_ADDRESS, 0x1F); // Acquire link status
Line 307... Line 308...
307
}
308
}
308
 
309
 
309
void __ISR(_ETH_VECTOR, ipl1) __ETH_Interrupt_Handler(void) {
310
void __ISR(_ETH_VECTOR, ipl1) __ETH_Interrupt_Handler(void) {
310
//    uint32_t value = ETHIRQ;
311
//    uint32_t value = ETHIRQ;
311
    if (ETHIRQbits.TXBUSE) {
312
    if (ETHIRQbits.TXBUSE) {
312
 
-
 
-
 
313
        // TX bus error, something -should- be done
313
        ETHIRQbits.TXBUSE = 0;
314
        ETHIRQbits.TXBUSE = 0;
314
    }
315
    }
315
    if (ETHIRQbits.RXBUSE) {
316
    if (ETHIRQbits.RXBUSE) {
316
 
-
 
-
 
317
        // RX bus error, something -should- be done
317
        ETHIRQbits.RXBUSE = 0;
318
        ETHIRQbits.RXBUSE = 0;
318
    }
319
    }
319
    if (ETHIRQbits.RXDONE) {
320
    if (ETHIRQbits.RXDONE) {
-
 
321
        // Call the previously saved function
320
        if (eth_data->rx_callback != NULL)
322
        if (eth_data->rx_callback != NULL)
321
            (*eth_data->rx_callback)();
323
            (*eth_data->rx_callback)();
322
        ETHIRQbits.RXDONE = 0;
324
        ETHIRQbits.RXDONE = 0;
323
    }
325
    }
324
//    if (ETHIRQbits.PKTPEND) {
326
//    if (ETHIRQbits.PKTPEND) {
325
//
327
//
326
//        ETHIRQbits.PKTPEND = 0;
328
//        ETHIRQbits.PKTPEND = 0;
327
//    }
329
//    }
328
    if (ETHIRQbits.TXDONE) {
330
    if (ETHIRQbits.TXDONE) {
-
 
331
        // Call the previously saved function
329
        if (eth_data->tx_callback != NULL)
332
        if (eth_data->tx_callback != NULL)
330
            (*eth_data->tx_callback)();
333
            (*eth_data->tx_callback)();
331
        ETHIRQbits.TXDONE = 0;
334
        ETHIRQbits.TXDONE = 0;
332
    }
335
    }
333
    if (ETHIRQbits.TXABORT) {
336
    if (ETHIRQbits.TXABORT) {
334
 
-
 
-
 
337
        // TX aborted, do we care?
335
        ETHIRQbits.TXABORT = 0;
338
        ETHIRQbits.TXABORT = 0;
336
    }
339
    }
337
    if (ETHIRQbits.RXBUFNA) {
340
    if (ETHIRQbits.RXBUFNA) {
338
        // This is a serious error!
341
        // This is a serious error!
339
 
-
 
-
 
342
        // TODO: handle this
340
        ETHIRQbits.RXBUFNA = 0;
343
        ETHIRQbits.RXBUFNA = 0;
341
    }
344
    }
342
    if (ETHIRQbits.RXOVFLW) {
345
    if (ETHIRQbits.RXOVFLW) {
343
        // This is a serious error!
346
        // This is a serious error!
344
 
-
 
-
 
347
        // TODO: handle this
345
        ETHIRQbits.RXOVFLW = 0;
348
        ETHIRQbits.RXOVFLW = 0;
346
    }
349
    }
347
 
350
 
348
    IFS1bits.ETHIF = 0;
351
    IFS1bits.ETHIF = 0;
349
}
352
}
350
353