solo.l1l2.l2trigger.set() changes only the given parameters. It does not
imply a .reset(). Those lines were a NOP. We only need to clear none=(),
to prevent any anticoincidences.
The STEP unit EEPROM contains v6 in page 0x00000/0x60000. The ICU
config memory contains v7 in page 0x70000 and v8 in 0x60000. We plan to
write v8 into page 0x10000/0x70000 to not overwrite v6. v7 was never
written to EEPROM. At ICU reboot (after EGAM), the v8 config will the
appear in 0x70000.
This patch creates the STEP config compiled for 0x70000.
A preliminary xml to burn it into EEPORM is included. Missing from that
xml is the restart of the unit after burn.
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
```