At 08:27 PM 14/01/1997 +0000, you wrote: >Hate to drag out this non-pic topic, but there's been a lot of >misconceptions mixed in with good information on this subject. > >PC's themselves can handle any number of com ports (I've run 12-16 >"non-intelligent" boards on one machine. Windows 3.x standard com >driver will not allow IRQ sharing or higher numbers of ports. Many >aftermarket drivers overcome this. Win95 and NT handle all the ports >you could need. Not completely true. The physical PC architure does not allow interrupt sharing from separate boards on the ISA bus unless the boards share a common device driver. Your comment gives the opposite impression. What happens on one board is design dependent, done with with special circuitry or an on board processor that can produce one edge from multiple devices. > >IRQ Sharing. Win 95 and NT allow IRQ sharing (meaning two ports IN >USE at the same time on the same IRQ). HOWEVER - your port MUST have >special hardware to support shared IRQ's. Most off the shelf modems >& ports don't. Many boards headed for industrial applications do. >IRQ sharing works well and I generally recommend it. As I stated above. An individual board may have 16 serial ports but it still produces only one _edge_ triggered interrupt which cannot be shared with another, different type of ISA card. > >Win 95 and NT have pretty much solved most of the dos/win3.x com >problems of the past. With the correct hardware and an understanding >of how things work there shouldn't be any problems. Granted this all >comes with a bit of overhead (to say the least) but Pentium machines >are cheap. If you are running multiple ports with little buffering >an no handshaking, just buy a fast machine. Even NT doesn't address the problem for ISA bus machines. For non-ISA it does because they run level triggered. For example: Imagine Serial port 1 producing an interrupt. The service routine begins and before the service routine ends Serial port 2 on a different ISA card produces an interrupt on the same IRQ. This edge from the interrupt is invisable since the IRQ line is still active. The device driver for Serial Port 1 finishes off and tells the OS that it successfully completed the interrupt. Several options now. The OS then writes the EOI to the Programmable Interrupt Controller (PIC) and continues on; but the IRQ line is still held asserted by Serial Port 2 so additional characters on any other serial ports can never produce an edge and therefore never interrupt the processor. Or... The OS, noting that the device did indeed complete the interrupt, calls all the other drivers attached to that interrupt anyway, just to make sure that they also didn't cause it. Trouble is, when do you stop looking? The OS could go down the list and look at Serial 2... which also caused an interrupt and while there, doing that, Serial 1 could come calling again. The OS could keep calling the drivers until all drivers said that they did not cause an interrupt at which point the OS can send the EOI to the PIC and give control back to the application. But, an interrupt can still sneak in during that one instruction before the EOI that is sent out to the PIC and the PIC will miss it. > >Bottom line isn't too bad. Good hardware supports shared IRQ's, >'95 and NT support it also - just be sure when you buy that your com >boards support and address and any IRQ, and hopefully shared IRQ's. >(Note that most industrial board suppliers support this stuff, >ourselves included at (shameless plug) http://www.bb-elec.com Nice WEB site! Bottom line is that if you want multiple serial ports than purchase an ISA card that has a large number of ports with an onboard processor on one IRQ. If you want more ports than purchase more cards but put them on separate IRQs. there are also systems out there that use the SCSI port to impliment huge numbers of Serial ports. As this is the PIC list most subscribers will have, or soon will have, an intimate knowledge of interrupts and physical hardware. It would benefit the list if you gave gory details as to how you handled multiple IRQs rather than anecdotal comments. ie: What constitues 'Good Hardware'? What do drivers do to share IRQs? How does your software handle the edge verse level problem. Otherwise your email reads more like. "Buy from us. We know what we're doing! You don't need to know the details! Just trust us!" Regards, John. [snip] >-mike >mfahrion@bb-elec.com >At home > > Pioneers are the ones, face down in the mud, with arrows in their backs. Automation Artisans Inc. Ph. 1-250-544-4950 PO Box 20002 Fax 1-250-544-4954 Sidney, BC CANADA V8L 5C9