Hi,
I've a problem working with the AT91SAM9263 controller from atmel.
I receive ethernet packets via an interrupt (highest priority). The ISR is very short, I only read the status register, count the nbr of rcvd packets and control if there are any kind of errors.
I've another interrupt ISR routine for the usart (using a lower priority) and an interrupt routine for the PIT timer (using the lowest priority). Both ISR are very short, too.
If I receive a few packets (400 pkt/sec on ethernet and 100 pkts/sec on the usart), it seems that I miss a few events - getting no interrupt for every rcvd pkt (for the ethernet connection). After a short time, all buffers for the ethernet connection are full and I get an error interrupt from the DMA (which is responsible to store the ethernet pkts on the right location in the internal sram) "no buffer available".
I don't think that both baud-rates are very huge / or to huge for the processor.
The processing of the eth packets is very short, too. I only store them in an additional buffer, and give the other buffer back to the DMA. The processing of the packets from the usart is not available. Within the ISR, I store the data in a buffer - that's it.
When I don't use the usart connection, everything is working (I didn't get an "no buffer available" error).
Could someone of you imagine which kind of problem will exist?
best regards David
related to interrupt priority, maybe?
sorry, I somehow missed what you have written about priority.
ok, another try. have you got your processor running at full speed, the MAM enabled, peripheral clocks fast enough, any other benchmark item taken care of?
yes, I've checked all the values of the pmc registers - and they have the correct values. The processor is running at approximately 200MHz and the masterclock (external memory interface) is running at 100MHz.
Which peripheral clocks do you mean? At the moment, there's only the ethernet part and the first usart running. All other peripheral clocks as i2c and so on, are also used in the initialization to get the correct values from e.g. the eeprom.
But when the ethernet connection is enabled there's only the access to the ethernet, dma and the first usart interface, running at the correct baud rate (all values I get, are correct).
Are you also using atmel controllers like the AT91SAM?
I'm working with a LPC2468/78 for work, STR9 for pleasure...I'm thinking about this. Will let you know if I have an idea.
what happens if you shutdown the DMA transfers?
The ethernet mac controller is always running with the dma controller (master), so that I don't / can't configurate the ethernet without using the dma.
And the usart is also able to use one of the peripherial dma controllers, but at the moment I don't use one of them.
>what happens if you shutdown the DMA transfers? so if I will shutdown the dma for the ethernet, no pkts will arrive.