123

Dependencies:   mbed

Fork of LG by igor Apu

Committer:
Kovalev_D
Date:
Wed Feb 03 10:44:42 2016 +0300
Revision:
22:12e6183f04d4
[thyz

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Kovalev_D 22:12e6183f04d4 1 #include "commandset.h"
Kovalev_D 22:12e6183f04d4 2 #include "CntrlGLD.h"
Kovalev_D 22:12e6183f04d4 3 #include "Cyclessync.h"
Kovalev_D 22:12e6183f04d4 4 #include "dspfns.h"
Kovalev_D 22:12e6183f04d4 5 #include "SIP.h"
Kovalev_D 22:12e6183f04d4 6 #include "el_lin.h"
Kovalev_D 22:12e6183f04d4 7
Kovalev_D 22:12e6183f04d4 8 #define COMMAND_DEBUG
Kovalev_D 22:12e6183f04d4 9
Kovalev_D 22:12e6183f04d4 10 uint32_t SRgR; //r. ñèñòåìíûé ðåãèñòð ðåæèìà ïëàòû ADSP
Kovalev_D 22:12e6183f04d4 11
Kovalev_D 22:12e6183f04d4 12 uint32_t RgConA; //r. îñíîâíîé ðåãèñòð óïðàâëåíèÿ óñòðîéñòâà
Kovalev_D 22:12e6183f04d4 13 uint32_t RgConB; //r. äîïîëíèòåëüíûé ðåãèñòð óïðàâëåíèÿ
Kovalev_D 22:12e6183f04d4 14 //uint32_t Copy_e5_RgR; //r. êîïèÿ ðåãèñòðà ðåæèìà ïëàòû E5
Kovalev_D 22:12e6183f04d4 15 //uint32_t Copy_e5_RgRA; //r. êîïèÿ äîïîëíèòåëüíîãî ðåãèñòðà ðåæèìà E5
Kovalev_D 22:12e6183f04d4 16
Kovalev_D 22:12e6183f04d4 17 uint32_t Valid_Data; //r. áàéò-ïðèçíàê äîñòîâåðíûõ äàííûõ, íàêàïëèâàþùèé îøèáêè îò çàïðîñà äî çàïðîñà
Kovalev_D 22:12e6183f04d4 18
Kovalev_D 22:12e6183f04d4 19 TDEVICE_BLK Device_blk; //e. union for device constants
Kovalev_D 22:12e6183f04d4 20 uint32_t ser_num; //e. device serial number
Kovalev_D 22:12e6183f04d4 21
Kovalev_D 22:12e6183f04d4 22 int Device_Mode = DM_INT_10KHZ_LATCH; //r. ðåæèì ðàáîòû ïðèáîðà (âíóòð.çàùåëêà, çíàêîâûé ìåàíäð èëè âíåøíÿÿ çàùåëêà)
Kovalev_D 22:12e6183f04d4 23
Kovalev_D 22:12e6183f04d4 24 void Sts_Pulse(void);
Kovalev_D 22:12e6183f04d4 25 void Sts_Pause(void);
Kovalev_D 22:12e6183f04d4 26 void Sts_Polling(void);
Kovalev_D 22:12e6183f04d4 27
Kovalev_D 22:12e6183f04d4 28 //r. òàáëèöà ñîñòîÿíèé ïðîöåäóðû çàïóñêà ïðèáîðà
Kovalev_D 22:12e6183f04d4 29 void (* Tab_Gld_Start[3])(void) = {Sts_Pulse, Sts_Pause, Sts_Polling};
Kovalev_D 22:12e6183f04d4 30 //r. òàáëèöà ñîñòîÿíèé ïðîöåäóðû ïîäæèãà ëàçåðà
Kovalev_D 22:12e6183f04d4 31 void (* Tab_Gld_Pulse[1])(void) = {Sts_Pulse};
Kovalev_D 22:12e6183f04d4 32
Kovalev_D 22:12e6183f04d4 33 //e. stack of states of the procedure of starting //r. ñòåê ïàðàìåòðîâ ñîñòîÿíèé ïðîöåäóðû çàïóñêà
Kovalev_D 22:12e6183f04d4 34 uint32_t Stk_Gld_Start[3] = {LIGHT_UP_PULSE_WDTH, LIGHT_UP_PAUSE, LIGHT_UP_POLLING};
Kovalev_D 22:12e6183f04d4 35
Kovalev_D 22:12e6183f04d4 36 uint32_t gyro_Sts = 0; //r. ðåãèñòð ñîñòîÿíèÿ ïðèáîðà
Kovalev_D 22:12e6183f04d4 37 uint32_t start_Rq = 1; //r. çàïðîñ íà çàïóñê ïðèáîðà
Kovalev_D 22:12e6183f04d4 38 uint32_t start_Go = 0; //r. ïðîöåäóðà çàïóñêà àêòèâíà
Kovalev_D 22:12e6183f04d4 39 uint32_t stop_Rq = 0; //r. çàïðîñ íà îñòàíîâ ïðèáîðà
Kovalev_D 22:12e6183f04d4 40 uint32_t pulse_Rq = 0; //r. çàïðîñ íà ïîäæèã ëàçåðà
Kovalev_D 22:12e6183f04d4 41 uint32_t pulse_Go = 0; //r. ïðîöåññ ïîäæèãà àêòèâåí
Kovalev_D 22:12e6183f04d4 42
Kovalev_D 22:12e6183f04d4 43 uint32_t state_index; //r. èíäåêñ ñîñòîÿíèÿ ïðîöåäóðû (ñòàðòà)
Kovalev_D 22:12e6183f04d4 44 uint32_t sts_work; //r. 1 - òåêóùåå ñîñòîÿíèå - â ðàáî÷åé ôàçå, 0 - èíèöèàëèçàöèè
Kovalev_D 22:12e6183f04d4 45 uint32_t sts_time; //r. ñ÷åò÷èê âðåìåíè òåêóùåãî ñîñòîÿíèÿ
Kovalev_D 22:12e6183f04d4 46 uint32_t attempt_Str; //r. ñ÷åò÷èê ïîïûòîê çàïóñêà ïðèáîðà
Kovalev_D 22:12e6183f04d4 47
Kovalev_D 22:12e6183f04d4 48
Kovalev_D 22:12e6183f04d4 49 uint32_t BIT_number;
Kovalev_D 22:12e6183f04d4 50 uint32_t Is_BIT = 0;
Kovalev_D 22:12e6183f04d4 51
Kovalev_D 22:12e6183f04d4 52 void GLD_Stop(void) //e.---------- procedure of GLD stopping -------------------------------------- //r.---------- ïðîöåäóðà îñòàíîâà ÃËÄ --------------------------------------
Kovalev_D 22:12e6183f04d4 53 {
Kovalev_D 22:12e6183f04d4 54 if (!stop_Rq) //r. ïðîâåðèòü çàïðîñ íà âûêëþ÷åíèå ïðèáîðà
Kovalev_D 22:12e6183f04d4 55 {
Kovalev_D 22:12e6183f04d4 56 return; //r. åñëè íåò, âîçâðàò
Kovalev_D 22:12e6183f04d4 57 }
Kovalev_D 22:12e6183f04d4 58
Kovalev_D 22:12e6183f04d4 59 //r. ñáðîñèòü ôëàãè
Kovalev_D 22:12e6183f04d4 60 start_Rq = 0; //r. çàïðîñà âêëþ÷åíèÿ,
Kovalev_D 22:12e6183f04d4 61 start_Go = 0; //r. àêòèâíîñòè ïðîöåññà çàïóñêà ïðèáîðà,
Kovalev_D 22:12e6183f04d4 62 stop_Rq = 0; //r. çàïðîñà îñòàíîâà
Kovalev_D 22:12e6183f04d4 63 open_all_loops(); //r. âûêëþ÷èòü âñå êîíòóðà ðåãóëèðîâàíèÿ
Kovalev_D 22:12e6183f04d4 64
Kovalev_D 22:12e6183f04d4 65 gyro_Sts = 0; //r. ñáðîñ ðåãèñòðà ñîñòîÿíèÿ àïïàðàòóðû ÃËÄ
Kovalev_D 22:12e6183f04d4 66
Kovalev_D 22:12e6183f04d4 67 //r. óñòàíîâêà çíà÷åíèé ïîêîÿ âûõîäíûõ ïàðàìåòðîâ ðåãóëÿòîðîâ
Kovalev_D 22:12e6183f04d4 68 #if !defined COMMAND_DEBUG
Kovalev_D 22:12e6183f04d4 69 disable_DACs();
Kovalev_D 22:12e6183f04d4 70 #endif
Kovalev_D 22:12e6183f04d4 71 } // GLD_Stop
Kovalev_D 22:12e6183f04d4 72
Kovalev_D 22:12e6183f04d4 73 void GLD_Status(void) //r.---------- äîïóñêîâûé êîíòðîëü ïàðàìåòðîâ ÃËÄ --------------------------
Kovalev_D 22:12e6183f04d4 74 {
Kovalev_D 22:12e6183f04d4 75 static uint32_t Device_Mode_Old = DM_INT_10KHZ_LATCH/*DM_EXT_LATCH_DELTA_SF_PULSE*/;
Kovalev_D 22:12e6183f04d4 76
Kovalev_D 22:12e6183f04d4 77 if ( loop_is_closed(GLD_ON) == 0 )
Kovalev_D 22:12e6183f04d4 78 {
Kovalev_D 22:12e6183f04d4 79 open_all_loops();
Kovalev_D 22:12e6183f04d4 80 GLD_Stop();
Kovalev_D 22:12e6183f04d4 81 }
Kovalev_D 22:12e6183f04d4 82 if (Device_Mode_Old != Device_Mode) //deviñe mode has been changed
Kovalev_D 22:12e6183f04d4 83 {
Kovalev_D 22:12e6183f04d4 84 if (SwitchMode()) //e. mode is changed successful
Kovalev_D 22:12e6183f04d4 85 {
Kovalev_D 22:12e6183f04d4 86 Device_Mode_Old = Device_Mode; //e. save current mode name
Kovalev_D 22:12e6183f04d4 87 if (Device_Mode_Old == DM_INT_10KHZ_LATCH)
Kovalev_D 22:12e6183f04d4 88 trm_ena = 1; //e. enable answer
Kovalev_D 22:12e6183f04d4 89 }
Kovalev_D 22:12e6183f04d4 90 }
Kovalev_D 22:12e6183f04d4 91 } // GLD_Status
Kovalev_D 22:12e6183f04d4 92
Kovalev_D 22:12e6183f04d4 93 void Sts_Pause(void) //r.------- ïðîöåäóðà ñîñòîÿíèÿ ïàóçû --------------------------------------
Kovalev_D 22:12e6183f04d4 94 {
Kovalev_D 22:12e6183f04d4 95 if (sts_work) //r. ñîñòîÿíèå â àêòèâíîé ôàçå?
Kovalev_D 22:12e6183f04d4 96 {
Kovalev_D 22:12e6183f04d4 97 sts_time--; //r. äåêðåìåíò ñ÷åò÷èêà âðåìåíè ñîñòîÿíèÿ
Kovalev_D 22:12e6183f04d4 98 if (sts_time > 0)
Kovalev_D 22:12e6183f04d4 99 {
Kovalev_D 22:12e6183f04d4 100 return; //r. ïðîäîëæàòü ðàáîòó, ïîêà ñ÷åò÷èê ïîëîæèòåëåí
Kovalev_D 22:12e6183f04d4 101 }
Kovalev_D 22:12e6183f04d4 102 //r. âðåìÿ ñîñòîÿíèÿ êîí÷èëîñü
Kovalev_D 22:12e6183f04d4 103 sts_work = 0; //r. ñáðîñèòü ôëàã àêòèâíîñòè
Kovalev_D 22:12e6183f04d4 104 state_index++; //r. ïåðåäâèíóòü óêàçàòåëü íà ñëåäóþùåå ñîñòîÿíèå
Kovalev_D 22:12e6183f04d4 105 }
Kovalev_D 22:12e6183f04d4 106 else
Kovalev_D 22:12e6183f04d4 107 {
Kovalev_D 22:12e6183f04d4 108 sts_time = Stk_Gld_Start[state_index]; //r. âðåìÿ äàííîãî ñîñòîÿíèÿ
Kovalev_D 22:12e6183f04d4 109 sts_work = 1; //r. óñòàíîâèòü ôëàã àêòèâíîé ôàçû
Kovalev_D 22:12e6183f04d4 110 }
Kovalev_D 22:12e6183f04d4 111 } // Sts_Pause
Kovalev_D 22:12e6183f04d4 112
Kovalev_D 22:12e6183f04d4 113 void Sts_Pulse() //r. ------- ïðîöåäóðà ñîñòîÿíèÿ èìïóëüñà ïîäæèãà --------------------------
Kovalev_D 22:12e6183f04d4 114 {
Kovalev_D 22:12e6183f04d4 115 if (sts_work) //r. ñîñòîÿíèå â àêòèâíîé ôàçå?
Kovalev_D 22:12e6183f04d4 116 {
Kovalev_D 22:12e6183f04d4 117 sts_time--; //r. äåêðåìåíò ñ÷åò÷èêà âðåìåíè ñîñòîÿíèÿ
Kovalev_D 22:12e6183f04d4 118 if (sts_time > 0)
Kovalev_D 22:12e6183f04d4 119 {
Kovalev_D 22:12e6183f04d4 120 return; //r. ïðîäîëæàòü ðàáîòó, ïîêà ñ÷åò÷èê ïîëîæèòåëåí
Kovalev_D 22:12e6183f04d4 121 }
Kovalev_D 22:12e6183f04d4 122 //r. âðåìÿ ñîñòîÿíèÿ êîí÷èëîñü
Kovalev_D 22:12e6183f04d4 123 sts_work = 0; //r. ñáðîñèòü ôëàã àêòèâíîñòè
Kovalev_D 22:12e6183f04d4 124 state_index++; //r. ïåðåäâèíóòü óêàçàòåëü íà ñëåäóþùåå ñîñòîÿíèå
Kovalev_D 22:12e6183f04d4 125
Kovalev_D 22:12e6183f04d4 126 Set_LightUp; //r. ñíÿòü ñèãíàë ïîäæèãà ëàçåðà
Kovalev_D 22:12e6183f04d4 127
Kovalev_D 22:12e6183f04d4 128 }
Kovalev_D 22:12e6183f04d4 129 else
Kovalev_D 22:12e6183f04d4 130 {
Kovalev_D 22:12e6183f04d4 131 sts_time = Stk_Gld_Start[state_index]; //r. âðåìÿ äàííîãî ñîñòîÿíèÿ
Kovalev_D 22:12e6183f04d4 132 sts_work = 1; //r. óñòàíîâèòü ôëàã àêòèâíîé ôàçû
Kovalev_D 22:12e6183f04d4 133
Kovalev_D 22:12e6183f04d4 134 Reset_LightUp; //r. àêòèâèðîâàòü ñèãíàë ïîäæèãà ëàçåðà
Kovalev_D 22:12e6183f04d4 135
Kovalev_D 22:12e6183f04d4 136 }
Kovalev_D 22:12e6183f04d4 137 } // Sts_Pulse
Kovalev_D 22:12e6183f04d4 138
Kovalev_D 22:12e6183f04d4 139 void Sts_Polling(void) //r.========== ïðîöåäóðà ñîñòîÿíèÿ èçìåðåíèÿ è ïðèíÿòèÿ ðåøåíèÿ î çàïóñêå
Kovalev_D 22:12e6183f04d4 140 {
Kovalev_D 22:12e6183f04d4 141 static int32_t Sum_F_ras = 0; //r. èíòåãðàëüíàÿ ñóììà ðàñùåïëåíèÿ äëÿ ïðîöåäóðû ñòàðòà
Kovalev_D 22:12e6183f04d4 142
Kovalev_D 22:12e6183f04d4 143 if (sts_work) //r. ñîñòîÿíèå â àêòèâíîé ôàçå?
Kovalev_D 22:12e6183f04d4 144 {
Kovalev_D 22:12e6183f04d4 145 if (Dif_Curr_Vib >0)
Kovalev_D 22:12e6183f04d4 146 Sum_F_ras = L_add(Sum_F_ras, Dif_Curr_Vib);
Kovalev_D 22:12e6183f04d4 147 else
Kovalev_D 22:12e6183f04d4 148 Sum_F_ras = L_sub(Sum_F_ras, Dif_Curr_Vib);
Kovalev_D 22:12e6183f04d4 149
Kovalev_D 22:12e6183f04d4 150 //r. íåò, ïðîïóñòèòü íàêîïëåíèå ñóììû ðàñùåïëåíèÿ
Kovalev_D 22:12e6183f04d4 151 sts_time--; //r. äåêðåìåíò ñ÷åò÷èêà âðåìåíè ñîñòîÿíèÿ
Kovalev_D 22:12e6183f04d4 152 if (sts_time > 0)
Kovalev_D 22:12e6183f04d4 153 {
Kovalev_D 22:12e6183f04d4 154 return; //r. ïðîäîëæàòü ðàáîòó, ïîêà ñ÷åò÷èê ïîëîæèòåëåí
Kovalev_D 22:12e6183f04d4 155 }
Kovalev_D 22:12e6183f04d4 156 //r. âðåìÿ ñîñòîÿíèÿ êîí÷èëîñü
Kovalev_D 22:12e6183f04d4 157 sts_work = 0; //r. ñáðîñèòü ôëàã àêòèâíîñòè
Kovalev_D 22:12e6183f04d4 158 state_index++; //r. ïåðåäâèíóòü óêàçàòåëü íà ñëåäóþùåå ñîñòîÿíèå
Kovalev_D 22:12e6183f04d4 159 //r. ïðîâåðèòü íàëè÷èå ãåíåðàöèè
Kovalev_D 22:12e6183f04d4 160 if ( Sum_F_ras >= F_RAS_MIN) //e. //r. F_RAS_MIN = 10000 ??? ÷òî ýòî çà åäèíèöû???
Kovalev_D 22:12e6183f04d4 161 {
Kovalev_D 22:12e6183f04d4 162 gyro_Sts |= LASER_ON; //r. èíà÷å ñòàðò ñîñòîÿëñÿ, îòìåòèòü â ðåãèñòðå ñîñòîÿíèÿ
Kovalev_D 22:12e6183f04d4 163 return; //r. ïðèáîðà è çàâåðøàòü ïðîöåññ
Kovalev_D 22:12e6183f04d4 164 }
Kovalev_D 22:12e6183f04d4 165 //r. åñëè îíà ìåíüøå, ãåíåðàöèè íåò
Kovalev_D 22:12e6183f04d4 166 attempt_Str--; //r. äåêðåìåíò ñ÷åò÷èêà ïîïûòîê çàïóñêà ëàçåðà
Kovalev_D 22:12e6183f04d4 167 if (attempt_Str <= 0)
Kovalev_D 22:12e6183f04d4 168 {
Kovalev_D 22:12e6183f04d4 169 return; //r. åñëè ïîïûòêè çàêîí÷åíû, çàâåðøèòü ïðîöåññ
Kovalev_D 22:12e6183f04d4 170 }
Kovalev_D 22:12e6183f04d4 171 //r. èíà÷å óñòàíîâèòü óêàçàòåëü ñîñòîÿíèé íà
Kovalev_D 22:12e6183f04d4 172 state_index = 0; //r. íà÷àëî ïðîöåññà çàïóñêà äëÿ ïîâòîðíîé ïîïûòêè
Kovalev_D 22:12e6183f04d4 173 }
Kovalev_D 22:12e6183f04d4 174 else
Kovalev_D 22:12e6183f04d4 175 {
Kovalev_D 22:12e6183f04d4 176 sts_time = Stk_Gld_Start[state_index]; //r. âðåìÿ äàííîãî ñîñòîÿíèÿ
Kovalev_D 22:12e6183f04d4 177 sts_work = 1; //r. óñòàíîâèòü ôëàã àêòèâíîé ôàçû
Kovalev_D 22:12e6183f04d4 178 Sum_F_ras = 0; //r. ïðåäñáðîñ èíòåãðàëüíîé ñóììû ðàñùåïëåíèÿ
Kovalev_D 22:12e6183f04d4 179 }
Kovalev_D 22:12e6183f04d4 180
Kovalev_D 22:12e6183f04d4 181 } // Sts_Polling
Kovalev_D 22:12e6183f04d4 182
Kovalev_D 22:12e6183f04d4 183
Kovalev_D 22:12e6183f04d4 184 //r.---------- ïðîöåññ çàïóñêà ïðèáîðà -------------------------------------
Kovalev_D 22:12e6183f04d4 185 void GLD_Start(void)
Kovalev_D 22:12e6183f04d4 186 {
Kovalev_D 22:12e6183f04d4 187 if (!start_Rq) //r. ïðîâåðèòü ñîñòîÿíèå çàïðîñà íà çàïóñê ïðèáîðà
Kovalev_D 22:12e6183f04d4 188 {
Kovalev_D 22:12e6183f04d4 189 return; //r. çàïðîñà íåò, âîçâðàò
Kovalev_D 22:12e6183f04d4 190 }
Kovalev_D 22:12e6183f04d4 191
Kovalev_D 22:12e6183f04d4 192 if (!start_Go) //r. ïðîöåññ çàïóñêà åùå íå áûë àêòèâåí?
Kovalev_D 22:12e6183f04d4 193 {
Kovalev_D 22:12e6183f04d4 194 //r. ýòî íà÷àëî çàïóñêà
Kovalev_D 22:12e6183f04d4 195 attempt_Str = N_START_MAX; //r. óñòàíîâèòü ìàêñèìàëüíîå ÷èñëî ïîïûòîê çàïóñêà
Kovalev_D 22:12e6183f04d4 196 //r. ðàçîìêíóòü êîíòóðà ðåãóëÿòîðîâ
Kovalev_D 22:12e6183f04d4 197 //open_loop(VB_FREQ_ON | VB_TAU_ON | WP_REG_ON | HF_REG_ON); // 0xff95
Kovalev_D 22:12e6183f04d4 198 //close_all_loops();
Kovalev_D 22:12e6183f04d4 199
Kovalev_D 22:12e6183f04d4 200 sts_work = 0; //r. ñáðîñèòü ôëàã àêòèâíîé ôàçû ñîñòîÿíèÿ
Kovalev_D 22:12e6183f04d4 201 state_index= 0; //r. óñòàíîâèòü óêàçàòåëü ñîñòîÿíèé â íà÷àëüíîå ïîëîæåíèå
Kovalev_D 22:12e6183f04d4 202 start_Go = 1; //r. ïðîöåññ ñòàðòà íà÷àëñÿ
Kovalev_D 22:12e6183f04d4 203 }
Kovalev_D 22:12e6183f04d4 204
Kovalev_D 22:12e6183f04d4 205 ( *Tab_Gld_Start[state_index] )(); //r. âûçîâ ïðîöåäóðû ñîñòîÿíèÿ ïî íîìåðó â ìàññèâå
Kovalev_D 22:12e6183f04d4 206
Kovalev_D 22:12e6183f04d4 207 if (sts_work) //r. òåêóùåå ñîñòîÿíèå îêîí÷åíî?
Kovalev_D 22:12e6183f04d4 208 {
Kovalev_D 22:12e6183f04d4 209 return; //r. ïðîäîëæàòü îæèäàíèå
Kovalev_D 22:12e6183f04d4 210 }
Kovalev_D 22:12e6183f04d4 211 //r. ñîñòîÿíèå çàêîí÷èëîñü ïðîâåðèòü óêàçàòåëü ñîñòîÿíèé
Kovalev_D 22:12e6183f04d4 212 if ( state_index >= 3 )
Kovalev_D 22:12e6183f04d4 213 {
Kovalev_D 22:12e6183f04d4 214 //r. îêîí÷àíèå ïðîöåññà
Kovalev_D 22:12e6183f04d4 215 //r. ñáðîñèòü ôëàãè
Kovalev_D 22:12e6183f04d4 216 start_Rq = 0; //r. çàïðîñà
Kovalev_D 22:12e6183f04d4 217 start_Go = 0; //r. è àêòèâíîñòè ïðîöåññà
Kovalev_D 22:12e6183f04d4 218 #if !defined COMMAND_DEBUG
Kovalev_D 22:12e6183f04d4 219 Out_G_photo(Device_blk.Str.Gain_Ph_A, Device_blk.Str.Gain_Ph_B); //r. ïîâòîðíî èíèöèàëèçèðîâàòü êîýô-òû ïåðåäà÷è ôîòîïðèåìíèêîâ
Kovalev_D 22:12e6183f04d4 220 #endif
Kovalev_D 22:12e6183f04d4 221 // close_all_loops();
Kovalev_D 22:12e6183f04d4 222
Kovalev_D 22:12e6183f04d4 223 }
Kovalev_D 22:12e6183f04d4 224
Kovalev_D 22:12e6183f04d4 225 } // GLD_Start
Kovalev_D 22:12e6183f04d4 226
Kovalev_D 22:12e6183f04d4 227 void GLD_Pulse(void) //r.---------- ïðîöåññ ïîäæèãà ëàçåðà --------------------------------------
Kovalev_D 22:12e6183f04d4 228 {
Kovalev_D 22:12e6183f04d4 229 if (!pulse_Rq) //r. ïðîâåðèòü ñîñòîÿíèå çàïðîñà íà ïîäæèã ëàçåðà
Kovalev_D 22:12e6183f04d4 230 {
Kovalev_D 22:12e6183f04d4 231 return; //r. çàïðîñà íåò, âîçâðàò
Kovalev_D 22:12e6183f04d4 232 }
Kovalev_D 22:12e6183f04d4 233
Kovalev_D 22:12e6183f04d4 234 if (!pulse_Go) //r. ïðîöåññ ïîäæèãà åùå íå áûë àêòèâåí?
Kovalev_D 22:12e6183f04d4 235 {
Kovalev_D 22:12e6183f04d4 236 sts_work = 0; //r. ñáðîñèòü ôëàã àêòèâíîé ôàçû ñîñòîÿíèÿ
Kovalev_D 22:12e6183f04d4 237 state_index = 0; //r. óñòàíîâèòü óêàçàòåëü ñîñòîÿíèé â íà÷àëüíîå ïîëîæåíèå
Kovalev_D 22:12e6183f04d4 238 pulse_Go = 1; //r. ïðîöåññ ñòàðòà íà÷àëñÿ
Kovalev_D 22:12e6183f04d4 239 }
Kovalev_D 22:12e6183f04d4 240
Kovalev_D 22:12e6183f04d4 241 ( *Tab_Gld_Pulse[state_index] )(); //r. âûçîâ ïðîöåäóðû ñîñòîÿíèÿ ïî íîìåðó â ìàññèâå
Kovalev_D 22:12e6183f04d4 242
Kovalev_D 22:12e6183f04d4 243 if (sts_work) //r. òåêóùåå ñîñòîÿíèå îêîí÷åíî?
Kovalev_D 22:12e6183f04d4 244 {
Kovalev_D 22:12e6183f04d4 245 return; //r. ïðîäîëæàòü îæèäàíèå
Kovalev_D 22:12e6183f04d4 246 }
Kovalev_D 22:12e6183f04d4 247
Kovalev_D 22:12e6183f04d4 248 if ( state_index >= 1 )
Kovalev_D 22:12e6183f04d4 249 {
Kovalev_D 22:12e6183f04d4 250 //r. ñáðîñèòü ôëàãè
Kovalev_D 22:12e6183f04d4 251 pulse_Rq = 0; //r. çàïðîñà
Kovalev_D 22:12e6183f04d4 252 pulse_Go = 0; //r. è àêòèâíîñòè ïðîöåññà
Kovalev_D 22:12e6183f04d4 253 }
Kovalev_D 22:12e6183f04d4 254
Kovalev_D 22:12e6183f04d4 255 } // GLD_Pulse
Kovalev_D 22:12e6183f04d4 256
Kovalev_D 22:12e6183f04d4 257 void contrl_GLD(void) //r.========== ïðîöåäóðà óïðàâëåíèÿ ïðèáîðîì ===============================
Kovalev_D 22:12e6183f04d4 258 {
Kovalev_D 22:12e6183f04d4 259 GLD_Start(); //r. çàïóñòèòü ïðèáîð, åñëè åñòü çàïðîñ
Kovalev_D 22:12e6183f04d4 260 GLD_Status(); //r. ïðîâåðêà ñîñòîÿíèÿ ïðèáîðà
Kovalev_D 22:12e6183f04d4 261 GLD_Stop(); //r. îñòàíîâèòü ïðèáîð, åñëè íåîáõîäèìî
Kovalev_D 22:12e6183f04d4 262 GLD_Pulse(); //r. ãåíåðàöèÿ èìïóëüñà ïîäæèãà ïðè íàëè÷èè çàïðîñà
Kovalev_D 22:12e6183f04d4 263 GLD_Output(); //r. ðåæèìû âûäà÷è äàííûõ èç ãèðîñêîïà
Kovalev_D 22:12e6183f04d4 264 } // contrl_GLD
Kovalev_D 22:12e6183f04d4 265