Interrupts occurrence
Angelo Fraietta
angelo_f at bigpond.com
Sun Feb 24 01:08:24 UTC 2002
Within the ISR I am doing the following:
Reading a 16 bit word from an I/O address
Decoding and adding that word onto a queue that is emptied out by a
running task
Checking a second queue for data that needs to be transmitted
Transmitting a word to the I/O card.
Setting an event that causes the running task to empty the queue.
Using this methodology will eventually ensure that the I/O card does not
send data faster that the ISR can accept them.
I have sentries in place to test if the queue overflows and also if a
byte is missing.
I get no errors at an interrupt spacing of 620 us. Anything faster than
that I lose bits.
This I/O card is an interface to a MIDI input and output stream, which
has a potential of 3 bytes per ms (31.25kbs), however, most MIDI . The
I/O card I designed has a 16 byte input buffer so it would be able to
slow down the fasted transmissions. Losing some bytes in this instance
is not that big a deal for my project as I have overflowed MIDI buffers
other synthesizers. The important thing, however, is that I can already
catch and display the overflow condition within the I/O card, which
should be able to spit them down into the the ISR as fast as it is able.
Joel Sherrill wrote:
>
>Angelo Fraietta wrote:
>
>>I worked it out. I did not have the interrupt pin held high for long
>>enough. I am now generating and decoding interrupts every 1 Ms.
>>
>
>I am glad you worked it out. I would expect that you can sustain
>a fairly high interrupt rate but it always depends on how much
>processing is required per interrupt in the ISR and what
>that implies for task processing. Sure you can do a LOT of
>interrupts that clear a bit and return but useful work is another
>matter. For example, sustaining a high RX rate on a UART is
>often more than a CPU can do.
>
>-joel
>
>>Angelo Fraietta wrote:
>>
>>>At what speed can I have interrupts happening in the pc386 bsp running
>>>at 16 MHz. I am generating an interrupt with an external
>>>microcontroller -- currently every 30 Ms (I was hoping to make it
>>>possible every 1 Ms) -- however, the 386 is missing some of the
>>>interrupts. I am attempting to transfer data between the
>>>microcontroller an the 386 by using a 16 Bit device driver and using
>>>interrupts to synchronize the two processors. Should I be trying to
>>>use DMA for data transfer rates of this speed?
>>>
>>--
>>Angelo Fraietta
>>
>>PO Box 859
>>Hamilton NSW 2303
>>
>>Home Page
>>
>>http://www.users.bigpond.com/angelo_f/
>>
>>There are those who seek knowledge for the sake of knowledge - that is CURIOSITY
>>There are those who seek knowledge to be known by others - that is VANITY
>>There are those who seek knowledge in order to serve - that is LOVE
>> Bernard of Clairvaux (1090 - 1153)
>>
>
--
Angelo Fraietta
PO Box 859
Hamilton NSW 2303
Home Page
http://www.users.bigpond.com/angelo_f/
There are those who seek knowledge for the sake of knowledge - that is CURIOSITY
There are those who seek knowledge to be known by others - that is VANITY
There are those who seek knowledge in order to serve - that is LOVE
Bernard of Clairvaux (1090 - 1153)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20020224/1970bc08/attachment-0001.html>
More information about the users
mailing list