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 | 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 |
<== Date ==> | <== Thread ==> |
---|
Subject: | RE: Question about ACROMAG IP-408 |
From: | Mark Rivers via Tech-talk <tech-talk at aps.anl.gov> |
To: | "'Wang, SuYin Grass'" <grass at anl.gov> |
Cc: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Mon, 29 Mar 2021 23:26:57 +0000 |
Hi Grass, The Acromag IP408 is a 32-channel card. The datasheet says the following: Interrupts: Change-of-state and level on channels 0-7 Your model is defined in the driver with this line: #define ACROMAG_IP408_32 0x03 /*ACROMAG IP408 32 CHANNEL DIGITAL IO */ In the constructor for the driver is this code: switch (model_) { case UNIDIG_I_O_24I: case UNIDIG_I_E: case UNIDIG_I: case UNIDIG_I_D: case UNIDIG_I_O_24IO: case UNIDIG_I_HV_16I8O: case UNIDIG_I_O_12I12O: case UNIDIG_I_HV_8I16O: supportsInterrupts_ = 1; break; default: supportsInterrupts_ = 0; break; } So you can see that your model falls into the “default” part of that switch statement, meaning the driver does not support interrupts for it. So the card does support interrupts on the first 8 channels, but the driver does not currently support this. It would not be hard to add that support to the driver. Mark From: Tech-talk <tech-talk-bounces at aps.anl.gov>
On Behalf Of Wang, SuYin Grass via Tech-talk Hi, I am wondering is anyone using ip-Unidig with ACROMAG IP-408 to get interrupt. We are trying to use IP-408 to get an interrupt from a 1us TTL pulse with 1Hz rate.
We are running IP408 with TVME200, and using the example "EXAMPLE_ipUnidig.substitutions" came with ipUnidig module. We found that the default setting turned the output on, so we cannot read the input. therefore, I also turn the output off by changing the
"STest:Unidig1Bo0.VAL" to 0. After we turn the output off, we were able to see the input level change, if we change the input level for 5V to 0V, We can see the Unidig1Bi0 changed from High to Low, and vice
versa. However, with camonitor the "STest:Unidig1Bi0", We still cannot see the interrupt from the 1us pulse.
Now we are using a pulse generator to make the 1us pulse to a 10us pulse, but it doesn't help. Is there anything that needs to be changed for IP408 to get an interrupt? Thanks, Grass =============st.cmd ============== ipacAddTVME200("602FB0") ipacReport(2) initIpUnidig("Unidig1", 0, 0, 1, 116, 0xffffff, 0xffffffff) dbLoadTemplate("db/EXAMPLE_ipUnidig.substitutions", "P=STest:, PORT=Unidig1") ====================================== ===ipacReport(2)========================== IP Carrier 0: TEWS TVME200, 4 slots C0 S0 : 0xa3/0x03 - Int0: level 4 Int1: level 5 ID = 0xd2006080, I/O = 0xd2006000, Mem = 0xb0000000 C0 S1 : No Module - Int0: level 2 Int1: level 1 ID = 0xd2006180, I/O = 0xd2006100, Mem = 0xb0800000 C0 S2 : No Module - Int0: level 4 Int1: level 5 ID = 0xd2006280, I/O = 0xd2006200, Mem = 0xb1000000 C0 S3 : No Module - Int0: level 2 Int1: level 1 ID = 0xd2006380, I/O = 0xd2006300, Mem = 0xb1800000 value = 0 = 0x0 ============================================= |