summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--error_utils.c20
-rw-r--r--flash.c1
-rw-r--r--globals.h3
3 files changed, 21 insertions, 3 deletions
diff --git a/error_utils.c b/error_utils.c
index 503724d..718c40b 100644
--- a/error_utils.c
+++ b/error_utils.c
@@ -647,6 +647,21 @@ int Error_check(ChannelStruct ChannelStateToTest[max_channels])
}
}
+ float real_max_ampl[max_channels];
+ float real_min_ampl[max_channels];
+ for (i=0; i<max_channels; i++) {
+ real_max_ampl[i]=globals.Flash.max_ampl[i];
+ real_min_ampl[i]=globals.Flash.min_ampl[i];
+ }
+
+ // handle AVR-D3-B-MS1, where the two channels must have opposite polarities
+ if ( (globals.Flash.channels==2) && globals.Flash.chans_opposite_polarities && globals.Flash.ChanKey_amplitude) {
+ if (ChannelStateToTest[0].amplitude > 0.0) {
+ real_max_ampl[1] = 0.0;
+ } else {
+ real_min_ampl[1]= 0.0;
+ }
+ }
for (i=0; (i<num_of_chan) && !early_quit; ++i) {
/* Must be changing a setting */
@@ -1048,7 +1063,7 @@ int Error_check(ChannelStruct ChannelStateToTest[max_channels])
/* --- check minimum amplitude --- */
- globals.Constraints.err_min_ampl[i]=globals.Flash.min_ampl[i];
+ globals.Constraints.err_min_ampl[i]=real_min_ampl[i];
if ( (globals.Constraints.err_min_ampl[i]>=0.0 && ChannelStateToTest[i].amplitude<(0.999*globals.Constraints.err_min_ampl[i]))
|| (globals.Constraints.err_min_ampl[i]<0.0 && ChannelStateToTest[i].amplitude<(1.001*globals.Constraints.err_min_ampl[i])) ) {
@@ -1083,7 +1098,8 @@ int Error_check(ChannelStruct ChannelStateToTest[max_channels])
/* --- check maximum amplitude --- */
- globals.Constraints.err_max_ampl[i]=globals.Flash.max_ampl[i];
+ globals.Constraints.err_max_ampl[i]=real_max_ampl[i];
+
if ( (globals.Constraints.err_max_ampl[i]>=0.0 && ChannelStateToTest[i].amplitude>(1.001*globals.Constraints.err_max_ampl[i]))
|| (globals.Constraints.err_max_ampl[i]<0.0 && ChannelStateToTest[i].amplitude>(0.999*globals.Constraints.err_max_ampl[i])) ) {
report_error=amplitude_upper_limit;
diff --git a/flash.c b/flash.c
index 03b0529..781537b 100644
--- a/flash.c
+++ b/flash.c
@@ -462,6 +462,7 @@ static void initFlashValues(FlashStruct *mem)
mem->self_cal_typical_time_sec=0;
mem->prf_limiter=1;
+ mem->chans_opposite_polarities=0;
mem->pcb116c_mon=1; /* more recent ADC, different reading code */
mem->warn_even_if_output_off=0;
diff --git a/globals.h b/globals.h
index a5a1623..bb6b346 100644
--- a/globals.h
+++ b/globals.h
@@ -456,8 +456,9 @@ typedef struct {
char self_cal; /* 242 */
char prf_limiter; /* 243 */
+ char chans_opposite_polarities; /* 244 */
- char spare_padding[12]; /* 244 - padding between common and per-channel sections of the */
+ char spare_padding[11]; /* 245 - padding between common and per-channel sections of the */
/* flash eeprom. Adjust size if variables added to common section, */
/* so that per-channel section starts at 256 */