Skip to content

Commit b39588f

Browse files
committed
do not reset channels if common ground coupling
1 parent 517f8c1 commit b39588f

File tree

1 file changed

+21
-23
lines changed

1 file changed

+21
-23
lines changed

src/eez/modules/psu/channel_dispatcher.cpp

+21-23
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ bool setCouplingType(CouplingType couplingType, int *err) {
129129

130130
channel.outputEnable(false);
131131

132-
if (i < 2 && couplingType != COUPLING_TYPE_COMMON_GND) {
132+
if (i < 2 && (couplingType == COUPLING_TYPE_PARALLEL || couplingType == COUPLING_TYPE_SERIES)) {
133133
channel.remoteSensingEnable(false);
134134
channel.remoteProgrammingEnable(false);
135135

@@ -140,34 +140,32 @@ bool setCouplingType(CouplingType couplingType, int *err) {
140140

141141
list::resetChannelList(channel);
142142

143-
if (g_couplingType != COUPLING_TYPE_NONE) {
144-
channel.setVoltage(getUMin(channel));
145-
channel.setVoltageLimit(MIN(Channel::get(0).getVoltageLimit(), Channel::get(1).getVoltageLimit()));
143+
channel.setVoltage(getUMin(channel));
144+
channel.setVoltageLimit(MIN(Channel::get(0).getVoltageLimit(), Channel::get(1).getVoltageLimit()));
146145

147-
channel.setCurrent(getIMin(channel));
148-
channel.setCurrentLimit(MIN(Channel::get(0).getCurrentLimit(), Channel::get(1).getCurrentLimit()));
146+
channel.setCurrent(getIMin(channel));
147+
channel.setCurrentLimit(MIN(Channel::get(0).getCurrentLimit(), Channel::get(1).getCurrentLimit()));
149148

150-
trigger::setVoltage(channel, getUMin(channel));
151-
trigger::setCurrent(channel, getIMin(channel));
149+
trigger::setVoltage(channel, getUMin(channel));
150+
trigger::setCurrent(channel, getIMin(channel));
152151

153-
channel.prot_conf.flags.u_state = Channel::get(0).prot_conf.flags.u_state || Channel::get(1).prot_conf.flags.u_state ? 1 : 0;
154-
if (channel.params.features & CH_FEATURE_HW_OVP) {
155-
channel.prot_conf.flags.u_type = Channel::get(0).prot_conf.flags.u_type || Channel::get(1).prot_conf.flags.u_type ? 1 : 0;
156-
}
157-
channel.prot_conf.u_level = MIN(Channel::get(0).prot_conf.u_level, Channel::get(1).prot_conf.u_level);
158-
channel.prot_conf.u_delay = MIN(Channel::get(0).prot_conf.u_delay, Channel::get(1).prot_conf.u_delay);
152+
channel.prot_conf.flags.u_state = Channel::get(0).prot_conf.flags.u_state || Channel::get(1).prot_conf.flags.u_state ? 1 : 0;
153+
if (channel.params.features & CH_FEATURE_HW_OVP) {
154+
channel.prot_conf.flags.u_type = Channel::get(0).prot_conf.flags.u_type || Channel::get(1).prot_conf.flags.u_type ? 1 : 0;
155+
}
156+
channel.prot_conf.u_level = MIN(Channel::get(0).prot_conf.u_level, Channel::get(1).prot_conf.u_level);
157+
channel.prot_conf.u_delay = MIN(Channel::get(0).prot_conf.u_delay, Channel::get(1).prot_conf.u_delay);
159158

160-
channel.prot_conf.flags.i_state = Channel::get(0).prot_conf.flags.i_state || Channel::get(1).prot_conf.flags.i_state ? 1 : 0;
161-
channel.prot_conf.i_delay = MIN(Channel::get(0).prot_conf.i_delay, Channel::get(1).prot_conf.i_delay);
159+
channel.prot_conf.flags.i_state = Channel::get(0).prot_conf.flags.i_state || Channel::get(1).prot_conf.flags.i_state ? 1 : 0;
160+
channel.prot_conf.i_delay = MIN(Channel::get(0).prot_conf.i_delay, Channel::get(1).prot_conf.i_delay);
162161

163-
channel.prot_conf.flags.p_state = Channel::get(0).prot_conf.flags.p_state || Channel::get(1).prot_conf.flags.p_state ? 1 : 0;
164-
channel.prot_conf.p_level = MIN(Channel::get(0).prot_conf.p_level, Channel::get(1).prot_conf.p_level);
165-
channel.prot_conf.p_delay = MIN(Channel::get(0).prot_conf.p_delay, Channel::get(1).prot_conf.p_delay);
162+
channel.prot_conf.flags.p_state = Channel::get(0).prot_conf.flags.p_state || Channel::get(1).prot_conf.flags.p_state ? 1 : 0;
163+
channel.prot_conf.p_level = MIN(Channel::get(0).prot_conf.p_level, Channel::get(1).prot_conf.p_level);
164+
channel.prot_conf.p_delay = MIN(Channel::get(0).prot_conf.p_delay, Channel::get(1).prot_conf.p_delay);
166165

167-
temperature::sensors[temp_sensor::CH1 + channel.channelIndex].prot_conf.state = temperature::sensors[temp_sensor::CH1].prot_conf.state || temperature::sensors[temp_sensor::CH2].prot_conf.state ? 1 : 0;
168-
temperature::sensors[temp_sensor::CH1 + channel.channelIndex].prot_conf.level = MIN(temperature::sensors[temp_sensor::CH1].prot_conf.level, temperature::sensors[temp_sensor::CH2].prot_conf.level);
169-
temperature::sensors[temp_sensor::CH1 + channel.channelIndex].prot_conf.delay = MIN(temperature::sensors[temp_sensor::CH1].prot_conf.delay, temperature::sensors[temp_sensor::CH2].prot_conf.delay);
170-
}
166+
temperature::sensors[temp_sensor::CH1 + channel.channelIndex].prot_conf.state = temperature::sensors[temp_sensor::CH1].prot_conf.state || temperature::sensors[temp_sensor::CH2].prot_conf.state ? 1 : 0;
167+
temperature::sensors[temp_sensor::CH1 + channel.channelIndex].prot_conf.level = MIN(temperature::sensors[temp_sensor::CH1].prot_conf.level, temperature::sensors[temp_sensor::CH2].prot_conf.level);
168+
temperature::sensors[temp_sensor::CH1 + channel.channelIndex].prot_conf.delay = MIN(temperature::sensors[temp_sensor::CH1].prot_conf.delay, temperature::sensors[temp_sensor::CH2].prot_conf.delay);
171169

172170
if (i == 1) {
173171
Channel &channel1 = Channel::get(0);

0 commit comments

Comments
 (0)