EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

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

Subject: RE: Questions about the Multi-channel I/O Interrupt
From: "Jeff Hill" <[email protected]>
To: "Weixing Cheng" <[email protected]>, <[email protected]>
Date: Wed, 9 May 2001 12:45:35 -0600
> 
> Hello, everyone. I have developed the acromagAVME9325 driver using I/O Intr
> It's working well when one channel is used, no matter what's on other channels
> 

1) You can examine the fields in your records after iocInit has run by executing the "dbpr" 
command from the vxWorks shell.

2) You have not included the source code for the part of your device support that parses the
address supplied in the INP field or the source code that calls avme9325DI_read() so it is 
difficult to comment further on the nature of the problem.

3) You may need to add a mutual exclusion semaphore to the code for avme9325DI_read() 
in order to prevent two threads in the system (two database scan tasks) from attempting
to select the channel on your device at the same instant in time.

Jeff

> 
> long avme9325DI_read(register volatile unsigned short card,register volatile unsigned short chan,long *pval)
> {
>  register volatile avme9325_t **p;
>  register volatile avme9325_t *pcard;
>  p=AVME9325.pCardList;
>  pcard=AVME9325.vmeAddrs;
>  *p=pcard;
>  
>  if(!pval) return 1;
>  if(chan>15) return 1;
>  
>  pcard->scanProg=0x80|(0x1F&chan); /* channel select*/
>  pcard->conversionCount=0x01;      /* conversion times*/
>  
>  while(!(pcard->csr&0x80))
>   {
>   ;
>   } /*to determine whether the conversion finished*/
> 
>  *pval=(unsigned long)pcard->data[pcard->pData]>>4; /* read the AD value*/
> 
>  if(*pval==0xf000) return 1;
>  else return 0;
> }
> 
> I think there must be something wrong with the .db file, I have tried some ways such as add the PHAS field , or set the 
> aiAvme9325_Chan1 to Passive scanning, but still doesn't work.
> 
> Any suggestion is appreciated. Thank you
> 
> Cheng Weixing from SSRF
> 


References:
Questions about the Multi-channel I/O Interrupt Weixing Cheng

Navigate by Date:
Prev: RE: What does this message mean? Jeff Hill
Next: Re: block output record Erik Johansson
Index: 1994  1995  1996  1997  1998  1999  2000  <20012002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Questions about the Multi-channel I/O Interrupt Weixing Cheng
Next: Newbie trying to move steppers in a CA client Chris Jacobsen
Index: 1994  1995  1996  1997  1998  1999  2000  <20012002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 10 Aug 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·