summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib
diff options
context:
space:
mode:
author Couriersud <couriersud@gmx.org>2019-03-09 00:34:40 +0100
committer Couriersud <couriersud@gmx.org>2019-03-09 00:34:40 +0100
commit1a2af1a23e4e28e551ce85dbc984cb5aae99bfa2 (patch)
tree7087185efed5753039841d1f017f8895755ea580 /src/lib
parentb346dea27951dc08b6ac349ce3c1f5555366128e (diff)
netlist: add reverse parameter to 3-pin-potentiometer. (nw)
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/netlist/analog/nlid_twoterm.cpp3
-rw-r--r--src/lib/netlist/analog/nlid_twoterm.h2
2 files changed, 4 insertions, 1 deletions
diff --git a/src/lib/netlist/analog/nlid_twoterm.cpp b/src/lib/netlist/analog/nlid_twoterm.cpp
index d5578ccd5bb..f945100c652 100644
--- a/src/lib/netlist/analog/nlid_twoterm.cpp
+++ b/src/lib/netlist/analog/nlid_twoterm.cpp
@@ -156,7 +156,8 @@ NETLIB_UPDATE_PARAM(POT)
nl_double v = m_Dial();
if (m_DialIsLog())
v = (std::exp(v) - 1.0) / (std::exp(1.0) - 1.0);
-
+ if (m_Reverse())
+ v = 1.0 - v;
m_R1.set_R(std::max(m_R() * v, exec().gmin()));
m_R2.set_R(std::max(m_R() * (plib::constants<nl_double>::one() - v), exec().gmin()));
diff --git a/src/lib/netlist/analog/nlid_twoterm.h b/src/lib/netlist/analog/nlid_twoterm.h
index 06a4bc6e1d7..08c7235caf1 100644
--- a/src/lib/netlist/analog/nlid_twoterm.h
+++ b/src/lib/netlist/analog/nlid_twoterm.h
@@ -166,6 +166,7 @@ NETLIB_OBJECT(POT)
, m_R(*this, "R", 10000)
, m_Dial(*this, "DIAL", 0.5)
, m_DialIsLog(*this, "DIALLOG", false)
+ , m_Reverse(*this, "REVERSE", false)
{
register_subalias("1", m_R1.m_P);
register_subalias("2", m_R1.m_N);
@@ -186,6 +187,7 @@ private:
param_double_t m_R;
param_double_t m_Dial;
param_logic_t m_DialIsLog;
+ param_logic_t m_Reverse;
};
NETLIB_OBJECT(POT2)