OPTO_AC5(9)

✨ OPTO_AC5(9) β€” the opto_ac5 era ✨

okay bestie, sit down, we're talking about opto_ac5(9) β€” the realtime driver for opto22 PCI-AC5 cards. it's giving "industrial I/O but make it cute". let's go πŸ’…


πŸŽ€ NAME πŸŽ€

opto_ac5 β€” the realtime driver for opto22 PCI-AC5 cards. no cap, that's the whole vibe.


🌸 SYNOPSIS 🌸

loadrt opto_ac5  [portconfig0=0xN] [portconfig1=0xN]

that's it. that's the summoning spell πŸͺ„


πŸ’– DESCRIPTION πŸ’–

so these pins and parameters? they're created by the realtime opto_ac5 module. main character energy fr fr.

The portconfig0 and portconfig1 variables are used to configure the two ports of each card. the first 24 bits of a 32 bit number represent the 24 i/o points of each port. the lowest (rightmost) bit would be HAL pin 0, which is header connector pin 47. then the next bit to the left would be HAL pin 1, header connector pin 45, and so on, until bit 24 would be HAL pin 23, header connector pin 1. 😌

"1" bits represent output points. so if you wanted channel 0..11 as inputs and 12..23 as outputs, that'd be represented by (in binary):

111111111111000000000000

which is 0xfff000 in hexadecimal. that is the number you would use, e.g.:

loadrt opto_ac5 portconfig0=0xfff000

if no portconfig variable is specified, the default configuration is 12 inputs then 12 outputs. slay, defaults got your back 🫢

up to 4 boards are supported, and boards are numbered starting at 0. not 1. zero. we count like programmers here πŸ’€

Portnumber can be 0 or 1. Port 0 is closest to the card bracket. iconic placement tbh.


✨ PINS ✨

  • opto_ac5.[BOARDNUMBER].port[PORTNUMBER].in-[PINNUMBER] OUT bit β€” connect a HAL bit signal to this pin to read an i/o point from the card. the PINNUMBER represents the position in the relay rack. e.g., PINNUMBER 0 is position 0 in a opto22 relay rack and would be pin 47 on the 50 pin header connector.
  • opto_ac5.[BOARDNUMBER].port[PORTNUMBER].in-[PINNUMBER]-not OUT bit β€” same energy, but the -not pin is inverted, so that LOW gives TRUE and HIGH gives FALSE. little chaos goblin of a pin πŸ™ˆ
  • opto_ac5.[BOARDNUMBER].port[PORTNUMBER].out-[PINNUMBER] IN bit β€” connect a HAL bit signal to this pin to write to an i/o point of the card. the PINNUMBER represents the position in the relay rack. e.g., PINNUMBER 23 is position 23 in a opto22 relay rack and would be pin 1 on the 50 pin header connector.
  • opto_ac5.[BOARDNUMBER].led[NUMBER] OUT bit β€” turns one of the on board LEDS on/off. LEDS are numbered 0 to 3. tiny lights, huge vibes πŸ’‘

πŸ’… PARAMETERS πŸ’…

  • opto_ac5.[BOARDNUMBER].port[PORTNUMBER].out-[PINNUMBER]-invert W bit β€” when TRUE, invert the meaning of the corresponding -out pin so that TRUE gives LOW and FALSE gives HIGH. flip the script, bestie πŸ”„

πŸ”₯ FUNCTIONS πŸ”₯

  • opto_ac5.0.digital-read β€” add this to a thread to read all the input points.
  • opto_ac5.0.digital-write β€” add this to a thread to write all the output points and LEDS.

πŸ’€ BUGS πŸ’€

all boards are loaded with the same port configurations as the first board. yes, all of them. the first board is the blueprint, the others just copy the fit. no individuality allowed 😭

🌈 SEE ALSO 🌈

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


and that's the whole page, bestie! πŸ¦‹ this came to you straight from the LinuxCNC Documentation, dated 2008-08-04, and it lives in section OPTO_AC5(9). go forth and wire up your relay racks, you absolute legend πŸ‘‘βœ¨