EPICS Controls Argonne National Laboratory

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: RE: asyn float64array interrupt problem
From: Heinrich du Toit <[email protected]>
To: Tech-Talk EPICS <[email protected]>
Date: Mon, 06 Aug 2007 12:42:53 +0200
On top of this I like to make a small suggestion for asyn :)

there is all these diferent drivers in: asyn*Base.c
But in debugging there is really no way to tell which one is running :)

So My suggestion is to change the asynPrint lines in
registerInterruptUser and CancelInterruptUser to include something like
"(int32Array)"

e.g.
    asynPrint(pasynUser,ASYN_TRACE_FLOW,
        "%s %d registerInterruptUser (Float64Array)\n",portName,addr);

Then it's fairly clear where we are in the code :)
Anyways, just an idea (Would've spared me a atleast 2 hours debugging..
lol)

bye

On Mon, 2007-08-06 at 09:57 +0100, Pedersen, UK (Ulrik) wrote:
> Hi Mark,
> 
> Thanks for that. I still have the problem (I'm working around it by
> posting events instead). I've been going through the code several times
> and I just can't seem to find the problem. When I wrote it I basically
> copied and pasted my UInt32Interrupt and made the necessary interface
> changes... 
> 
> Peter had a look at devAsynFloat64Array.c as well and he didn't find
> anything there either. Surely someone out there must have tried and
> tested this before? I think I'll write a small test support module which
> does nothing but float64Array interrupts - just need to find a spare
> hour or two.
> 
> Cheers,
> Ulrik
> 
> -----Original Message-----
> From: Mark Rivers [mailto:[email protected]] 
> Sent: 03 August 2007 23:56
> To: Mark Rivers; Pedersen, UK (Ulrik); [email protected]
> Cc: [email protected]
> Subject: RE: asyn float64array interrupt problem
> 
> 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
> 	
> 	
> --------------------------------------------------------------------
> 	
> 	
> 
> <DIV><FONT size="1" color="gray">This e-mail and any attachments may contain confidential, copyright and or privileged material, and are for the use of the intended addressee only. If you are not the intended addressee or an authorised recipient of the addressee please notify us of receipt by returning the e-mail and do not use, copy, retain, distribute or disclose the information in or attached to the e-mail.
> Any opinions expressed within this e-mail are those of the individual and not necessarily of Diamond Light Source Ltd. 
> Diamond Light Source Ltd. cannot guarantee that this e-mail or any attachments are free from viruses and we cannot accept liability for any damage which you may sustain as a result of software viruses which may be transmitted in or with the message.
> Diamond Light Source Limited (company no. 4375679). Registered in England and Wales with its registered office at Diamond House, Harwell Science and Innovation Campus, Didcot, Oxfordshire, OX11 0DE, United Kingdom
> </FONT></DIV> 


References:
RE: asyn float64array interrupt problem Mark Rivers
RE: asyn float64array interrupt problem Mark Rivers

Navigate by Date:
Prev: RE: asyn float64array interrupt problem Heinrich du Toit
Next: RE: "invalid UDP request" during boot Jeff Hill
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: RE: asyn float64array interrupt problem Heinrich du Toit
Next: Asyn, asyn, and more asyn interpose interfaces Emmanuel Mayssat
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 
ANJ, 10 Nov 2011 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·