Experimental Physics and Industrial Control System
Ulrik,
I've looked at the code for devAsynFloat64Array.c and it appears to be
identical to devAsynInt32Array.c, except for obvious differences in the
interfaces. Have you resolved this problem?
Mark
________________________________
From: Mark Rivers
Sent: Thursday, July 26, 2007 8:18 AM
To: Pedersen, UK (Ulrik); [email protected]
Cc: [email protected]
Subject: RE: asyn float64array interrupt problem
Hi Ulrik,
It is certainly possible that there is a bug. The support for
interrupt callbacks for waveform records was only added in R4-8. The
Modbus driver is the only one that I am aware of that uses the support,
and it only uses asynInt32Array, not asynFloat64Array. If there is a
problem I suspect it is in devEpics/devAsynFloat64Array. I'll take a
look at that today and see if I can see a problem.
Mark
________________________________
From: [email protected] on behalf of Pedersen, UK
(Ulrik)
Sent: Thu 7/26/2007 4:51 AM
To: [email protected]
Cc: [email protected]
Subject: asyn float64array interrupt problem
Hi,
I have come across a problem with float64Array interrupts when
writing
asyn based driver support for a device. I may just be doing
things wrong
but I have previously got the same thing working for int32,
uint32 and
octet interrupts and I think I'm doing pretty much the same
now...
In the release notes for Asyn version 4-8 it states that
interrupt
support for devAsynFloat64Array has been added (enabling IO
Intr. in
waveform records). Previously I used event processing for the
same
functionality...
So I enabled IO intr in my waveform record:
record(waveform, "$(DAQMX):DATA") {
field(SCAN, "I/O Intr")
field(PINI, "NO")
field(DTYP, "asynFloat64ArrayIn")
field(PREC, "5")
field(INP, "@asyn(myport1 0 5.0)DATA")
field(NELM, "$(NELM)")
field(FTVL, "DOUBLE")
}
All the asyn registering bits is in the configuration function
and
according to the asyn debug output during startup, the interrupt
gets
registered:
2007/07/26 10:34:51.478 drvDaqMxBase::drvUserCreate, attempting
to
create cmd: DATA
2007/07/26 10:34:51.478 drvDaqMxBase::drvUserCreate, command
created:
DATA
...
2007/07/26 10:34:51.478 test:DATA
devAsynFloat64Array::getIoIntInfo
registering interrupt
2007/07/26 10:34:51.478 myport1 0 registerInterruptUser
In the driver code when I want to execute the interrupt/callback
I do
this:
pasynManager->interruptStart(pPvt->float64ArrayInterruptPvt,
&pclientList);
pNode = (interruptNode *)ellFirst(pclientList);
Here is where the problem occur: pNode is still NULL! So it
seems that
the list of interrupt clients is empty - but according to the
startup
script the devAsynFloat64Array interrupt has been registered for
that
record...(???)
Any idea why this is not working or what I may be doing wrong?
Any
suggestion where I need to start looking for more debug
information?
Cheers,
Ulrik
--------------------------------------------------------------------
Ulrik Pedersen phone: +44(0)1235-778580
Software Engineer email:
[email protected]
Diamond Light Source Ltd.
Rutherford Appleton Laboratory,
Chilton, Didcot
OxfordShire OX11 0DE
--------------------------------------------------------------------
- References:
- RE: asyn float64array interrupt problem Mark Rivers
- Navigate by Date:
- Prev:
RE: "invalid UDP request" during boot Laznovsky, Michael
- Next:
Enabling drvLinuxGpib (linux-gpib) Emmanuel Mayssat
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
<2007>
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
- Navigate by Thread:
- Prev:
RE: asyn float64array interrupt problem Mark Rivers
- Next:
RE: asyn float64array interrupt problem Heinrich du Toit
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
<2007>
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025