manage serial interrup

Hi guys,
(I think there is no girls in this nerd lair :smiley:)
I need to use Interrupt for the serial ports of my system, but I don’t know how to manage it :frowning:

if you want it, I can illustrate my system:

I’ve got a pc104 system with a lot of serial lines:
4x RS232 |
4x RS422 |-On the same board
2x RS422
1x ARINC429 (1 port with 4 channels)

my software must read at the same time from all these ports and do some work with this data…

now, when I use all channels exepted ARINC it works quite correctly.
when I send ARINC data, it stops to acquire every other data until ARINC transmission ends…

I’d like to specify that ARINC board is the only that uses an API lib to comunicate. the other devices uses easly read/write functions…
and every port is managed independently from another (because is assigned to a thread)

until now I don’t manage any kind of interrupt, but I think that using them I’ll resolve my problems…

thanks

My guess is the thread handling the ARINC429 must be doing a busy loop somewhere are starving the other thread.

Using interrupt with this setup is going to be a problem because you don’t have enough interrupt avaialable. You need at least 8 free interrupts, does your hardware as 8 free interrupts?

I think it is possible, but I missed to say that when the sw starts all threads are inizialized and put in a ready to read state… the only difference between them is that ARINC use an API funcion to read from port (getnetx()) and other ports use read() function…

for the 8 free interrupt, I think it’s possible (now I can’t verify because I have no target) because in my system there is no keyboard, mouse etc… so all interrupts are ot active…
now, I look around the web and I found the ay to catch an interrupt signal, or an IO request but I don’t know how to knwon which port have sent it…

what can I do?

You use read() ???, what device driver is the read() talking to?

For the Xtreme104+ card (with 8 serial port RS232/422/485 programmable - connect tech) : devc-bluestorm

for the PCM-ESCC card (2 serial port RS232/422/485 - Winsystems): devc-eth_escc

for the arinc I use API supplied by the vendor (with some modify to port it from linux to qnx6.3)

I think the first 2 drivers are devc-ser8250 based…