223 lines
6.0 KiB
C
223 lines
6.0 KiB
C
/*------------------------------------------------------------------------------
|
|
|
|
Copyright (C) 1998 : Space Systems Finland Ltd.
|
|
|
|
Space Systems Finland Ltd (SSF) allows you to use this version of
|
|
the DEBIE-I DPU software for the specific purpose and under the
|
|
specific conditions set forth in the Terms Of Use document enclosed
|
|
with or attached to this software. In particular, the software
|
|
remains the property of SSF and you must not distribute the software
|
|
to third parties without written and signed authorization from SSF.
|
|
|
|
System Name: DEBIE DPU SW
|
|
Module : su_ctrl.h
|
|
|
|
Macros, functions, constants and types for controlling Sensor Units.
|
|
|
|
Based on the SSF DHI file su_ctrl.h, rev 1.28, Tue Sep 14 14:51:26 1999.
|
|
|
|
- * --------------------------------------------------------------------------
|
|
*/
|
|
|
|
|
|
#ifndef SU_CTRL_H
|
|
#define SU_CTRL_H
|
|
|
|
#include "keyword.h"
|
|
|
|
/* Sensor Channels */
|
|
|
|
#define NUM_CH 5
|
|
/* Number of recorded measurement channels per sensor unit. */
|
|
/* The PZT_1_2 channel is not recorded, as such. */
|
|
|
|
#define PLASMA_1_PLUS 0
|
|
#define PLASMA_1_MINUS 1
|
|
#define PZT_1 2
|
|
#define PZT_2 3
|
|
#define PLASMA_2_PLUS 4
|
|
#define PZT_1_2 5
|
|
|
|
|
|
#define SU_1 1
|
|
#define SU_2 2
|
|
#define SU_3 3
|
|
#define SU_4 4
|
|
|
|
#define SU_1_ON 1
|
|
#define SU_2_ON 2
|
|
#define SU_3_ON 3
|
|
#define SU_4_ON 4
|
|
|
|
#define SU_1_OFF 1
|
|
#define SU_2_OFF 2
|
|
#define SU_3_OFF 3
|
|
#define SU_4_OFF 4
|
|
|
|
#define LOW_PLASMA_SELF_TEST_THRESHOLD 0x15
|
|
#define LOW_PIEZO_SELF_TEST_THRESHOLD 0x0D
|
|
#define HIGH_PLASMA_1_PLUS_SELF_TEST_THRESHOLD 0xAB
|
|
#define HIGH_PLASMA_SELF_TEST_THRESHOLD 0x80
|
|
#define HIGH_PIEZO_SELF_TEST_THRESHOLD 0x2B
|
|
#define MAX_PLASMA_SELF_TEST_THRESHOLD 0xFF
|
|
#define MAX_PIEZO_SELF_TEST_THRESHOLD 0xFF
|
|
/* Self test threshold levels. */
|
|
|
|
#define PLASMA_1_PLUS_LOW 0x13
|
|
#define PLASMA_1_MINUS_LOW 0x08
|
|
#define PLASMA_2_PLUS_LOW 0x10
|
|
#define PZT_1_LOW 0x36
|
|
#define PZT_2_LOW 0x36
|
|
/* Low level test pulses. */
|
|
|
|
#define PLASMA_1_PLUS_HIGH 0x5A
|
|
#define PLASMA_1_MINUS_HIGH 0x2A
|
|
#define PLASMA_2_PLUS_HIGH 0x50
|
|
#define PZT_1_HIGH 0xF6
|
|
#define PZT_2_HIGH 0xE8
|
|
/* High level test pulses. */
|
|
|
|
#define SU_NOT_ACTIVATED 0
|
|
#define SU_NOT_DEACTIVATED 0
|
|
|
|
#define CHANNEL_NOT_SELECTED 5
|
|
#define SU_NOT_SELECTED 6
|
|
|
|
#define TRIGGER_SET_OK 1
|
|
|
|
#define DEFAULT_THRESHOLD 0x0D
|
|
/* Default Trigger threshold is mid-scale value. */
|
|
|
|
#define DEFAULT_TEST_PULSE_LEVEL 0x00
|
|
|
|
#define DEFAULT_CLASSIFICATION_LEVEL 0
|
|
#define DEFAULT_MAX_TIME 255
|
|
#define DEFAULT_MIN_TIME 0
|
|
/* These default levels are only temporary */
|
|
|
|
#define SU_ONOFF_MASK 3
|
|
/* Bit mask for SU Status register manipulation when SU is */
|
|
/* switched ON or OFF. */
|
|
|
|
#define SU_STATE_TRANSITION_OK 1
|
|
#define SU_STATE_TRANSITION_FAILED 0
|
|
|
|
#define NO_SU 0
|
|
|
|
/* Trigger level register base addresses */
|
|
|
|
#define SU_1_TRIGGER_BASE 0xFFB0
|
|
#define SU_2_TRIGGER_BASE 0xFFB3
|
|
#define SU_3_TRIGGER_BASE 0xFFC0
|
|
#define SU_4_TRIGGER_BASE 0xFFC3
|
|
|
|
#define SU_CONTROL 0xFFD0
|
|
|
|
#define SU_1_MINUS_50 1
|
|
#define SU_1_PLUS_50 2
|
|
#define SU_2_MINUS_50 4
|
|
#define SU_2_PLUS_50 8
|
|
#define SU_3_MINUS_50 16
|
|
#define SU_3_PLUS_50 32
|
|
#define SU_4_MINUS_50 64
|
|
#define SU_4_PLUS_50 128
|
|
|
|
#define HV_STATUS 0xFF70
|
|
|
|
#include "target_su_ctrl.h"
|
|
|
|
/* Type definitions */
|
|
|
|
typedef uint_least8_t sensor_number_t;
|
|
/* Sensor Unit number. Valid values SU_1, SU_2, SU_3 and SU_4 */
|
|
/* which must be successive integers. */
|
|
/* As a special case for some variables, the value NO_SU */
|
|
/* indicates "no Sensor Unit". This possibility is always */
|
|
/* shown by a comment on that variable, otherwise only real */
|
|
/* SU numbers are allowed. */
|
|
|
|
#define NUM_SU 4
|
|
/* The number of sensor units. */
|
|
|
|
typedef uint_least8_t sensor_index_t;
|
|
/* Sensor Unit index. Valid values 0 .. NUM_SU - 1. */
|
|
/* Index 0 corresponds to Sensor Unit number SU_1. */
|
|
|
|
typedef uint_least8_t channel_t;
|
|
/* The number of an A/D channel. */
|
|
|
|
typedef struct {
|
|
unsigned short int FromPlasma1Plus;
|
|
unsigned short int FromPlasma1Minus;
|
|
} delays_t ;
|
|
|
|
typedef struct {
|
|
sensor_number_t sensor_unit;
|
|
channel_t channel;
|
|
unsigned char level;
|
|
unsigned char execution_result;
|
|
unsigned int base;
|
|
} trigger_set_t ;
|
|
|
|
typedef struct {
|
|
unsigned char V_down_bit;
|
|
unsigned char HV_status;
|
|
} voltage_status_t ;
|
|
|
|
|
|
extern unsigned char EXTERNAL SU_ctrl_register;
|
|
/* This variable stores values of write-only registers */
|
|
|
|
/* Function prototypes */
|
|
|
|
/* Sensor Unit status */
|
|
|
|
|
|
/* Delay and rise time counters */
|
|
extern void ReadDelayCounters ( delays_t EXTERNAL *delay );
|
|
extern unsigned char ReadRiseTimeCounter( void ) COMPACT REENTRANT_FUNC;
|
|
extern void ResetDelayCounters( void ) COMPACT REENTRANT_FUNC;
|
|
extern void ResetPeakDetector( sensor_number_t unit );
|
|
extern void SignalPeakDetectorReset(
|
|
unsigned char low_reset_value,
|
|
unsigned char high_reset_value );
|
|
|
|
|
|
/* Trigger levels */
|
|
extern void SetTriggerLevel( trigger_set_t EXTERNAL *setting )
|
|
COMPACT REENTRANT_FUNC;
|
|
|
|
/* Test pulse level */
|
|
extern void SetTestPulseLevel( unsigned char level )
|
|
COMPACT REENTRANT_FUNC;
|
|
|
|
extern void GetVoltageStatus( voltage_status_t EXTERNAL *v_status )
|
|
COMPACT REENTRANT_FUNC;
|
|
|
|
|
|
/* Sensor Unit power control */
|
|
extern void Switch_SU_On (
|
|
sensor_number_t SU_Number,
|
|
unsigned char EXTERNAL *execution_result )
|
|
COMPACT REENTRANT_FUNC;
|
|
|
|
extern void Switch_SU_Off (
|
|
sensor_number_t SU_Number,
|
|
unsigned char EXTERNAL *execution_result )
|
|
COMPACT REENTRANT_FUNC;
|
|
|
|
/* Sensor Unit calibration */
|
|
|
|
extern void EnableAnalogSwitch( sensor_index_t self_test_SU_index );
|
|
extern void DisableAnalogSwitch( sensor_index_t self_test_SU_index );
|
|
extern void SelectSelfTestChannel( unsigned char channel );
|
|
extern void SelectTriggerSwitchLevel(
|
|
unsigned char test_channel,
|
|
sensor_index_t self_test_SU_index );
|
|
extern void SelectStartSwitchLevel(
|
|
unsigned char test_channel,
|
|
sensor_index_t self_test_SU_index );
|
|
|
|
|
|
#endif
|