epicsEnvSet("PREFIX", "quadEMTest:") epicsEnvSet("RECORD", "APS_EM:") epicsEnvSet("PORT", "APS_EM") epicsEnvSet("TEMPLATE", "APS_EM") epicsEnvSet("QSIZE", "20") epicsEnvSet("RING_SIZE", "10000") epicsEnvSet("TSPOINTS", "2048") ipacAddVIPC616_01("0x3000,0xa0000000") # Initialize Greenspring IP-Unidig # initIpUnidig(char *portName, # int carrier, # int slot, # int msecPoll, # int intVec, # int risingMask, # int fallingMask) # portName = name to give this asyn port # carrier = IPAC carrier number (0, 1, etc.) # slot = IPAC slot (0,1,2,3, etc.) # msecPoll = polling time for input bits in msec. Default=100. # intVec = interrupt vector # risingMask = mask of bits to generate interrupts on low to high (24 bits) # fallingMask = mask of bits to generate interrupts on high to low (24 bits) # The Quad-EM input is on IP-Unidig input 0 so we disable interrupts for bi records on that line initIpUnidig("Unidig1", 0, 1, 2000, 116, 0xfffffe, 0xfffffe) # drvAPS_EMConfigure(const char *portName, unsigned short *baseAddr, int fiberChannel, # const char *unidigName, int unidigChan, char *unidigDrvInfo) # portName = name of APS_EM asyn port driver created # baseAddress = base address of VME card # channel = 0-3, fiber channel number # unidigName = name of ipInidig server if it is used for interrupts. # Set to 0 if there is no IP-Unidig being used, in which # case the quadEM will be read at 60Hz. # unidigChan = IP-Unidig channel connected to quadEM pulse output # unidigDrvInfo = drvInfo string for digital input parameter # The Quad-EM input is on IP-Unidig input 0 drvAPS_EMConfigure("$PORT)", 0xf000, 0, "Unidig1", 0, "DIGITAL_INPUT") dbLoadRecords("$(QUADEM)/db/$(TEMPLATE).template", "P=$(PREFIX), R=$(RECORD), PORT=$(PORT), ADDR=0, TIMEOUT=1") # Fast feedback using EPID record # We don't actually load this, because that requires the synApps "std" and "dac128V" modules # which we don't include in this example application #dbLoadTemplate("quadEM_pid.substitutions") < $(QUADEM)/iocBoot/commonPlugins.cmd asynSetTraceIOMask("$(PORT)",0,2) #asynSetTraceMask("$(PORT)", 0,9) < ../saveRestore.cmd iocInit() # save settings every thirty seconds create_monitor_set("auto_settings.req",30,"P=$(PREFIX), R=$(RECORD)")