EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  <20042005  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  2001  2002  2003  <20042005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: IP-Octal 422
From: "Brian McAllister" <[email protected]>
To: Peregrine McGehee <[email protected]>
Cc: [email protected]
Date: Fri, 16 Jul 2004 16:44:06 -0400
>>> On 7/13/2004 at 10:47:15 MDT, Peregrine McGehee wrote:

  > The initial development for the drvIpac-based SBS IP Octal 232/422/485
  > driver was really only tested under RS-232.

  > Has anyone had success with the RS-422 version (yet alone the RS-485
  > version Pete is asking about)?

Bates is using the IP-Octal 422, with drvAscii/drvSerial.

We experienced seemingly random failures which were solved with the aid of
Richard Dickson from JLab, if I recall correctly.

The problem was due to the module using two VME interrupts, one for ports
0-3 and one for ports 4-7.  If ports on both halves were active
simultaneously, drvSerial would sometimes interleave the traffic for the
two ports, leading to a condition where it was waiting for a response that
would never arrive, hanging communications on that port.

The (quick and dirty) solution was to add a few lines to the interrupt
handler in the IP-Octal driver to mask out any further interrupts from the
module until it was finished processing.  Note that which VME IRQs are used
depends on which slot on the carrier the module is in.

Here's a diff against our copy of tyGSOctal.c, last revision 9/3/99:

*** /home/locus/epicsdev/BATES/ipacApp/src/tyGSOctal.c	Fri Jun 16 16:44:50 2000
--- /home/locus/epicsdev/BATES/ipacApp/src/tyGSOctal.c.orig	Tue Dec  7 15:48:44 1999
***************
*** 701,707 ****
      volatile unsigned char sr, isr;
      unsigned int spin;
      int i;
!     int level, old_level;
      int vector;
      int block;
      char outChar;
--- 701,707 ----
      volatile unsigned char sr, isr;
      unsigned int spin;
      int i;
!     int level;
      int vector;
      int block;
      char outChar;
***************
*** 716,723 ****
      level = ipmIrqCmd(pQt->carrier, pQt->module, 0, ipac_irqGetLevel);
      vector = sysBusIntAck(level);
    
-     old_level = intLevelSet(2);
- 
      for (spin=0; spin < MAX_SPIN_TIME; spin++)
      {
      /*
--- 716,721 ----
***************
*** 790,797 ****
              }
          }
      }
- 
-     intLevelSet(old_level);
  }
  
  /******************************************************************************
--- 788,793 ----

----
Brian McAllister                    Controls Programmer/Beam Physicist
[email protected]                        MIT-Bates Linear Accelerator
(617) 253-9537                                           Middleton, MA


References:
Re: Fwd: Re: APS Hardware Catalog - beta version Peregrine McGehee

Navigate by Date:
Prev: Re: RTEMSfor MVME5500 Kate Feng
Next: [no subject] bwaggoner
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  <20042005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Fwd: Re: APS Hardware Catalog - beta version Peregrine McGehee
Next: Re: Fwd: Re: APS Hardware Catalog - beta version Joe Sullivan
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  <20042005  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 ·