This document describes the current status of the HENA flight software. The document is maintained in archeological order: the most recent information is at the top.
This software version was uploaded August 21, 2001. The changes made since version 7 are listed below.
Split HENA-M images into hydrogen and oxygen images. The corrected time-of-flight (CTOF) and rear pulse height (PHb) are used to compute the specie. The original ten HENA-M images are used for hydrogen events. A new set of eight low-resolution images are used for oxygen images.
Add software event filter. Looks at raw data before event processing. Rejected events are not analyzed and do not go into images or PHA data. Instead, they are counted in the "rejected event" software counter.
Add command to enable/disable software event filter. Only effects MCP event filter, but the command leaves space for adding an SSD event filter.
This software version was uploaded mid-September, 2000. The changes made since version 6 are listed below.
Subtracting the offset parameter from the measured MCP TOF or the SSD TOF can produce negative numbers. When this occurs, clamp the value at zero.
The software was still assuming that TOF could range from 0..8191 instead of 0..511 of the final hardware. The software that computes the mass was derived from MIMI/CHEMS and requires the user to know the size of the internal lookup table. This is unnecessary and was removed in the new version. The default parameters B1 - B6 were changed accordingly.
In-orbit measurements allow us to choose better breakpoints for classifying MCP and SSD time-of-flight (TOF) values.
Created a table of SSD pixel IDs to reject or accept. Any event with a "reject" pixel id will not be processed. The rejected event is counted in a software accumulator. The SSD_Pileup counter is used (this 16-bit counter will be expanded to 24 bits). H_MEM_STR_LOAD was enhanced to change the table and H_MEM_STR_READ to dump it. The dump is in a new telemetry format with id=0x10.
Categorize SSD events with very small or very large masses as a single class of "bad" events. Note that this subsumes the "heavy" class of earlier versions. The default mass breakpoint table is updated based on in-orbit measurements.
Alarm packets now include the alarm limit in addition to the value that caused the alarm. A spare byte in the packet is used for this.
Only real-time commands are counted in the current executed and rejected counters. Two new counters count macro commands executed and rejected. The new counters are reported in the status packet.
Add a command to clear selected command counter or all command counters. Note: if the "commands executed" counter is cleared, its new value will be one because the reset command is counted after the counter is cleared.
Add a mode that records and telemeters a selected analog channel at 5 Hz. A new command, H_SYS_SCOPE selects a channel to monitor; an invalid channel disables the mode. A new telemetry format is used to send the data.
Events with miniscule start pulses are meaningless and pollute good data. Such events are not accumulated in the images or the PHA data. Instead they are counted in a new accumulator. The valid_rate hardware counter was redundant and was replaced by a software counter for rejected events. A threshold parameter was added for the start pulse.
Also reject events that arrive at a suspect area of the front MCP. The rejected events are counted as above. The upper and lower limit of bad front positions are parameters.
Six macros are available for avoiding the earth and sun in the field of view (FOV). The timing of these macros is determined by the sun and nadir pulses and four new parameters. An earth start macro (#27) is run a parameterized number of sectors before the earth is in the center of the FOV. An earth end macro (#28) is run a parameterized number of sectors after the earth is in the center of the FOV. Similarly, there are sun start (#29) and sun end (#30) macros with their own pair of parameters. There are also a bright start (#31) and bright end (#32) pair of macros that are executed whenever the first bright object enters the FOV and the last bright object leaves the FOV. When these macros are invoked automatically, commands from the macro, or from any macro they call, are not echoed. However, if the macros are invoked in any other way, their commands are echoed. The current macros are nops.
The schedule packet was modified to summarize these operations.
A macro pause command adds the equivalent of time-tagged commands. The first command of a macro can pause until a given MET, then run the desired commands.
Sixteen free bits in the status packet were usurped for reporting the number of free blocks available for macros. Each block holds 32 bytes of data; the number of free blocks can be used to estimate how many more macros can be compiled.
The pulse height data PHf and PHb is scaled down for inclusion in the PHA data. The scaler has been increased by a factor of two to ensure that worst-case pulses fit in the five-bit pulse height field.
Add an alarm count and some data about the last alarm to the status data.
This software version was delivered to SwRI on September 14, 1999. The changes made since version 5 are listed below.
Two parallel particle beams produce two elevations in SSD images, but not MCP images. Either the front and back MCP X coordinates are reversed or the SSD X coordinates are reversed. I flipped the table defining SSD pixels along the X axis. Now, either all three are correct or all three are wrong.
This is the software version that was uploaded July 8, 1999 during thermal vacuum test. The changes made since version 4 are listed below.
Macros are compiled into linked lists of 32-byte code blocks. If a command compiled into a macro ended at the end of a code block, subsequent commands would not be compiled correctly. If such a macro was run, it was almost guaranteed to crash the system.
This is the software version that was delivered for the spacecraft thermal vacuum test at the end of June, 1999. The changes made since version 3 are listed below.
The position of the impact of a particle on the back MCP is calculated by taking the ratio of the wedge (or strip) to the sum of the wedge, strip, and interstitial values. The only correction to this calculation was the inclusion of crosstalk terms from the wedge to the strip and vice-versa. This has proven to be inadequate. Now, the result of the ratio calculations are passed through a large 2-d lookup table to find the position on the back MCP. This table is not created by the flight software, but uploaded with the flight software into an unused area of EEPROM.
Similarly, there is now a 1-d table to correct the front MCP calculation.
Replaced event calculation parameters with more realistic values. These parameters were: hardware offsets, TOF offsets, gain and offset for MCP position calculations, MCP and SSD CTOF breakpoints, and SSD TOF corrections.
The SSD geometry model used by the flight software was updated with sensor positions, pixel pitch, etc.
This is the software version that was included in the redelivery of the flight instrument to SwRI on 2/19/99. The changes made since version 2 are listed below.
If the all-is-well message is missed for 300 consecutive seconds, the shutdown macro should be run. Instead, the software was checking to see if the all-is-well had been missing over the last 300 seconds; this check was done every 300 seconds resulting in a latency of 300-600 seconds until the shutdown macro.
Force time-tag to be propagated from periodic message buffer to rest of system only at nadir. The software was propagating it every subsector.
Note: time-tag propagation is implemented correctly in the boot program.
Add a command to the normal-power macro to turn on SSD preamp power.
The software assumed that the cover telltale was active-high; it is actually active-low.
Now that we have run the full-up system, we can tweak the monitor limits.
The table that maps SSD pixel ids into an X, Y position was wrong.
This version was delivered with the flight instrument to SwRI on December 28, 1998. The changes made since version 1 are listed below.
Make this register a parameter just in case we need to change its value.
Add a new operation to H_SEN_ACT_PWR that turns on the selected actuator power supply (primary or backup), and runs macro 26 when the cover is determined to be open. Macro 26 was added; this macro rewinds the spring, removes power from the wax actuator, and holds the spring until the wax hardens.
Modified shutdown macro to change HV ramp rate so that HVs can be ramped down in ten seconds. The ramp rate is restored at the end of the macro in case HENA does not actually lose power. The low power macro was modified so that the SSD preamp power is also removed.
The monitor limit table was filled in with more realistic limits.
The default SSD register values were changed.
A monitor of the SSD's energy count rate was added. The low response macro does a nop; the high response macro turns off the SSD's preamps. Adding the new monitor created two new limits in the limit table and consequently increased the size of the downlink limit table package.
Added sixteen spares to parameter database. This increases the size of the downlink parameter package. The reason for this change is to obviate the need for future increases in the package size.
The monitoring software assumes that increasing A/D values correspond to increasing analog values. This is not the case for the temperatures. Therefore, the software that reads the A/D uses a table to select which A/D values should be inverted (i.e. 255 - value).
This is the version of software that was used during environmental testing at APL.