Laboratory for Atmospheric and Space Physics (LASP) University of Colorado at Boulder CASSINI ULTRAVIOLET IMAGING SPECTROGRAPH FLIGHT CODE USER’S GUIDE Rev 1 2 3 Description of Change Draft for review Typos. Updated for version 1.1 of flight code Reformatted for webpage Approved Date 9/96 6/97 11/98 1 DOCUMENT PURPOSE .............................................................................................1 2 REFERENCES.............................................................................................................1 3 ABBREVIATIONS AND ACRONYMS.....................................................................2 4 PROGRAMMING UVIS: AN OVERVIEW .................................................................2 5 PROGRAMMING AT LARGE.....................................................................................5 5.1 Turning On/Off Detector High Voltage....................................................................5 5.2 Modifying EUV or FUV Channel Configuration.......................................................6 5.3 Modifying the HDAC Channel Configuration..........................................................6 5.4 Commanding the Ion Pump.....................................................................................7 5 5 Selecting a Housekeeping Format..........................................................................8 5 6 Preventing a DS from Turning on High Voltage......................................................8 5.7 Defining What to Dump and How to Dump It.........................................................9 5.8 Starting a Distributed Sequence...........................................................................10 5.9 Terminating a Distributed Sequence.....................................................................10 5.10 Terminating an Observation Description Command............................................10 5.11 Modifying UVIS Memory Contents......................................................................10 5.12 Executing an Observation...................................................................................12 6 USING DISTRIBUTED SEQUENCES ....................................................................14 6.1 Distributed Sequence Concept............................................................................14 6.2 Distributed Sequence Load Format......................................................................17 6.3 Distributed Sequence Preparation........................................................................18 6.4 Miscellaneous.......................................................................................................18 7 PERFORMANCE ISSUES .......................................................................................18 7.1 Packet Production Rate.........................................................................................19 7.2 Initialization of the FUV and EUV Channels..........................................................20 7.3 Integration Memory Read Out Timing...................................................................20 7.4 Execution of 84Mem_Zero....................................................................................21 8 COMMAND EXECUTION VERIFICATION ............................................................21 8.1 Command Acceptance..........................................................................................22 8.2 ALF Load Acceptance...........................................................................................22 8.3 DS Load Acceptance............................................................................................22 8.4 Command Execution Verification...........................................................................23 9 ERROR REPORTING: WHERE, WHY, AND HOW TO FIX ...............................24 9.1 Loss of Science Data............................................................................................24 9.2 Hardware and Software Problems........................................................................25 9.3 Commanding Failures............................................................................................27 10 NOTES ON DATA ACQUISITION ..........................................................................29 10.1 Science Data Acquisition......................................................................................29 10.2 Housekeeping Data Acquisition............................................................................29 1 DOCUMENT PURPOSE This document is intended for people who program and/or monitor the UVIS instrument. Its main goals are to: • Introduce some concepts used in the RAM code which should be understood before programming the UVIS instrument to acquire science data. • Give an overview on how to program the instrument using direct or distributed commands. • Present information on how to verify the proper execution of commands. • List the errors that can be reported by the RAM and the PROM code and describe the corrective actions that can be taken to fix them. This document presents the UVIS operation from the RAM code point of view. From time to time it will refer also to the PROM code. This document does not intend to detail every command or provide in-depth information on the format of the housekeeping and science packets returned by the instrument. The reader should be familiar with at least the parts of reference (1) and reference (2) that specifically apply to the UVIS instrument. This document assumes that the reader is familiar with the UVIS instrument architecture. Note that this document is based on version 1.1 of the RAM code. 2 REFERENCES (1) CAS-3-281 Telemetry Formats and Measurements. JPL document (2) CAS-3-291 Uplink Formats and Command Tables. JPL document (3) CAS-3-271 Spacecraft Intercommunications. JPL document (4) UVIS Instrument Software Detail Design Document. LASP document (5) UVIS Science Packet Format. LASP document Cassini UVIS Flight Code User’s Guide 11/98 1 (6) Cassini Command And Data Subsystem - Bus Interface Unit Design Package. JPL document (7) UVIS Instrument Microprocessor and Logic Description Document. LASP document (8) CAS-4-2084 UVIS Functional Requirement Document. JPL document (9) UVIS Operational Procedures. LASP document 3 ABBREVIATIONS AND ACRONYMS A/D ALF ASCII BIU bps CDS DS DTSTAR EUV FIFO FUV HDAC HSP HVPS MRO ms n/a OASIS-CC ODC PROM pps RAM RTI SSR UVIS Analog to Digital Accelerated Load Format American Standard Code for Information Interchange Bus Interface Unit Bits per second Command and Data Subsystem Distributed Sequence Dead Time Start Extreme Ultra Violet First In First Out Far Ultra Violet Hydrogen Deuterium Absorption Cell High Speed Photometer High Voltage Power Supply Memory Read Out Millisecond Non applicable Generic name for the support equipment used by UVIS Observation Description Command Programmable Read-Only Memory Packets per second Random Access Memory Real Time Interrupt Solid State Recorder Ultra Violet Imaging Spectrograph 4 PROGRAMMING UVIS: AN OVERVIEW Programming the UVIS instrument is done by (1) defining the sequences of commands that will accomplish the program; and (2) sending these commands to UVIS RAM code for execution. Command sequences can be stored on the ground (for example, as part of an OASIS-CC command script) or in the spacecraft CDS memory. Or they can be stored within the UVIS memory. Cassini UVIS Flight Code User’s Guide 11/98 2 Direct Commands When command sequences are stored on the ground or in the spacecraft memory, the sequencing (i.e., the timing between each command in the command sequence) is controlled by the ground computer or by the spacecraft computer. This type of commanding is referred as direct commanding. Direct commands are executed immediately by the flight code provided that no other command is currently executing. Otherwise they are stored internally in a FIFO buffer and executed as soon as possible. Distributed Commands When they are stored within the UVIS program memory, the command sequences contain timing information that allows the RAM code to sequence their execution. This type of commanding is referred to as distributed commanding (because it is not under the control of the central spacecraft processor). Command sequences stored in the UVIS memory are referred to as Distributed Sequences (DS). The execution of a DS is started by a direct command called 84TRIGGER. Command Types The RAM code executes a large set of commands (see [2]). Some commands act only on one element of UVIS. Some more complex commands can act on multiple elements of UVIS. In particular, scientific observations are defined via Observation Description Commands (ODC). ODCs put UVIS under the correct configuration and control the data acquisition process for a particular science observation. The following rules govern the interaction between commands: • Only one non-ODC command can be executed at one time. • Only one ODC can be executed at one time. • Non-ODC commands can be executed while UVIS is executing the data acquisition portion of an ODC. • If UVIS is executing an ODC and receives a non-ODC command: ◊ If the command does not affect the instrument configuration (as far as the channels being used are concerned), then data acquisition does not stop while the non-ODC command is executed. Cassini UVIS Flight Code User’s Guide 11/98 3 ◊ • If the command affects the configuration of the channels providing data, then data acquisition stops while the command is executed. Data acquisition then restarts under the new instrument configuration. If UVIS is running an ODC and receives another ODC: ◊ The data acquisition under the first ODC is terminated ◊ The new ODC is executed to re-configure UVIS ◊ And data acquisition is re-started under the new configuration. Data Storage Although the HSP and the HDAC channels produce data continuously, the EUV and FUV channels burst up to 64K 16-bit words at the end of one integration period. For this reason, most of the UVIS memory is used as a buffer where “ready-to-be-transmitted” science packets are stored awaiting pickup by the spacecraft CDS. Up to 720 science packets can be queued before UVIS starts loosing data. It is the user’s responsibility to make sure that the spacecraft telemetry mode accommodates the rate and volume of the data produced by UVIS and is able to downlink the data remaining in UVIS memory after an observation is terminated. The UVIS RAM code does not account the spacecraft telemetry mode: whenever the spacecraft requests a UVIS science packet it is passed to the CDS if one is available. Cassini UVIS Flight Code User’s Guide 11/98 4 packet Transmit Packet packet BIU memory Queue packet Load packet Queue packet Load packet Queue packet Load packet Queue packet Load packet data EUV packet FUV Packet Queue UVIS memory HDAC HSP 5 PROGRAMMING AT LARGE 5.1 TURNING ON/OFF DETECTOR HIGH VOLTAGE NAME 84EUV_HV_LEVEL 84FUV_HV_LEVEL 84HDAC_HV_LEVEL 84HSP_HV_LEVEL PURPOSE TURN ON/OFF THE EUV CHANNEL HVPS AND SELECT THE CHANNEL VOLTAGE LEVEL. TURN ON/OFF THE FUV CHANNEL HVPS AND SELECT THE CHANNEL VOLTAGE LEVEL. TURN ON/OFF THE HDAC CHANNEL HVPS TURN ON/OFF THE HSP CHANNEL HVPS The HVPS on/off commands are 84EUV_HV_LEVEL, 84FUV_HV_LEVEL, 84HDAC_HV_LEVEL, and 84HSP_HV_LEVEL. These commands affect the corresponding channel even if the channel is not integrating. They are RAM code commands only. Note: The EUV and the FUV HVPS should not be set to a level greater than 1. The RAM code does not prevent the setting of the EUV and the FUV HVPS to a level greater than 1. Cassini UVIS Flight Code User’s Guide 11/98 5 5.2 MODIFYING EUV OR FUV CHANNEL CONFIGURATION NAME 84EUV_SLIT_POS 84FUV_SLIT_POS 84OC_COV_POS 84TST_PULSE PURPOSE SELECT THE EUV CHANNEL SLIT POSITION SELECT THE FUV CHANNEL SLIT POSITION SELECT THE EUV CHANNEL OCCULTATION MIRROR POSITION TURN ON/OFF THE EUV AND FUV CHANNEL TEST PULSES The commands 84EUV_SLIT_POS, 84FUV_SLIT_POS and 84OC_COV_POS, 84TST_PULSE modify the configuration of the EUV and FUV channel. These commands affect the corresponding channel even if the channel is not integrating. They are RAM code commands only. The EUV and the FUV slits can be moved clockwise or counter-clockwise. For the RAM code “clockwise” has the following meaning (starting from the highresolution position): NEXT POSITION LOW RESOLUTION OCCULTATION LOW RESOLUTION HIGH RESOLUTION COMMANDED POSITION VALUE (EUV CHANNEL) 2 3 0 1 COMMANDED POSITION VALUE (FUV CHANNEL) 3 2 1 0 Note: At the first sleep-to-active transition, the RAM code moves both slits to the high-resolution position and the occultation mirror to the closed position. Note: The commands 84FUV_SLIT_POS and 84EUV_SLIT_POS contain a duration field that is only taken into account when the commands are part of a DS. 5.3 MODIFYING THE HDAC CHANNEL CONFIGURATION NAME 84HDAC_D_FIL_SELECT 84HDAC_H_FIL_SELECT 84HDAC_D_FIL_LIM 84HDAC_H_FIL_LIM 84HDAC_TBL_LOAD PURPOSE SELECT THE D CELL FILAMENT SELECT THE H CELL FILAMENT SET THE MAXIMUN VOLTAGE THAT CAN BE APPLIED TO THE D CELL FILAMENT SET THE MAXIMUM VOLTAGE THAT CAN BE APPLIED TO THE H CELL FILAMENT LOAD THE H AND D CELL VOLTAGE TABLES Cassini UVIS Flight Code User’s Guide 11/98 6 The commands 84HDAC_D_FIL_SELECT, 84HDAC_H_FIL_SELECT, 84HDAC_D_FIL_LIM, 84HDAC_H_FIL_LIM, and 84HDAC_TBL_LOAD modify the configuration of the HDAC channel. They are RAM code commands only. The commands 84HDAC_D_FIL_SELECT and 84HDAC_H_FIL_SELECT affect the HDAC channel even if the channel is not integrating. The command 84HDAC_TBL_LOAD loads the H and D cell filament voltage tables. This command has no effect on the channel when the channel is not integrating. The commands 84HDAC_D_FIL_LIM, 84HDAC_H_FIL_LIM define the maximum voltage that will be applied to the D and H cell filaments, respectively. If either command is sent while the channel is not integrating, they will affect the HDAC channel at the next integration. If either command is sent while the channel is integrating, they affect the HDAC channel immediately. The main purpose of these two commands is to prevent accidental usage of the filament during bench testing. Note: When the RAM code is started, both H and D cell filament voltage limits are set to 7. Note: At the first sleep-to-active transition, the RAM code resets the filament selection to filament 1 for both the H and D cells. 5.4 COMMANDING THE ION PUMP NAME 84ION_PUMP_ON 84ION_PUMP_OFF PURPOSE TURN ON THE FUV CHANNEL ION PUMP TURN OFF THE FUV CHANNEL ION PUMP The ion pump is turned on using the 84ION_PUMP_ON command. If the duration field of the command is set to zero, the ion pump is turned on forever. The ion pump is turned off by the 84ION_PUMP_OFF command. Note: When a 84ION_PUMP_ON command is received while the ion pump is already on, the duration field of the new command is used. It is not added to the duration of the previous 84ION_PUMP_ON command. Note: The RAM is set up to minimize pump “motor boating” -- when the detector internal pressure is very low, the ion pump HVPS regulator constantly switches the power supply on and off. The RAM code turns off the ion pump HVPS after a number of consecutive pressure readings are found to be below a threshold. Cassini UVIS Flight Code User’s Guide 11/98 7 Then the RAM code turns the HVPS back on after a number of seconds. When the RAM code is started, the threshold is set to 0 and the off/on timer is set to 10 minutes. These values can be modified using the memory modification commands (see Section 5.11 below). The addresses of the locations to modify are: PURPOSE ION PUMP OFF THRESHOLD VALUE ION PUMP ON DELTA TIME NUMBER OF CONSECUTIVE READING ADDRESS TO MODIFY VALUE TYPE (in hex) 6A4C 16-BIT INTEGER CORRESPONDING TO THE RAW A/D READING VALUE BELOW WHICH THE ION PUMP SHOULD BE TURNED OFF 6A4D (most significant) 32-BIT INTEGER — THE and 6A4E (least NUMBER OF RTI BEFORE significant) NEXT TURN ON 6A4F 16-BIT INTEGER 5.5 SELECTING A HOUSEKEEPING FORMAT NAME 84HK_SELECT PURPOSE SELECT ONE OF THE TWO HOUSEKEEPING PACKET FORMATS. The 84HK_SELECT command selects a housekeeping format. Two formats are available: normal and extended MRO (MRO stands for Memory Read Out). The normal format is the default format. It carries all the instrument health and state information and also contains the dump of 16 consecutive memory addresses (see section 5.7). The extended MRO format carries minimal health and state information and contains the dump of 46 consecutive memory addresses (see section 5.7). 5.6 PREVENTING A DS FROM TURNING ON HIGH VOLTAGE NAME 84HV_SEQ_ENA PURPOSE ALLOW/PREVENT A DS TO TURN ON A CHANNEL HVPS The command 84HV_SEQ_ENA can be used to prevent (or allow) a DS from turning on a detector HVPS. The main purpose of this command is to prevent Cassini UVIS Flight Code User’s Guide 11/98 8 mistakes during instrument and software checkout while the instrument is on the bench. This is a RAM code command only. Note: When the RAM code is started, turning on high voltage power supply from a DS is enabled for all four channels. 5.7 DEFINING WHAT TO DUMP AND HOW TO DUMP IT NAME 84MEM_DUMP 84MEM_DUMP_FAST PURPOSE SET THE END POINTS OF A MEMORY DUMP ALLOW MEMORY DUMPING VIA THE SCIENCE CHANNEL The commands 84MEM_DUMP and 84MEM_DUMP_FAST define how UVIS memory is dumped. Dumping memory can be useful when tracking a problem or when the contents of a memory region need to be verified (after a load for example). The command 84MEM_DUMP_FAST is not processed by the PROM code. 84MEM_DUMP sets the starting address of the memory dump. The ending address is derived by the RAM code from the 84MEM_DUMP command. In housekeeping packets, the memory dump slots (16 slots in the “normal format”, and 46 slots in the “extended MRO” format) are always filled with the contents of consecutive memory addresses. For example, assume a dump request with a starting address of 0 and ending address of 8, the RAM code will continuously dump address 0 to 15 (if in the “normal” format) or 0 to 45 (if in the “extended MRO” format). The PROM code dumps data between the addresses defined by the 84MEM_DUMP command and uses the memory dump slots as a circular buffer. When the RAM code receives a 84MEM_DUMP_FAST command, the contents of the memory region defined by the last 84MEM_DUMP command are dumped once, via the science stream using fast memory dump packets. Note: The fast memory dump packets are treated by the RAM code as any other science packets. They may be queued in the “ready-to-be-transmitted” queue before they are passed to the CDS. This makes the dumping of the memory where science packets are queued somewhat tricky (as fast memory dump packets may be written over the memory to be dumped). The packets are generated as fast as possible, regardless of the actual telemetry rate. Note: When the RAM code is initialized, the starting dump address is set to a memory region that contains the RAM code version number. The first 2 16-bit words of the dump display this information in ASCII (for example, “1.0A”). The first character indicates the main release number, the third character the sub- Cassini UVIS Flight Code User’s Guide 11/98 9 release number. The fourth and last character indicates the release status (A for an alpha test release, B for a beta test release, space of an official release). 5.8 STARTING ADISTRIBUTED SEQUENCE NAME 84TRIGGER PURPOSE START THE EXECUTION OF DS Starting a DS is accomplished by executing a 84TRIGGER command. This command is rejected if the DS buffer defined in the command is invalid or if the distributed sequence defined in the command does not exist. This is a RAM code only command. 5.9 TERMINATING A DISTRIBUTED SEQUENCE NAME 84SEQ_HALT PURPOSE TERMINATE THE EXECUTION OF A DS To terminate the execution of a DS, send the 84SEQ_HALT command. If when this command is received, an ODC is executing, data acquisition under the ODC is terminated: integration is disabled on all the integrating channels, all HVPS are turned off, FUV and EUV pulses are disabled, and all currently “being filled” science packets are put into the “ready-to-be-transmitted” queue. The execution of the current DS is also interrupted; the remaining commands of the DS are not executed. This is a RAM code only command. 5.10 TERMINATING AN OBSERVATION DESCRIPTION COMMAND NAME 84SEQ_HALT PURPOSE TERMINATE THE EXECUTION OF A ODC To terminate the execution of an ODC started as a direct command, use the 84SEQ_HALT command. This has the same effect as for an ODC started from a DS (see section 5.9). This is a RAM code only command. 5.11 MODIFYING UVIS MEMORY CONTENTS NAME 84MEM_MOD_ENA 84MEM_ZERO 84MEM_SET 84LOAD_SEQ PURPOSE ENABLE 84MEM_ZERO AND 84MEM_SET ZERO PART OF THE UVIS MEMORY SET ONE MEMORY LOCATION TO A VALUE WRITE THE DATA CONTAINED IN THE COMMAND IN UVIS MEMORY. Cassini UVIS Flight Code User’s Guide 11/98 10 The commands 84MEM_MOD_ENA, 84MEM_ZERO, 84MEM_SET, and 84LOAD_SEQ modify the contents of the UVIS memory. 84MEM_ZERO and 84LOAD_SEQ are RAM code only commands. Both 84MEM_ZERO and 84MEM_SET must be immediately preceded by the 84MEM_MOD_ENA command. In general, the 84LOAD_SEQ is used to load a DS in one of the two DS buffers. But it can also be used to re-write a portion of the UVIS memory (see Section 6). Note: Memory modification is enabled by the 84MEM_MOD_ENA command. It is disabled by the next non-84MEM_MOD_ENA command regardless of the origin of the command (direct command or distributed sequence command). This can make memory modification via direct command tricky when a distributed sequence is executing. Note: The 84MEM_ZERO command cannot reset more than one memory page (64K words) at a time. The command is rejected if the memory end points that it defines are not in the same memory page. In addition because of performance issue (see Section 9), it is recommended that no more than 4096 consecutive addresses be zeroed per command. Note: It may happen that rather than zeroing a contiguous set of memory, you would like to write a non-zero value. This can be done by loading in address 6A63 (hex) the value to use before executing the 84MEM_ZERO command. Don’t forget to re-write 0 at address 6A63 (hex), using the 84MEM_SET command. Note: 84MEM_ZERO, 84MEM_SET, and 84LOAD_SEQ should be used with great care as RAM does not check the validity of the addresses to modify. For example, one can modify RAM code memory with any of these last three commands. Cassini UVIS Flight Code User’s Guide 11/98 11 5.12 EXECUTING AN OBSERVATION NAME 84HSPGEN_EXEC 84HDAC_EXEC 84UVSIMPLE_EXEC 84UVPHOTO_EXEC 84UVGEN_EXEC 84GENERIC_EXEC PURPOSE EXECUTE AN HSP-ONLY EXPERIMENT EXECUTE AN HDAC-ONLY EXPERIMENT EXECUTE A ONE WINDOW, FUV OR EUV EXPERIMENT EXECUTE A COMBINED EUV, FUV, HPS AND HDAC (IN PHOTOMETRY MODE) EXPERIMENT. ONLY ONE WINDOW CAN BE DEFINED FOR THE EUV AND THE FUV CHANNELS. EXECUTE A GENERIC FUV-ONLY OR EUVONLY EXPERIMENT. UP TO 10 WINDOWS CAN BE DEFINED. EXECUTE A GENERIC EXPERIMENT USING ANY COMBINATION OF THE FOUR DETECTORS. EUV AND FUV SETUP CAN BE DEFINED WITH UP TO 10 WINDOWS. Experiments are defined via Observation Description Commands (ODC). These are commands that (1) completely define the instrument setup and (2) control the data acquisition process after the instrument has been set up. ODCs are RAM code only commands. The execution of an ODC has two distinct phases: (1) An instrument setup phase in which each channel is configured according to the ODC parameters. This phase can take from less than 0.125 seconds to up to 23.0 seconds, depending on the task to accomplish. (2) A data acquisition phase in which the RAM code answers the channel interrupts, collects the channel data, and prepares the channel packets for transmission. Cassini UVIS Flight Code User’s Guide 11/98 12 Each channel configuration is defined via the following set of parameters: HSP PARAMETERS INTEGRATION TIME COMPRESSION HDAC PARAMETERS DWELL DURATION FILAMENT VOLTAGE TABLE FILAMENT SELECTION COMPRESSION FUV AND EUV PARAMETERS INTEGRATION TIME WINDOW PARAMETERS MECHANISM SELECTION COMPRESSION PURPOSE DEFINE THE INTEGRATION TIME FROM 1 MS TO 8 MS DEFINE THE COMPRESSION ALGORITHM PURPOSE DEFINE HOW LONG THE RAM CODE SHOULD STAY AT ONE FILAMENT VOLTAGE SETTING BEFORE STEPPING TO THE NEXT VOLTAGE SETTING. THIS IS EXPRESSED IN MULTIPLES OF THE DETECTOR INTEGRATION TIME (0.125 MS) FOR EACH CELL THE RAM CODE CONTINUOUSLY STEPS THROUGH A 16ENTRY TABLE THAT DEFINES FILAMENT VOLTAGES. THE STEPPING RATE IS DEFINED BY THE DWELL DURATION PARAMETER. DEFINE WHICH FILAMENT TO USE DEFINE THE COMPRESSION ALGORITHM PURPOSE DEFINE THE INTEGRATION TIME FROM 0.125 MS TO 8191 SEC. DEFINE THE NUMBER OF WINDOWS TO BE USED AND EACH WINDOW’S CHARACTERISTICS DEFINE WHICH SLIT TO USE AND WHICH OCCULTATION MIRROR POSITION TO USE DEFINE THE COMPRESSION ALGORITHM In fact, each ODC requires more parameters than described above. These parameters are needed by the RAM code to interpret the ODC correctly. They are not relevant to UVIS scientific aspects. See CAS-3-291 for details on these commands. Cassini UVIS Flight Code User’s Guide 11/98 13 Four compression algorithms are currently defined in the RAM code: COMPRESSION ALGORITHM NO COMPRESSION 8_BIT SQRT-9 SQRT-8 PURPOSE ALL 16 BITS ARE RETURNED ONLY THE LOW 8 BITS ARE RETURNED THE COMPRESSED VALUE IS RETURNED USING 9 BITS AND IS COMPUTED USING THE FOLLOWING ALGORITHM: IF VALUE > 128 COMP. VALUE = SQRT(VALUE * 2) + 128 ELSE COMP. VALUE = VALUE END IF SAME AS SQRT-9, BUT ONLY THE LOW 8 BITS ARE RETURNED. Note: Each EUV and FUV window is defined using four parameters: (1) the upper left corner coordinates of the window, (2) the lower right corner coordinates of the window, (3) the spatial binning to use, and (4) the spectral binning to use. The window corners are defined in a 0-1023 (spectral dimension) * 0-63 (spatial dimension) space. In the spectral dimension, the wavelength increases with the position. Binning in the spectral dimension can be from 0 (no binning) to 1023 (all spectral information is compressed into one measurement). Binning in the spatial dimension can be from 0 (no binning) to 63 (all spatial information is compressed into one measurement). Note: when an ODC is used as a direct command, its duration field is ignored. This field is only taken into account when a ODC is part of a DS. Note: the setup phase of an ODC is included in the ODC duration. 6 USING DISTRIBUTED SEQUENCES 6.1 DISTRIBUTED SEQUENCE CONCEPT For UVIS, a Distributed Sequence (DS) is a memory-resident list of commands that are executed sequentially and terminated by an 84SEQ_HALT command. The execution of a DS starts at the first command of the DS and goes down the list of commands until a 84SEQ_HALT command is encountered. The timing information between each command execution is (for some, but not all the commands) contained in the command itself (in a parameter called DURATION), or it can be expressed using the 84DELAY command. Cassini UVIS Flight Code User’s Guide 11/98 14 For example, assume the following list of commands: 84GENERIC_EXEC, DURATION => 1000... 84HDAC_EXEC, DURATION => 150... 84MEM_DUMP,... 84MEM_DUMP_FAST 84DELAY 200 64UVSIMPLE_EXEC, DURATION => 500 84SEQ_HALT When this DS is executed, the following occurs: t (sec) WHAT DATA ACQUISITION STATUS 0 84GENERIC_EXEC is executed. Data acquisition started in the setup defined by 84GENERIC_EXEC. 1000 84HDAC_EXEC is executed. Data acquisition stopped and restarted under the setup defined by 84HDAC-EXEC. 1150 84MEM_DUMP and 84MEM_DUMP_FAST are executed. Data acquisition still continues under the setup defined by 84HDAC_EXE. 1150 84DELAY Data acquisition is stopped. 1350 84UVSIMPLE is executed. Data acquisition is re-started under the setup defined by 84UVSIMPLE 1850 DS execution is terminated. Data acquisition is stopped. UVIS goes into a “sleep” configuration. Note that in the example above, the 84DELAY command stops the execution of the 84HDAC_EXEC command. One way to provide the functionality of an 84DELAY command without interfering with the execution of an ODC is, for example, to execute an 84FUV_SLIT_POS without moving the FUV slit. A DS load is a group of Distributed Sequences that are uplinked to UVIS as one unit using the 84LOAD_SEQ commands. The size of a DS load is limited by the size of the buffers allocated in UVIS to store Distributed Sequences: 12286 16-bit words per buffer. Two buffers are used to store DS loads. They are at address 1A001 (hex) and 1D001 (hex) The intent is to execute from one Cassini UVIS Flight Code User’s Guide 11/98 15 buffer, thus allowing the other to be loaded at any time. Under this scheme, UVIS will be executing from one buffer during one planning period. During the next planning period, it will be executing from the other buffer. In a DS load the Distributed Sequences are numbered from 0 to n, where n is the last DS in the load. For example, this is a 3 Distributed Sequences load (DS 0, DS 1 and DS 2): 84GENERIC_EXEC.... 84HDAC_EXEC.... 84MEM_DUMP,... 84MEM_DUMP_FAST 84DELAY 64UVSIMPLE_EXEC.... 84SEQ_HALT 84HSP_GEN... 84UVSIMPLE... 84SEQ_HALT 84UVGEN_EXEC 84SEQ_HALT start of DS 0 end of DS 0 start of DS 1 end of DS 1 start of DS 2 end of DS 2 As explained in Section 5.8, execution of a DS is started using the 84TRIGGER command. Cassini UVIS Flight Code User’s Guide 11/98 16 6.2 DISTRIBUTED SEQUENCE LOAD FORMAT PTR TO PTR TABLE # OF DS DS #0 DS #1 DS #2 DS #3 DS #N PTR TO DS #0 PTR TO DS #1 PTR TO DS #2 PTR TO DS #N CHECKSUN A DS load is composed of four parts: (1) the distributed sequences themselves; (2) a table of pointers to each of the distributed sequences; (3) a checksum word used to regularly monitor the integrity of the DS load in UVIS memory and (4) a pointer to the top of this table of pointers. This last item is the first word of the distributed sequences load. All pointer values are expressed in the number of 16-bit words from the first word (word 0) Cassini UVIS Flight Code User’s Guide 11/98 17 .6.3 DISTRIBUTED SEQUENCE PREPARATION Currently the easiest way to create a DS load is to: • Create a CSTOL procedure that represents the DS load. • Execute this CSTOL procedure, recording the binary output of the OASIS-CC command port. • Run this binary output through two utility tasks. The first (seq2ds) creates a file in the format of a DS load (see paragraph 6.2). The second (ds2load) generates the 84LOAD_SEQ commands that will uplink the DS load. This procedure is detailed in (9) under the name of UVIS-OPS-0010. Later on, when the UVIS ground software is fully developed, it is expected that the tools used to generate DS loads and create the associated 84TRIGGER command requests will be integrated in a seamless fashion in the UVIS Planning and Scheduling software. 6.4 MISCELLANEOUS In the UVIS DS concept, the commands within a DS are supposed to be executed sequentially. However, it is easy to create a DS that repeats itself over and over by forcing the DS to “trigger” itself. The repetition can only be terminated via a 84SEQ_HALT sent as a direct command. The only restriction is that the size of the seconds command of the DS is 2 words (for instance an 84DELAY command). For example, this DS will execute forever (assuming that the DS resides in the first of the two DS buffers and is DS number 3): 84UVSIMPLE_EXEC,... 84DELAY,0 84HDAC_EXEC,... 84TRIGGER,Buffer => BUFFER_1,Sequence ID => 3 7 PERFORMANCE ISSUES The following performance issues need to be taken into account when programming the UVIS instrument: the packet production rate, the timing of the setup of the FUV and EUV channels, and the rate at which the EUV and FUV channels integration memories are read. Note that all the timing measurements listed below are for the CPU clock running at 12 Mhz. Cassini UVIS Flight Code User’s Guide 11/98 18 7.1 PACKET PRODUCTION RATE The packet production rate of an experiment needs to be computed and matched with the spacecraft packet collection rate. Two packet collection rates exist for UVIS: • Normal rate : 37 packets every 64 seconds (i.e., 0.578 pps, equivalent to 5032 bps). • Occultation rate : 236 packets every 64 seconds (i.e., 3.687 pps, equivalent to 32096 bps). The instrument packet production rate is the sum of each channel packet production rate. This is indicated by the following table (where cf is the compression factor, which is equal to 1.0 (when NO_COMPRESSION), 0.5 (when 8_BIT compression or SQRT_8 compression) or 0.5625 (when SQRT_9 compression). Int is the integration time, size is the number of pixels returned per integration (for the EUV or the FUV channel) and win is the number of windows defined (again for EUV or the FUV channel). Channel HDAC HSP FUV EUV TOTAL Packet Production Rate Computation Algorithm (in packets/sec) 0.01518 * cf (0.00188 * cf)/int 16 * cf * size/((8480 -(win - 1) * 48) * int) 16 * cf * size/((8480 -(win - 1) * 48) * int) Packet Production Rate (in packets/sec) + + + = For example, assume an experiment with the following parameters: HDACcompression: SQRT_9 HPS compression: NO_COMPRESSION, integration: 2 ms EUV compression: SQRT_9, integration: 40 seconds, 65536 pixels (full image), 1 window FUV compression: NO_COMPRESSION, integration: 60 seconds, 6384 pixels (quarter of an image), 1 window Cassini UVIS Flight Code User’s Guide 11/98 19 The packet production rate for this experiment is: Channel HDAC HSP FUV EUV TOTAL Packet Production Rate Computation Algorithm (in packets/sec) 0.01518 * 0.5625 (0.00188 * 1) /0.002 (16 * 1 * 16384) / (8480 * 60) (16 * 0.5625 * 65536) / (8480 * 40) Packet Production Rate (in packets/sec) 0.0085 + 0.940 + 0.515 + 1.739 = 3.2025 As indicated above, the instrument can buffer up to 720 packets. Therefore, the instrument can be programmed to produce packets at higher rates than the telemetry collection for a short period of time. 7.2 INITIALIZATION OF THE FUV AND EUV CHANNELS Setting up UVIS to acquire FUV and/or EUV data can take as much as 10 seconds per channel. This is because the following activities have to take place for each channel: • The mechanisms are moved (0.250 ms per mechanism step). • The integration memories are zeroed (around 2.7 sec). • The indirection table is initialized (around 3.5 sec). • The window definitions are overlaid on the indirection table (up to around 3.5 sec). 7.3 INTEGRATION MEMORY READ OUT TIMING The FUV and EUV channels present a problem insofar as it is necessary to insure that the processor has time to read the contents of an integration memory while the UVIS hardware integrates data in the other memory. In other words, the channel integration time must be greater than the time it takes the processor to read the contents of an integration memory. As a rule of thumb, when no other activities are going on, it takes around 0.127 ms to read and store a pixel value without compression, and 0.157 ms when the selected compression is SQRT_9. RAM code activities such as reading the FUV integration memory and reading the EUV integration memory are timeshared. If both the FUV and the EUV integration memories are being read, the RAM code reads 64 pixels from the FUV memory, then 64 pixels from the EUV memory, and so forth. This has to be Cassini UVIS Flight Code User’s Guide 11/98 20 taken into account when computing how long it takes to read an integration memory. Following is a list of the major activities and their individual duration (i.e., the duration of their timeshared slot when running) Activity Read EUV integration memory (64 pixels - no compression) Read FUV integration memory (64 pixels - no compression) Move science packet to packet queue Move science packet to BIU memory Fast dump UVIS memory Check UVIS memory (no error). This activity is always running. Move housekeeping packet to BIU memory Copy command from BIU memory Execute Command Overhead Time Slot Duration 7.84 ms 7.84 ms 2.69 ms 3.42 ms 2.68 ms 2.57 ms 1.02 ms up to 4.0 ms variable 0.170 ms 7.4 EXECUTION OF 84MEM_ZERO The execution of the 84MEM_ZERO command is not timeshared with other activities. Therefore it is recommended that no more than 4096 memory locations be zeroed per command (that will take 10.5 ms). 8 COMMAND EXECUTION VERIFICATION High-level verifications can be accomplished to verify that a command or an ALF load or DS load has been accepted. They are listed below in paragraphs 8.1, 8.2 and 8.3. In addition, the execution of some commands can be verified by their impact on the instrument telemetry. This is described in paragraph 11.4. Very often, a verification can be accomplished in more than one way. Note: The instrument returns the opcode of the last processed command in S.3250 (JPL 3-281 label: LAST CMD, OASIS-CC mnemonic: LAST_CMD value). Cassini UVIS Flight Code User’s Guide 11/98 21 8.1 COMMAND ACCEPTANCE Verification 1: No commands are rejected (see paragraph 9.3). Alternate verification 2: The number of accepted commands increases correctly. The number of accepted commands is reported in S-3257 (JPL 3-281 name: ACC CMD CTR, OASIS-CC mnemonic: ACCEPTED CMDS). The PROM code zeroes this measurement at the beginning of every housekeeping data collection period. 8.2 ALF LOAD ACCEPTANCE Verification 1: No ALF blocks are reported missing or rejected during the ALF load uplink (see Section 9.3). Alternate verification 2: The number of ALF blocks reported by the PROM code is equal to the number of blocks transmitted. The number of ALF blocks received is reported in S-3254 (JPL 3-281 name: ACC ALF/DS CTR, OASISCC mnemonic: ACCEPTED ALFDS) and in S-3259 (JPL 3-281 label: ACC ALF/DS OVF, OASIS-CC mnemonic: ACCEPTED ALFDS_OVFLW). The PROM code zeroes these measurements at the beginning of every housekeeping data collection period. 8.3 DS LOAD ACCEPTANCE Verification 1: No DS blocks are reported missing or rejected during the DS load uplink (see Section 9.3). Alternate verification 2: S-3251, bit 10 is set to 0 after the DS load has been uplinked (see Section 9.3). Alternate verification 3: The number of DS blocks reported by the RAM code is equal to the number of blocks transmitted. The number of DS blocks received is reported in S-3254 (JPL 3-281 name: ACC ALF/DS CTR, OASIS-CC mnemonic: ACCEPTED ALFDS) and in S-3259 (JPL 3-281 label: ACC ALF/DS OVF, and OASIS-CC mnemonic: ACCEPTED ALFDS_OVFLW). Cassini UVIS Flight Code User’s Guide 11/98 22 8.4 COMMAND EXECUTION VERIFICATION COMMAND NAME 84EUV_HV_LEVEL 84EUV_SLIT_POS 84FUV_HV_LEVEL 84FUV_SLIT_POS 84HDAC_D_FIL_LIM 84HDAC_D_FIL_SEL 84HDAC_H_FIL_LIM_ 84HDAC_H_FIL_SEL 84HDAC_HV_LEVEL 84HDAC_TBL_LOAD 84HK_SELECT 84HSP_HV_LEVEL 84HV_SEQ_ENA 84ION_PUMP_OFF 84ION_PUMP_ON 84MEM_DUMP 84MEM_DUMP_FAST 84MEM_MOD_ENA 84MEM_SET 84MEM_ZERO 84OC_COV_POS 84TST_PULSE WHERE AND WHAT TO LOOK FOR JPL: S-3202 OASIS-CC: EUV HIGH_VOLTAGE JPL: S-3204 OASIS-CC: EUV SLIT_POSITION JPL: S-3210 OASIS-CC : FUV HIGH_VOLTAGE JPL: S-3214 OASIS-CC: FUV SLIT_POSITION Need to look at science data header JPL: S-3237, bit 3 OASIS-CC: HDAC D_FILAMENT_CTL Need to look at science data header JPL: S-3236, bit 3 OASIS-CC: HDAC H_FILAMENT_CTL JPL: S-3218 OASIS-CC: HDAC HIGH_VOLTAGE Need to look at science data header Change in housekeeping format JPL: S-3226 OASIS-CC: HSP HIGH_VOLATGE JPL: S-3251, bits 6, 7, 8 and 4 OASIS-CC: PGM_FLAG_1 HDAC_HV_DS PGM_FLAG_1 HSP_HV_DS PGM_FLAG_1 EUV_HV_DS PGM_FLAG_1 FUV_HV_DS JPL: S-3212 OASIS-CC: FUV IOP_HVPS JPL: S-3211 and S-3212 OASIS-CC: FUV IOP_PRES FUV IOP_HVPS JPL: S-3266 anf S-3267 OASIS-CC: MRO ADDRESS Memory dump packets in science stream JPL: S-3251, bits 5 OASIS-CC: PGM_FLAG_1 MEMORY_MOD (See Section 5.11) Need to dump the affected memory Need to dump the affected memories JPL: S-3205 OASIS-CC: EUV OCC_POSITION JPL: S-3251, bits 3 and 4 Cassini UVIS Flight Code User’s Guide 11/98 23 COMMAND NAME OBSERVATION DESCRIPTION COMMANDS WHERE AND WHAT TO LOOK FOR OASIS-CC: PGM_FLAG_1 EUV_PULSE PGM_FLAG_1 FUV_PULSE JPL: Most of the above and S-3252, bits 10, 11, 12 and 13 OASIS-CC: Most of the above and PGM_FLAG_2 HDAC_INTEGRATING PGM_FLAG_2 HSP_INTEGRATING PGM_FLAG_2 EUV_INTEGRATING PGM_FLAG_2 FUV_INTEGRATING 9 ERROR REPORTING: WHERE, WHY, AND HOW TO FIX The RAM code reports errors in Normal housekeeping telemetry via flags and/or counters. Most error flags and all counters are reset after their values have been transmitted; they represent what has happened during the last housekeeping data collection period. 9.1 LOSS OF SCIENCE DATA OASIS-CC MNEMONIC PGM_FLAG_1 SC_PKT_LOSS JPL 3-281 NAME S-3251 PGM FLAG bit 12 (science packet dropped) This bit is set to 1 whenever the “ready-to-be-transmitted” science packet queue is full. This condition indicates that UVIS is producing science packets at a rate far greater than the spacecraft telemetry mode allows. Probable causes: (1) wrong assumption as to which telemetry mode the spacecraft is supposed to be in, or (2) wrong computation of the instrument telemetry rate. OASIS-CC MNEMONIC PGM_FLAG_1 CODACON_LOSS JPL 3-281 NAME S-3251 PGM FLAG 1 bit 1 (CODACON data lost) The EUV and FUV detectors each integrate data in two memory banks. While one memory bank is used for the current integration, the other memory bank is read by the RAM code. At the next integration period, the roles are reversed: the first memory bank is read by the RAM code, while the detector integrates in the second memory bank. If the integration time is too short, the RAM code does not have time to read one memory bank before it is used during the next integration period. This results in the “CODACON data lost” bit set. Probable cause: integration time too short for the amount of data the RAM code has to read out of the integration memories (see Section 7.3). Cassini UVIS Flight Code User’s Guide 11/98 24 OASIS-CC MNEMONIC DROPPED PACKETS JPL 3-281 NAME S-3252 DROP PKT CTR This measurement counts (modulo 256) the number of science packets that were lost during the last housekeeping data collection period (see the description of the flag PGM_FLAG_1 SC_PKT_LOSS above for more explanation). 9.2 HARDWARE AND SOFTWARE PROBLEMS OASIS-CC MNEMONIC PGM_FLAG_1 BIU_ERROR JPL 3-281 NAME S-3251 PGM FLAG 1 bit 2 (biu error has occurred) This bit is set whenever the RAM code notices that a transaction between CDS and the instrument BIU has failed. OASIS-CC MNEMONIC PGM_FLAG_2 BIU_CH_B_FAILURE PGM_FLAG_2 BIU_CH_A_FAILURE JPL 3-281 NAME S-3252 PGM FLAG 2 bit 4 (biu channel b failure) S-3252 PGM FLAG 2 bit 5 (biu channel a failure) These two bits correspond to two bits set in the BIU register 4 after execution of the BIU BIT (see(6)). The BIU BIT is invoked by the RAM code approximately once per hour. OASIS-CC MNEMONIC PGM_FLAG_1 MEM_FAULT PGM_FLAG_2 BIU_MEM_FLT JPL 3-281 NAME S-3252 PGM FLAG 2 bit 7 (memory error) S-3252 PGM FLAG 2 bit 6 (biu memory error) These bits are set when the RAM code finds an error while checking the instrument memory or the BUI memory. The RAM code constantly checks UVIS’s non-program memory. This is done in blocks of 64 words. The patterns used in testing are first 5A5A (hex) and then A5A5 (hex). This test is nondestructive (except in case of error because memory page C (hex) is used to store error information). All UVIS memory starting at memory page 2 is tested. When an error is discovered, it is reported in the next housekeeping packet; and the failing pattern, the value read- back, and the failing address are stored (in a circular buffer) in page C (hex). When the EUV or the FUV channels are integrating, memory pages 9 to F (hex) are not tested. A similar test is also done on the BIU memory not used by the descriptor tables and the data and command buffers (from address 5298 (hex) to address 5d47 (hex)). Cassini UVIS Flight Code User’s Guide 11/98 25 The address of the last discovered memory in error is dumped in the Normal housekeeping packet (the JPL names of the measurement are S-3263 for the page number and S-3264 for the address within the page; the OASIS-CC mnemonic is MEMORY FAULT). OASIS-CC MNEMONIC PROCESSOR FLT REGISTER JPL 3-281 NAME S-3253 1750 FLT REG This measurement contains the O Ring (during the last housekeeping data acquisition period) of the processor fault register contents read whenever a Machine Error interrupt is raised. If the measurement is not 0, it may indicate a processor hardware problem or program memory corruption. OASIS-CC MNEMONIC n/a JPL 3-281 NAME C-0268 UVIS BIU DISCRETE COMMAND STATUS, bit 12 (processor watchdog timer) A value of 1 indicates that the processor watchdog timer was not reset in time by the code. UVIS is put in a safe mode and stops producing housekeeping and science packets. It needs to be restarted using a sequence such as: 84RT_RESET,RESET_HOLD 84RT_RESET,RESET_RELEASE Load the ram code 84RAM_EXEC OASIS-CC MNEMONIC n/a To reset processor. To release processor To execute from RAM JPL 3-281 NAME C-0267 UVIS BIU DISCRETE COMMAND DATA, bit 15 (watchdog timer expiration flag status) A value of 1 indicates the instrument BIU watchdog timer was not reset in time by CDS. UVIS is put in a safe mode and stops producing housekeeping and science packets. After the BIU watchdog timer has been reset, it needs to be restarted using a sequence such as: 84RT_RESET,RESET_HOLD 84RT_RESET,RESET_RELEASE Load the ram code 84RAM_EXEC To reset processor. To release processor To execute from RAM Cassini UVIS Flight Code User’s Guide 11/98 26 OASIS-CC MNEMONIC PGM_FLAG_1 MISSING_DSTART PGM_FLAG_2 MISSING_RTI JPL 3-281 NAME S-3252 PGM FLAG 2 bit 14 (missing DTStart) S-3252 PGM FLAG 2 bit 15 (missing RTI) These two bits are set whenever the RAM or the PROM code thinks that CDS has not sent the RTI or the DTSTART signal within the required time period. 9.3 COMMANDING FAILURES OASIS-CC MNEMONIC PGM_FLAG_1 LAST_DS_STATE JPL 3-281 NAME S-3251 PGM FLAG 1 bit 10 (last DS load invalid) This bit indicates the status of the last DS load uplink. When the RAM code is started, this bit is set to 1. It is set to 0 after a successful uplink of a DS load. If, after a DS load transmission, this bit is set to (or stays set to) 1, there is an error. Possible causes for the problem are: • One or more 84LOAD_SEQ commands were out of order or were missing. • One or more 84LOAD_SEQ commands have failed the checksum test. • Globally, the DS load has failed the checksum test. The counts of missing 84LOAD_SEQ commands or of failed 84LOAD_SEQ commands are reported elsewhere in the telemetry (see description of the ALFDS flags below). OASIS-CC MNEMONIC REJECTED ALFDS REJECTED ALFDS_OVFLW JPL 3-281 NAME S-3255 REJ ALF/DS CTR S-3260 REJ ALF/DS OVF These two counters report the number of rejected DS or ALF blocks during the last housekeeping data collection period. The number of rejected DS or ALF blocks during the last housekeeping data collection period is computed as: REJECTED ALFDS + 256 * REJECTED_AFLDS_OVFLW (See the description of the flag PGM_FLAG_1 LAST_DS_STATE above for possible reasons for the load failure). Cassini UVIS Flight Code User’s Guide 11/98 27 OASIS-CC MNEMONIC MISSING ALFDS MISSING ALFDS_OVFLW JPL 3-281 NAME S-3256 MSNG ALF/DS CTR S-3261 MSNG ALF/DS OVF These two counters report the number of missing DS or ALF blocks during the last housekeeping data collection period. The number of missing DS or ALF blocks during the last housekeeping data collection period is computed as: MISSING ALFDS + 256 * MISSING_AFLDS_OVFLW (See the description of the flag PGM_FLAG_1 LAST_DS_STATE above for the possible reasons for the load failure). OASIS-CC MNEMONIC REJECTED CMDS JPL 3-281 NAME S-3258 REJ CMD CTR This counter reports (modulo 256) the number of rejected commands during the last housekeeping data collection period. This counter does not differentiate between direct commands and commands that are executed from a DS. This counter is incremented for many reasons: • Some commands are always rejected by the RAM code: 84RAM_EXEC, 84VENT_ENA, and 84VENT. These commands are PROM-only commands. Similarly the RAM-only commands are rejected by the PROM code. • 84DELAY is only valid in a DS. It is rejected if it is a direct command. • 84MEM_SET or 84MEM_ZERO is rejected if memory modification is not enabled (see Section 5.11). • All commands that use power are rejected when the instrument is in sleep mode. The exception to this rule is 84ION_PUMP_ON. • A command opcode was not recognized. This will register as one rejected command. But in fact, the RAM code is forced to reject all the pending commands that are stored behind the rejected command in its command buffer. • For some commands, the RAM code checks the consistency of the command parameters value. If it finds a problem, it rejects the command. Cassini UVIS Flight Code User’s Guide 11/98 28 10 NOTES ON DATA ACQUISITION 10.1 SCIENCE DATA ACQUISITION Data from the HDAC and the HSP channels are processed in a similar way: at each channel interrupt, the RAM code reads the 16-bit channel output and stuffs the data in a science packet (each channel has its own science packet). When the packet is full, it is placed at the end of the “ready-to-be-transmitted” packet queue. For the HDAC channel and the HSP channel, the time in the packet secondary header corresponds to the spacecraft time at which the first data in the packet was collected. The processing of the EUV and FUV channels is more complex. Both channels are handled the same way. The hardware accumulates the data from one channel into one of two buffers. At the end of one integration, the hardware switches buffers. The RAM reads data from one buffer while the hardware accumulates data in the other buffer. Only the data in the windows defined by the executing ODC are returned to the ground. Data are stuffed, window after window, spectral dimension first in a science packet. When the packet is full, it is placed at the end of the Ready-to-Be-Transmitted packet queue. For the EUV and FUV channels, the time in the packet secondary header corresponds to the spacecraft time at the time of the channel integration interrupt. Note: When an ODC is interrupted (either by the execution of an 84SEQ_HALT command—which terminates the data acquisition, or by the execution of a command that modifies the instrument configuration in relation to the data acquisition), the current science packets are moved to the Ready-to-Be Transmitted packet queue even if they are not full. The following data are buffered in new packets. Note: When an ODC that acquires FUV and EUV data is interrupted, the data from the current (incomplete) integration are not collected by the RAM code. For example, assume that UVIS is collecting FUV data with a 60-second integration period. If the ODC is interrupted after 179 seconds, only data from integration 1 and 2 are returned. 10.2 HOUSEKEEPING DATA ACQUISITION Approximately 8 seconds before the next CDS housekeeping packet pickup, the RAM code starts filling the UVIS housekeeping packet in the following order: • First, the analog data from A/D channel 0 to A/D channel 31. The A/D conversions are done 0.125 seconds apart; • Then the digital data are collected in one RTI. Cassini UVIS Flight Code User’s Guide 11/98 29 The exceptions to this rule are the commanded voltage in measurements S-3237 (JPL 3-281 label: HDAC DREG CTL, OASIS-CC mnemonic: HDAC H_FILAMENT_CTL ) and S-3236 (JPL 3-281 label: HDAC HREG CTL, OASISCC mnemonic: HDAC D_FILAMENT_CTL ). They are collected at the end of the A/D conversion of the analog measurements S-3220 (JPL 3-281 label: HDAC D CURRENT, OASIS-CC mnemonic: HDAC D_CURRENT) and S-3223 (JPL 3281 label: HDAC H CURRENT, OASIS-CC mnemonic: HDAC H_CURRENT). The time in the secondary header of the housekeeping packet is the spacecraft time at the first A/D conversion (the first A/D data are read 0.125 seconds after). Cassini UVIS Flight Code User’s Guide 11/98 30