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.html>


More information about the users mailing list