Dmitry Kovalev / Mbed 2 deprecated LGfiltr

Dependencies:   mbed

Fork of LGstaandart by Dmitry Kovalev

Committer:
Diletant
Date:
Sun Jul 03 13:40:48 2016 +0000
Revision:
178:672ef279c8e0
Parent:
173:7f938afb0447
Child:
186:c7a9c309086c
Device&... update. Some Ask_Gld functionality. Not final!!!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Diletant 149:abbf7663d27d 1 #ifndef __DEVICE_PLCS_H__
Diletant 149:abbf7663d27d 2 #define __DEVICE_PLCS_H__
Diletant 149:abbf7663d27d 3
Diletant 167:bedc0a9d559a 4 //Path length control system phase feedback typedefs
Diletant 167:bedc0a9d559a 5 typedef struct _DevicePLCSFeedbackTransferFunction {
Diletant 167:bedc0a9d559a 6 uint32_t points; //Number of actual control points (up to 16)
Diletant 167:bedc0a9d559a 7 int32_t raw[16]; //Feedback raw value - volts in 16.16 format
Diletant 167:bedc0a9d559a 8 int32_t normalized[16];//Feedback normalized value - -1...+1 in 16.16 format
Diletant 167:bedc0a9d559a 9 } DevicePLCSFeedbackTransferFunction;
Diletant 166:c3c0b8a90d81 10
Diletant 167:bedc0a9d559a 11 typedef struct _DevicePLCSFeedbackSettings {
Diletant 167:bedc0a9d559a 12 uint8_t input; //Take ISACS input as feedback
Diletant 167:bedc0a9d559a 13 uint8_t output; //Take ISACS output as feedback
Diletant 167:bedc0a9d559a 14 DevicePLCSFeedbackTransferFunction transfer;
Diletant 167:bedc0a9d559a 15 } DevicePLCSFeedbackSettings;
Diletant 167:bedc0a9d559a 16
Diletant 167:bedc0a9d559a 17 typedef struct _DevicePLCSFeedbackState {
Diletant 166:c3c0b8a90d81 18 uint8_t input; //Take ISACS input as feedback
Diletant 166:c3c0b8a90d81 19 uint8_t output; //Take ISACS output as feedback
Diletant 167:bedc0a9d559a 20 uint32_t voltage; //Feedback - volts in 16.16 format
Diletant 167:bedc0a9d559a 21 } DevicePLCSFeedbackState;
Diletant 167:bedc0a9d559a 22
Diletant 167:bedc0a9d559a 23 typedef struct _DevicePLCSFeedback {
Diletant 167:bedc0a9d559a 24 DevicePLCSFeedbackSettings settings;
Diletant 167:bedc0a9d559a 25 DevicePLCSFeedbackState state;
Diletant 167:bedc0a9d559a 26 } DevicePLCSFeedback;
Diletant 167:bedc0a9d559a 27
Diletant 167:bedc0a9d559a 28 //Path length control system reference typedefs
Diletant 167:bedc0a9d559a 29 typedef struct _DevicePLCSReferenceSettings {
Diletant 167:bedc0a9d559a 30 uint8_t sequencer; //Take sequencer as reference (and ISACS amplitude/output as feedback)
Diletant 167:bedc0a9d559a 31 uint8_t delta; //Take delta as reference (and ISACS amplitude/output delta as feedback)
Diletant 167:bedc0a9d559a 32 } DevicePLCSReferenceSettings;
Diletant 167:bedc0a9d559a 33
Diletant 167:bedc0a9d559a 34 typedef struct _DevicePLCSReferenceState {
Diletant 166:c3c0b8a90d81 35 uint8_t sequencer; //Take sequencer as reference (and ISACS amplitude/output as feedback)
Diletant 166:c3c0b8a90d81 36 uint8_t delta; //Take delta as reference (and ISACS amplitude/output delta as feedback)
Diletant 167:bedc0a9d559a 37 } DevicePLCSReferenceState;
Diletant 167:bedc0a9d559a 38
Diletant 167:bedc0a9d559a 39 typedef struct _DevicePLCSReference {
Diletant 167:bedc0a9d559a 40 DevicePLCSReferenceSettings settings;
Diletant 167:bedc0a9d559a 41 DevicePLCSReferenceState state;
Diletant 167:bedc0a9d559a 42 } DevicePLCSReference;
Diletant 167:bedc0a9d559a 43
Diletant 167:bedc0a9d559a 44 //Path length control system detector typedefs
Diletant 167:bedc0a9d559a 45 typedef struct _DevicePLCSDetectorState {
Diletant 167:bedc0a9d559a 46 int32_t in[2]; //Detector inputs: reference, feedback -1...+1 in 16.16 format
Diletant 167:bedc0a9d559a 47 int32_t out; //Detector output: -1...+1 in 16.16 format
Diletant 167:bedc0a9d559a 48 } DevicePLCSDetectorState;
Diletant 167:bedc0a9d559a 49
Diletant 167:bedc0a9d559a 50 typedef struct _DevicePLCSDetector {
Diletant 167:bedc0a9d559a 51 DevicePLCSDetectorState state;
Diletant 167:bedc0a9d559a 52 } DevicePLCSDetector;
Diletant 167:bedc0a9d559a 53
Diletant 167:bedc0a9d559a 54 //Path length control system bias typedefs
Diletant 167:bedc0a9d559a 55 typedef struct _DevicePLCSBiasTransferFunction {
Diletant 167:bedc0a9d559a 56 uint32_t points; //Number of actual control points (up to 16)
Diletant 167:bedc0a9d559a 57 int32_t raw[16]; //Raw bias value - dimensionless units
Diletant 167:bedc0a9d559a 58 int32_t normalized[16]; //Normalized bias value - -0.5...+0.5 of lambda in 16.16 format
Diletant 167:bedc0a9d559a 59 } DevicePLCSBiasTransferFunction;
Diletant 167:bedc0a9d559a 60
Diletant 167:bedc0a9d559a 61 typedef struct _DevicePLCSBiasSettings {
Diletant 167:bedc0a9d559a 62 DevicePLCSBiasTransferFunction transfer;
Diletant 167:bedc0a9d559a 63 } DevicePLCSBiasSettings;
Diletant 167:bedc0a9d559a 64
Diletant 167:bedc0a9d559a 65 typedef struct _DevicePLCSBiasState {
Diletant 167:bedc0a9d559a 66 uint32_t raw; //Raw bias value - -0.5...+0.5 in 16.16 format
Diletant 167:bedc0a9d559a 67 int32_t sum;
Diletant 167:bedc0a9d559a 68 int32_t counter;
Diletant 167:bedc0a9d559a 69 int32_t average; //Average bias value - -0.5...+0.5 in 16.16 format
Diletant 167:bedc0a9d559a 70 } DevicePLCSBiasState;
Diletant 167:bedc0a9d559a 71
Diletant 167:bedc0a9d559a 72 typedef struct _DevicePLCSBias {
Diletant 167:bedc0a9d559a 73 DevicePLCSBiasSettings settings;
Diletant 167:bedc0a9d559a 74 DevicePLCSBiasState state;
Diletant 167:bedc0a9d559a 75 } DevicePLCSBias;
Diletant 166:c3c0b8a90d81 76
Diletant 167:bedc0a9d559a 77 //Path length control system regulator typedefs
Diletant 167:bedc0a9d559a 78 typedef struct _DevicePLCSCorrectionTransferFunction {
Diletant 178:672ef279c8e0 79 uint32_t points; //Number of actual control points (up to 16)
Diletant 178:672ef279c8e0 80 int32_t error[16]; //Regulator error value - degrees in 16.16 format
Diletant 178:672ef279c8e0 81 int32_t correction[16]; //Regulator correction value - -1...+1 in 16.16 format
Diletant 167:bedc0a9d559a 82 } DevicePLCSCorrectionTransferFunction;
Diletant 167:bedc0a9d559a 83
Diletant 167:bedc0a9d559a 84 typedef struct _DevicePLCSRegulatorSettings {
Diletant 167:bedc0a9d559a 85 uint8_t enabled;
Diletant 178:672ef279c8e0 86 int32_t reference; //Reference bias - signed 16.16 format
Diletant 178:672ef279c8e0 87 int32_t scale; //Regulator scale factor - signed 16.16 format
Diletant 167:bedc0a9d559a 88 DevicePLCSCorrectionTransferFunction transfer;
Diletant 167:bedc0a9d559a 89 } DevicePLCSRegulatorSettings;
Diletant 167:bedc0a9d559a 90
Diletant 167:bedc0a9d559a 91 typedef struct _DevicePLCSRegulatorState {
Diletant 167:bedc0a9d559a 92 uint8_t enabled;
Diletant 178:672ef279c8e0 93 int32_t reference; //Reference bias - signed 16.16 format
Diletant 178:672ef279c8e0 94 int32_t scale; //Regulator scale factor - signed 16.16 format
Diletant 178:672ef279c8e0 95 int32_t error; //Regulator error - signed 16.16 format
Diletant 178:672ef279c8e0 96 int32_t correction;//Output correction - signed 16.16 format
Diletant 167:bedc0a9d559a 97 } DevicePLCSRegulatorState;
Diletant 156:e68ee0bcdcda 98
Diletant 167:bedc0a9d559a 99 typedef struct _DevicePLCSRegulator {
Diletant 167:bedc0a9d559a 100 DevicePLCSRegulatorSettings settings;
Diletant 167:bedc0a9d559a 101 DevicePLCSRegulatorState state;
Diletant 167:bedc0a9d559a 102 } DevicePLCSRegulator;
Diletant 167:bedc0a9d559a 103
Diletant 167:bedc0a9d559a 104 //Path length control reset typedefs
Diletant 167:bedc0a9d559a 105 typedef struct _DevicePLCSResetTemperatureFunction {
Diletant 167:bedc0a9d559a 106 uint32_t points; //Number of actual control points (up to 16)
Diletant 167:bedc0a9d559a 107 int32_t temperature[16]; //Output reset temperature value - centigrade, 16.16 format
Diletant 167:bedc0a9d559a 108 int32_t voltage[16]; //Output reset level value - volts, 16.16 format
Diletant 167:bedc0a9d559a 109 uint32_t duration[16]; //Output reset duration value - seconds, 16.16 format
Diletant 167:bedc0a9d559a 110 } DevicePLCSResetTemperatureFunction;
Diletant 167:bedc0a9d559a 111
Diletant 167:bedc0a9d559a 112 typedef struct _DevicePLCSResetLevels {
Diletant 167:bedc0a9d559a 113 int32_t upper; //Upper reset level output voltage
Diletant 167:bedc0a9d559a 114 int32_t lower; //Lower reset level output voltage
Diletant 167:bedc0a9d559a 115 } DevicePLCSResetLevels;
Diletant 167:bedc0a9d559a 116
Diletant 167:bedc0a9d559a 117 typedef struct _DevicePLCSResetState {
Diletant 167:bedc0a9d559a 118 int32_t countdown; //reset countdown - seconds, 16.16 format
Diletant 167:bedc0a9d559a 119 int32_t voltage;
Diletant 167:bedc0a9d559a 120 } DevicePLCSResetState;
Diletant 167:bedc0a9d559a 121
Diletant 167:bedc0a9d559a 122 typedef struct _DevicePLCSReset {
Diletant 167:bedc0a9d559a 123 DevicePLCSResetLevels levels;
Diletant 167:bedc0a9d559a 124 DevicePLCSResetTemperatureFunction up;
Diletant 167:bedc0a9d559a 125 DevicePLCSResetTemperatureFunction down;
Diletant 167:bedc0a9d559a 126 DevicePLCSResetState state;
Diletant 167:bedc0a9d559a 127 } DevicePLCSReset;
Diletant 166:c3c0b8a90d81 128
Diletant 166:c3c0b8a90d81 129 //Path length control system output ( = DAC + amplifier + control unit + heater/piezo) typedefs
Diletant 167:bedc0a9d559a 130 typedef struct _DevicePLCSOutputStart {
Diletant 167:bedc0a9d559a 131 int32_t voltage; //Output voltage in signed 16.16 fixed point format
Diletant 167:bedc0a9d559a 132 } DevicePLCSOutputStart;
Diletant 167:bedc0a9d559a 133
Diletant 167:bedc0a9d559a 134 typedef struct _DevicePLCSOutputTransferFunction {
Diletant 166:c3c0b8a90d81 135 uint32_t points; //Number of actual control points (up to 16)
Diletant 166:c3c0b8a90d81 136 int32_t voltage[16]; //Output voltage control points in signed 16.16 fixed point format
Diletant 166:c3c0b8a90d81 137 int32_t code[16]; //DAC code control points
Diletant 167:bedc0a9d559a 138 } DevicePLCSOutputTransferFunction;
Diletant 166:c3c0b8a90d81 139
Diletant 166:c3c0b8a90d81 140 typedef struct _DevicePLCSOutputSettings {
Diletant 166:c3c0b8a90d81 141 uint8_t enabled; //Enable DAC output
Diletant 173:7f938afb0447 142 uint8_t sequencer; //Enable sequencer output summation
Diletant 167:bedc0a9d559a 143 DevicePLCSOutputStart start;
Diletant 167:bedc0a9d559a 144 DevicePLCSOutputTransferFunction transfer;
Diletant 166:c3c0b8a90d81 145 } DevicePLCSOutputSettings;
Diletant 166:c3c0b8a90d81 146
Diletant 166:c3c0b8a90d81 147 typedef struct _DevicePLCSOutputState {
Diletant 166:c3c0b8a90d81 148 uint8_t enabled; //Enable DAC output
Diletant 173:7f938afb0447 149 uint8_t sequencer; //Enable sequencer output summation
Diletant 166:c3c0b8a90d81 150 uint32_t voltage; //Voltage output
Diletant 167:bedc0a9d559a 151 uint32_t code; //Code output
Diletant 166:c3c0b8a90d81 152 } DevicePLCSOutputState;
Diletant 166:c3c0b8a90d81 153
Diletant 166:c3c0b8a90d81 154 typedef struct _DevicePLCSOutput {
Diletant 166:c3c0b8a90d81 155 DevicePLCSOutputSettings settings;
Diletant 166:c3c0b8a90d81 156 DevicePLCSOutputState state;
Diletant 166:c3c0b8a90d81 157 } DevicePLCSOutput;
Diletant 156:e68ee0bcdcda 158
Diletant 161:efd949e8d536 159 //Path length control system typedefs
Diletant 166:c3c0b8a90d81 160 // Information signal amplitude ADC: device.controller.SSP.ADC[4]
Diletant 161:efd949e8d536 161 // Path length control system DAC: device.controller.SSP.DAC[1]
Diletant 149:abbf7663d27d 162 typedef struct _DevicePathLengthControlSystem {
Diletant 173:7f938afb0447 163 //DevicePLCSSequencer sequencer;
Diletant 167:bedc0a9d559a 164 DevicePLCSFeedback feedback;
Diletant 167:bedc0a9d559a 165 DevicePLCSReference reference;
Diletant 167:bedc0a9d559a 166 DevicePLCSDetector detector;
Diletant 167:bedc0a9d559a 167 DevicePLCSBias bias;
Diletant 167:bedc0a9d559a 168 DevicePLCSRegulator regulator;
Diletant 167:bedc0a9d559a 169 DevicePLCSReset reset;
Diletant 166:c3c0b8a90d81 170 DevicePLCSOutput output;
Diletant 149:abbf7663d27d 171 } DevicePathLengthControlSystem;
Diletant 149:abbf7663d27d 172
Diletant 161:efd949e8d536 173 //Path length control system functions
Diletant 167:bedc0a9d559a 174 void InitPathLengthControlSystemDefaultSettings(void);
Diletant 167:bedc0a9d559a 175 void InitPathLengthControlSystemState(void);
Diletant 167:bedc0a9d559a 176 void DeviceStartPLCS(void);
Diletant 149:abbf7663d27d 177
Diletant 166:c3c0b8a90d81 178 void plcsProcess(void);
Diletant 166:c3c0b8a90d81 179
Diletant 149:abbf7663d27d 180 #endif /* __DEVICE_PLCS_H__ */