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?