diff --git a/src/epics/util/feCodeGen.pl b/src/epics/util/feCodeGen.pl index c225320268c136b2573c08097bd299db5a1714d0..4bff5e06e1249d5ba34266b9ba145f4e7c8f1915 100755 --- a/src/epics/util/feCodeGen.pl +++ b/src/epics/util/feCodeGen.pl @@ -138,6 +138,7 @@ $rfmTimeSlave = -1; $diagTest = -1; $flipSignals = 0; $virtualiop = 0; +$no_cpu_shutdown = 0; $edcu = 0; $casdf = 0; $globalsdf = 0; @@ -2547,6 +2548,9 @@ if ($adcMaster > -1) { if($dacWdOverride > -1) { print OUTM "EXTRA_CFLAGS += -DDAC_WD_OVERRIDE\n"; } + if ($no_cpu_shutdown > 0) { + print OUTM "EXTRA_CFLAGS += -DNO_CPU_SHUTDOWN\n"; + } # ADD DAC_AUTOCAL to IOPs print OUTM "EXTRA_CFLAGS += -DDAC_AUTOCAL\n"; } else { diff --git a/src/epics/util/lib/Parameters.pm b/src/epics/util/lib/Parameters.pm index c98dbead5d2d8c32b74d1fa1af5989cfaab0a1e9..4487c012debf930b476911ace1689195df983aa0 100644 --- a/src/epics/util/lib/Parameters.pm +++ b/src/epics/util/lib/Parameters.pm @@ -126,6 +126,8 @@ sub parseParams { $::timeSlave = $spp[1]; } elsif ($spp[0] eq "iop_time_slave") { $::iopTimeSlave = $spp[1]; + } elsif ($spp[0] eq "no_cpu_shutdown") { + $::no_cpu_shutdown = $spp[1]; } elsif ($spp[0] eq "rfm_time_slave") { $::rfmTimeSlave = $spp[1]; } elsif ($spp[0] eq "pciRfm") { diff --git a/src/fe/controllerIop.c b/src/fe/controllerIop.c index 9916604e62dde90901ba43904afb93901217f54e..e445fcc362ccd73ef23fa9e98e667e3cdd889a6b 100644 --- a/src/fe/controllerIop.c +++ b/src/fe/controllerIop.c @@ -505,9 +505,6 @@ adcInfo_t *padcinfo = (adcInfo_t *)&adcinfo; // Calculate how many CPU cycles per code cycle cpc = cpu_khz * 1000; cpc /= CYCLE_PER_SECOND; -#ifdef NO_CPU_SHUTDOWN - usleep_range(2,4); -#endif #ifdef NO_CPU_SHUTDOWN @@ -677,6 +674,9 @@ adcInfo_t *padcinfo = (adcInfo_t *)&adcinfo; diagWord |= TIME_ERR_IRIGB;; } } +#ifdef NO_CPU_SHUTDOWN + schedule(); +#endif } /// \> Update duotone diag information