Hello,
I’m not familliar with your driver example (and
not so much with asyn), but for the mechanism of the i/o
intr to work, some functions have to be declared in the
driver himself.
I have a device support example here (without
asyn):
https://gitlab.com/formation-epics/anf-2022/4_1-device-support/-/blob/main/top_correction/exerciceDevSupApp/src/MyDeviceExampleIOIntr.c
My example is really pointless in real
situation because the iocIntr is triggered by an iocShell
function for the example:
https://gitlab.com/formation-epics/anf-2022/4_1-device-support/-/blob/main/top_correction/exerciceDevSupApp/src/commandIocShell.c
But in real situation it has to be triggered
somehow by the device.
De :
Tech-talk <tech-talk-bounces at aps.anl.gov>
De la part de timesir via Tech-talk
Envoyé : vendredi 7 juillet 2023 08:18
À : tech-talk at aps.anl.gov
Objet : interrupt read data in int32Driver example
Dear community,
I would like to learn about the usage of epics interrupt. I
found an example routine called `int32Driver`
(asyn/iocBoot/ioctestEpics/st.cmd and
asyn/testEpicsApp/src). In the `st.cmd` script, there is a
record instance that I want to use to run an interrupt
because it has `SCAN=I/O Intr`. Here is the example record
instance:
record(ai,"asyndevAiInt32A0") {
field(SCAN,"I/O Intr")
field(DTYP,"asynInt32")
field(INP,"@asyn( int32 , 0 , 1.0) ")
field(LINR,"LINEAR")
field(EGUF,"100.0")
field(EGUL,"-100.0")
field(PREC,"3")
}
After running `epics` using the above command, I tried to
read the data generated by the interrupt using `caget
asyndevAiInt32A0`. However, the return value of `caget` did
not change. How can I make `asyndevAiInt32A0` generate a
read data interrupt to software simulate a hardware
interrupt that produces new data?