[Home]Parallel Port Cards

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org

Revision 7 not available (showing current revision instead)

PCI Parallel port cards

A PCI parport card can be used to provide extra IO very cheaply, or even enable a computer without a parport to run Linuxcnc. Dual headed (2 port) cards are very useful, especially where PCI slots are scarce.

There is an added safety net with a PCI card, shorting out the parport will not ruin the on-board port or even the whole MB.

For stepper systems the NetMos / Moschip chipset works fine. These are the most widely used chips by card manufacturers, irrespective of what the actual card is branded as.

Try to avoid the 9805 and 9815 chips which are quite old and were a bit flakey, often difficult to set as input. The 9845, 9865 and 9901 chips (often designated MCS9845, MCS9865 and MCS9901) work fine

Other chipsets work too, described in the hardware link below.

EPP mode

To communicate with other EPP interfaced FPGA cards, requires a parport card that properly supports EPP. Moschip notoriously does not. The Oxsemi (PLXTech now) OX16PCI954 is recommended by one of the major manufacturers of such FPGA cards. EPP isn't needed for stepper systems as the input and output pins are in separate groups in the other modes. (see also Oxford semiconductor link at footer)

Installing

Run lspci -vv from a terminal once installed and you will get a print similar to the below for your card.

0000:01:0a.0 Communication controller: Netmos Technology PCI 9845 Multi-I/O Controller (rev 01)

Subsystem: LSI Losgic / Symbios Logic 2POS (2 port parallel adapter)

Flags: medium devsel, IRQ 5

I/O ports at b800

I/O ports at bc00

I/O ports at c000

I/O ports at c400

I/O ports at c800

I/O ports at cc00

This is a dual port card, some trial and error is required to establish which addresses are the ports and which the registers. Work your way through them, connecting in the hal file as below.

See link to Big JTs port tester as one option to test. Another simple option is to move a known good signal wire (from a limit switch say), from the BOB connected to existing port, to new BOB and activate the switch whilst watching the relevant pins in Hal Configuration window.

On this card, 0xc000 was the port on the card and 0xb800 the port connected via the flyer ribbon cable.

Connecting up in .hal file

The example card is connected in the .hal file thus

loadrt hal_parport cfg="0x378 out 0xc000 in 0xb800 in"

0x378 being the computer port, used for stepper step/dir etc. pins 2-9 are output. 0xc000 and 0xb800 are set as input, which sets pins 2-9 as input, allowing many sensors, encoders, switches etc to be attached

The extra parports are addressed in the hal file by incrementing numbers

0x378 is parport.0, 0xc000 is parport.1 , 0xb800 is parport.2 etc.

Each extra parport needs to be attached to a thread ie.

addf parport.1.read base-thread
addf parport.1.write base-thread
addf parport.2.read base-thread
addf parport.2.write base-thread

The individual pins are addressed simply by their numbers, as per the base parport eg.

net anewsignal => parport.1.pin-03.in

PCI LPT Card Status

Card VendorModelChip/s UsedPCI ID'sTested Working with EPPTested Working with Step / DirLCNC Version UsedCommentsTested Date
    xx      

PCIe LPT Card Status

Card VendorModelChip/s UsedPCI ID'sTested Working with EPPTested Working with Step / DirLCNC Version UsedCommentsTested Date
Vantec UGT-PCE20PL ASIX MCS9865IV-AA 9710:9865 Not Tested OK 2.8, 2.9 Dual Port Card, Pic: https://forum.linuxcnc.org/38-general-linuxcnc-questions/46705-vantec-2-port-parallel-pcie-card-ugt-pce20pl#gallery Sept. '22
Generic China CH382 WCH CH382 1c00:3050 Not Tested OK 2.8, 2.9 1P 0S, Poor Quality, but <$10 Data sheets: http://www.wch-ic.com/downloads/CH382DS0_PDF.html http://www.wch-ic.com/downloads/CH382DS1_PDF.html Sept. '22
Generic China CH382 WCH CH382 1c00:3250 Not Tested OK 2.8, 2.9 1P 2S, low cost Sept. '22

Links:

http://linuxcnc.org/docs/2.6/html/hal/parallel_port.html (Parallel Port Driver)

http://linuxcnc.org/docs/2.5/html/examples/pci_parallel_port.html

http://linuxcnc.org/docs/2.5/html/hal/parallel_port.html

http://wiki.linuxcnc.org/emcinfo.pl?EMC2_Supported_Hardware

http://wiki.linuxcnc.org/cgi-bin/wiki.pl?NetMos

http://wiki.linuxcnc.org/cgi-bin/wiki.pl?Parallel_Port_Tester (JTs port tester)

NB If you have an Oxford Semiconductor PCI card, there is a Windoze utility to change the mode which has vanished off the web You can get it here

File Attachment:

File Name: https://forum.linuxcnc.org/media/kunena//attachments/legacy/files/oxprom.zip
File Size:127 KB

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org
This page is read-only. Follow the BasicSteps to edit pages. | View other revisions
Last edited September 11, 2022 4:56 pm by Bari (diff)
Search:
Published under a Creative Commons License