The SOC parses our telemetry for index entries and feeds their data
model with assumptions about the resulting data rate. This patch
restores the assignment of index entries to relative data rate.
[2] Full nominal config with 10s cadence
[6] patch to 1s cadence
[7] == [2]
Calibration of ADC readings `HIT` to energy `E` works like this
```
E = MULI HIT * gain
E = ADDI HIT + pedl
```
The `pedl` was calculated as
```
pedl = -$floor(p*gain)
```
where `p` is the ADC reading corresponding to E = 0 keV.
Since `p` is a large magnitude negative number, the limited precision
of the `MULI` instruction parameter causes significant errors in `pedl`.
This patch aims to fis those errors. The new formula for `pedl` is
```
pedl = $floor(-p*$MRND(gain))
```
i.e., we use the same value for `gain` as the `MULI` instruction. This
is now in place for any automatic calibration calculations in
`step_temp_calib.l3`.
For the FS in space we use a fixed precomputed calibration. This is based on
the TVAC FS calibration for T=-36°C, with some adjustments for the changed
`acq_time=6`. The TVAC calib has been saved earlier to
`step_fs_calib-36.calib` with full precision, i.e., without taking `$MRND()`
into account. The awk script `step_fs_calib-36.awk` reverts those
calculations, applies the adjustments, and outputs the adjustes numbers. Since
awk does not have access to `$MRND()`, the script has been changed to output
formulas for `pedl`, including `$MRND()`,
`$MRND(f)` returns the floating point number `f` rounded to exactly
what `MULI R * f` will be compiled to.
STEP calibrates like this:
```
pedl := p*gain
a = MULI HIT * gain
a = ADDI HIT + pedl
```
This leads to large errors in `pedl` due to the limited resolution of `MULI`.
Instead use:
```
pedl = $MRND(p)*gain
```
The commandline flag `-q` shall reset the verbosity to 0, or -1 if it is
already at 0. Do _not_ decrement below -1. `-vq` will set the verbosity to 0,
independendly of earlier options. `verbose` is a module variable that
carries over from earlier `l3.compile()`s.
Fix `l3.diff()` for cases of different length codes. Remove any `None` from
the final list.
The commandline flag `-q` shall reset the verbosity to 0, or -1 if it is
already at 0. Do _not_ decrement below -1. `-vq` will set the verbosity to 0,
independendly of earlier options. `verbose` is a module variable that
carries over from earlier `l3.compile()`s.
Fix `l3.diff()` for cases of different length codes. Remove any `None` from
the final list.