Interrupts occurrence
Angelo Fraietta
angelo_f at bigpond.com
Tue Mar 26 04:09:00 UTC 2002
I have to make a correction on those previous calculations. I did not
read the settings on my CRO correctly. The actual values are 1 message
every 450 us, (not 4 us) and 1 every 500us. So I am actually at the
extremes. The maximum transfer I could expect from a MIDI device would
be one byte every 320 us (10 bits per byte). So not setting the event
(as Chris Johns suggested) does save me a valuable 50us.
Angelo Fraietta wrote:
> After some exhaustive testing I have come up with some figures that
> represent data exchange rates between the Pic microcontroller and the
> 386 using a PLA as an interface on an ISA bus using an interrupt
> driven I/O read/write paradigm.
>
> What I have done is make the Pic and the 386 communicate with each
> other, each triggering an interrupt with the other, causing it to
> write to the other device.
>
> With the RTEMS event being triggered every interrupt I have a
> constant exchange rate of 1 message each way every 5 us.
>
> Triggering the event only if the receive queue is empty gives me an
> exchange rate of 1 Message every 4 us. I am saving 1 us by not sending
> the unnecessary event.
>
> The big factor in this test, however, is this method that I used to
> check the exchange rates completely blows the 1 message every 650 us
> measurement I previously made away, thus proving that the interrupt
> rate will more than adequately sustain an input Midi stream running at
> maximum transfer rate (31.25kbs, which is about 3 bytes per ms)
>
> Angelo Fraietta wrote:
>
>> You are right. Sending the event if the queue was not originally
>> empty when the ISR came is not necessary. I was already looping the
>> task until the queue was empty; I was, however, sending the event
>> regardless -- which is actually wasting CPU cycles. Thanks for the
>> tip? I'll see what I can get the interval down to by not sending an
>> unnecessary event.
>>
>> Chris Johns wrote:
>>
>>>Angelo Fraietta wrote:
>>>
>>>>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.
>>>>
>>>
>>>I would only send the event if the queue is empty and have the task loop
>>>until the queue is empty.
>>>
>>>
>>
>>--
>>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)
>
>
--
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/20020326/04a3b6b4/attachment-0001.html>
More information about the users
mailing list