From 6722fd6f15fc3d9f722c7ece4d13ffb505cf0418 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 1 Jan 1970 10:32:44 +0900 Subject: move attenuator code out of CH1-only block, so it works for CH2 --- device-functions.c | 96 +++++++++++++++++++++++++++--------------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/device-functions.c b/device-functions.c index cda68ba..4f9cc22 100644 --- a/device-functions.c +++ b/device-functions.c @@ -322,56 +322,8 @@ int Set_Amplitude(int check_possible_only,int pol_override,int override_on,int w set_shiftreg_bits(SR_3, POS_13, ONE_BIT, BIT_LOW); /* set O.POL line low to switch pol relay to -, normally */ } - // Are attenuators used? - int atten_ctl = 0; - - if (attenuator_count(channel) == 1) { - - if (atten_range == 0) { - atten_ctl = BIT_HIGH; - } else { - atten_ctl = BIT_LOW; - } - - // XRLY1 for CH1, XRLY4 for CH2 - set_shiftreg_bits(SR_2, XTR_POS + 1 + (channel*3), ONE_BIT, atten_ctl); - - } else if (attenuator_count(channel) > 1) { - - // octal relay driver is inverted - if ((atten_range < 0) || (atten_range >= max_attens)) { - atten_ctl = 0xff; - } else { - if (channel) { - // shift over 4 positions, out of 8, if CH2 - atten_range += 4; - } - - if (globals.Flash.sequential_attenuators[channel]) { - // For AVRZ-5W-B-LVA, which uses 3 identical 20 dB attenuators. - // 0, 1, 2 or 3 in series are used. - atten_ctl = ~((1 << (atten_range+1)) - 1); - } else { - // For more standard configurations, where different attenuators - // are combined in a binary style - 000, 001, 010, 011, 100, etc - atten_ctl = ~(atten_range+1); - } - } - - I2C_Write(PCF8574+Octal_Relay_Driver, atten_ctl); - } - - if ( (globals.Registers.last_relay_driver_settings[3] != atten_ctl)) { - - globals.Registers.last_relay_driver_settings[3] = atten_ctl; - - if (globals.ChannelState[channel].output_state==output_on) { - globals.Flags.force_output_fully_off=YES; - } - } } else { - if (!globals.Flash.ampl_ranges_for_ch2_only) { /* for CH2 of dual-channel units, use AMPL RANGE pin 2-3 */ set_shiftreg_bits(SR_3, POS_10, TWO_BITS, 1< 1) { + + // octal relay driver is inverted + if ((atten_range < 0) || (atten_range >= max_attens)) { + atten_ctl = 0xff; + } else { + if (channel) { + // shift over 4 positions, out of 8, if CH2 + atten_range += 4; + } + + if (globals.Flash.sequential_attenuators[channel]) { + // For AVRZ-5W-B-LVA, which uses 3 identical 20 dB attenuators. + // 0, 1, 2 or 3 in series are used. + atten_ctl = ~((1 << (atten_range+1)) - 1); + } else { + // For more standard configurations, where different attenuators + // are combined in a binary style - 000, 001, 010, 011, 100, etc + atten_ctl = ~(atten_range+1); + } + } + + I2C_Write(PCF8574+Octal_Relay_Driver, atten_ctl); + } + + if ( (globals.Registers.last_relay_driver_settings[3] != atten_ctl)) { + + globals.Registers.last_relay_driver_settings[3] = atten_ctl; + + if (globals.ChannelState[channel].output_state==output_on) { + globals.Flags.force_output_fully_off=YES; + } + } + globals.Changes.update_amp=YES; globals.ChannelState[channel].amplitude=new_ampl; -- cgit