EPICS Home

Experimental Physics and Industrial Control System


 
1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  <20072008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  <20072008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: asyn float64array interrupt problem
From: "Pedersen, UK \(Ulrik\)" <[email protected]>
To: <[email protected]>
Cc: [email protected]
Date: Thu, 26 Jul 2007 10:51:17 +0100
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

--------------------------------------------------------------------


Replies:
RE: asyn float64array interrupt problem Mark Rivers

Navigate by Date:
Prev: Flood in area where diamond lab EPICS meeting was held. Thompson, David H.
Next: RE: asyn float64array interrupt problem Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  <20072008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Flood in area where diamond lab EPICS meeting was held. Thompson, David H.
Next: RE: asyn float64array interrupt problem Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  <20072008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024