| [637] | 1 | 
 | 
|---|
 | 2 | // Les données télémesure sont formées de blocks de type  block_tm
 | 
|---|
 | 3 | // la table de transfert de ces blocks est la structure  table_tm
 | 
|---|
 | 4 | // la longueur de table telemesure est    longueur_table_tm
 | 
|---|
 | 5 | 
 | 
|---|
 | 6 | 
 | 
|---|
 | 7 | //#define   nb_per_block*2      24                              // nombre de demi periodes dans un block télémesure
 | 
|---|
 | 8 | //#define   longueur_table_tm           20              // nb de blocks dans la table pour transmettre les télémesures
 | 
|---|
 | 9 | //#define   longueur_table_tc   100                     // nb de datas dans la table de télécommandes
 | 
|---|
 | 10 | 
 | 
|---|
 | 11 | //longueur definies dans choix_param
 | 
|---|
 | 12 | 
 | 
|---|
 | 13 | 
 | 
|---|
 | 14 |         //  -----   pour detection synchrone
 | 
|---|
 | 15 | typedef struct          
 | 
|---|
 | 16 |         {       
 | 
|---|
 | 17 |         int     ii[nb_max_bolo];                        // compteur position dans la periode
 | 
|---|
 | 18 |         short   dstable[nb_max_mes_per];                // table les différents ds
 | 
|---|
 | 19 |         short   dsnorme;                                // norme des detections synchrones
 | 
|---|
 | 20 |         long    sommeA[nb_max_bolo];    
 | 
|---|
 | 21 |         long    sommeB[nb_max_bolo];    
 | 
|---|
 | 22 |         }       detec_sync;
 | 
|---|
 | 23 | 
 | 
|---|
 | 24 | 
 | 
|---|
 | 25 | 
 | 
|---|
 | 26 | typedef struct                  //  block telemesure pour dialogue avec les interruptions  
 | 
|---|
 | 27 |         {
 | 
|---|
 | 28 |         unsigned long           temps_cntl[nb_per_block*2];     // temps du controlleur en µsec  
 | 
|---|
 | 29 |         unsigned long           temps_mac[nb_per_block*2];              // temps du mac en sec  
 | 
|---|
 | 30 |         reglage_bolo            reglage;                                        // parametr de reglage des bolos
 | 
|---|
 | 31 |         int                     chauf_regul;                                            
 | 
|---|
 | 32 |         
 | 
|---|
 | 33 |         short                   flag_bolo[nb_max_bolo];                 // flag de lecture detail de la forme de modulation
 | 
|---|
 | 34 |         short                   bol_per[nb_max_bolo][nb_max_mes_per];   // table une periode detail de la forme de modulation
 | 
|---|
 | 35 |         F_donne                 don[nb_per_block*2];            // donnees bolo et synchro pour  "nb_per_block*2" periodes  
 | 
|---|
 | 36 | //*****************************************************************************************
 | 
|---|
 | 37 | #ifdef _archeops        //---------   pour  Archeops    ------------------------------  ***
 | 
|---|
 | 38 | //*****************************************************************************************
 | 
|---|
 | 39 |         block_type_modele               tmtrx;
 | 
|---|
 | 40 | //*****************************************************************************************
 | 
|---|
 | 41 | #endif          //--------------------------------------------------------------------  ***
 | 
|---|
 | 42 | //*****************************************************************************************
 | 
|---|
 | 43 |         }       block_tm;
 | 
|---|
 | 44 | 
 | 
|---|
 | 45 | 
 | 
|---|
 | 46 | typedef struct                  //  block telecommande pour dialogue avec les interruptions  
 | 
|---|
 | 47 |         {
 | 
|---|
 | 48 |         char                    mot[10];        // 10 mots de commande
 | 
|---|
 | 49 |         }
 | 
|---|
 | 50 |         block_tc;
 | 
|---|
 | 51 | 
 | 
|---|
 | 52 | 
 | 
|---|
 | 53 | 
 | 
|---|
 | 54 | 
 | 
|---|
 | 55 | typedef struct                  //  table courante telemesure pour dialogue avec les interruptions  
 | 
|---|
 | 56 |         {
 | 
|---|
 | 57 |         
 | 
|---|
 | 58 |         int                             pos_ecrit;                                              // position dans la table 
 | 
|---|
 | 59 |         int                             pos_lit;
 | 
|---|
 | 60 |         block_tm                btm[longueur_table_tm];                 // longueur_table_tm  blocks de telemesure
 | 
|---|
 | 61 |         }
 | 
|---|
 | 62 |         table_tm;
 | 
|---|
 | 63 | 
 | 
|---|
 | 64 | typedef struct                  //  table courante telemesure pour dialogue avec les interruptions  
 | 
|---|
 | 65 |         {
 | 
|---|
 | 66 |         
 | 
|---|
 | 67 |         int                             pos_ecrit;                                              // position dans la table 
 | 
|---|
 | 68 |         int                             pos_lit;
 | 
|---|
 | 69 |         block_tc                btc[longueur_table_tc];                 // longueur_table_tc  blocks de telecommande
 | 
|---|
 | 70 |         }
 | 
|---|
 | 71 |         table_tc;
 | 
|---|
 | 72 | 
 | 
|---|
 | 73 | 
 | 
|---|
 | 74 | typedef struct                  //  parametres de regul dans les interruptions  
 | 
|---|
 | 75 |         {
 | 
|---|
 | 76 |         regul_p_i_d     pid;
 | 
|---|
 | 77 | 
 | 
|---|
 | 78 |         long            valeur;
 | 
|---|
 | 79 |         long            anc_ecart;
 | 
|---|
 | 80 |         int             compteur;       
 | 
|---|
 | 81 |         double          tint;
 | 
|---|
 | 82 |         int             cc;
 | 
|---|
 | 83 | //      int             per_raz;        // nombre de periode entre 2 raz (zero tension sur la modulation)
 | 
|---|
 | 84 | //      int             nb_raz;         // nombre de periode courant
 | 
|---|
 | 85 |         }
 | 
|---|
 | 86 |         param_regul;
 | 
|---|
 | 87 | 
 | 
|---|
 | 88 | 
 | 
|---|
 | 89 | //*****************************************************************************************
 | 
|---|
 | 90 | //                                                                                      ***
 | 
|---|
 | 91 | #ifdef _archeops        //---------   pour  Archeops    ------------------------------  ***
 | 
|---|
 | 92 | //                                                                                      ***
 | 
|---|
 | 93 | //*****************************************************************************************
 | 
|---|
 | 94 | 
 | 
|---|
 | 95 | 
 | 
|---|
 | 96 | 
 | 
|---|
 | 97 | typedef struct                  //  variables internes du programme d'interruption pour Archeops  
 | 
|---|
 | 98 |         {
 | 
|---|
 | 99 |         unsigned long   temps_cntl;             // temps courant du controlleur en unite de 4.8 µsec ??? en demi periodes  
 | 
|---|
 | 100 | 
 | 
|---|
 | 101 |         int             a;                      //  compteur pour check debut et fin de block
 | 
|---|
 | 102 |         int             b;                      //  compteur de mot 32 bit dans un block
 | 
|---|
 | 103 |         int             c;                      //  compteur de bytes dans un mot 32 bit
 | 
|---|
 | 104 | 
 | 
|---|
 | 105 |         block_type_modele       btt;                    //  le plus gros des blocs telemesure transputer dans arc_com.h
 | 
|---|
 | 106 | //*****************************************************************************************
 | 
|---|
 | 107 | #ifdef _sans_transputer         //---------   pour  Archeops avec ctb    -------------  ***
 | 
|---|
 | 108 |         char            bkb[nb_per_block*nb_max_mes_per*5];     //  le block brut venant des bebo
 | 
|---|
 | 109 | #endif          //--------------------------------------------------------------------  ***
 | 
|---|
 | 110 | //*****************************************************************************************
 | 
|---|
 | 111 |         }
 | 
|---|
 | 112 |         var_internes;
 | 
|---|
 | 113 | 
 | 
|---|
 | 114 | //*****************************************************************************************
 | 
|---|
 | 115 | //                                                                                      ***
 | 
|---|
 | 116 | #else                   //---------   pour  Diabolo    ------------------------------   ***
 | 
|---|
 | 117 | //                                                                                      ***
 | 
|---|
 | 118 | //*****************************************************************************************
 | 
|---|
 | 119 | 
 | 
|---|
 | 120 | typedef struct                  //  variables internes du programme d'interruption pour diabolo  
 | 
|---|
 | 121 |         {
 | 
|---|
 | 122 |         int             aa;                                     //  pour deux lectures fifo par point
 | 
|---|
 | 123 |         int             a;                                      // compteur bit dans un mot
 | 
|---|
 | 124 |         int             i;                                      // compteur position générale dans la periode
 | 
|---|
 | 125 |         long            debut_per;                              // flag debut de periode
 | 
|---|
 | 126 | 
 | 
|---|
 | 127 |         int             numbol;                                 // le numero de bolo en cours de lecture par la bebo
 | 
|---|
 | 128 |         long            mot[nb_max_bolo];                       // mot pour lecture de chaque voie ADC (phase en bit 12)
 | 
|---|
 | 129 |         long            motsauve[nb_max_bolo][nb_max_mes_per];  // mot pour sauve mot precedent
 | 
|---|
 | 130 |                 
 | 
|---|
 | 131 |         char            synchro[nb_sync];                       // pour calcul interne des synchro avant de les envoyer
 | 
|---|
 | 132 |                 
 | 
|---|
 | 133 |                 
 | 
|---|
 | 134 |         int             flag_ecriture_data;                     // flag pour ecrire les data sur le bus PCI
 | 
|---|
 | 135 |         int             pos_block_tm;                           // position pour ecriture des données dans un block tm
 | 
|---|
 | 136 |                 
 | 
|---|
 | 137 |         unsigned long   temps_cntl;                             // temps courant du controlleur en µsec ou demi-periodes  
 | 
|---|
 | 138 |                 
 | 
|---|
 | 139 |         param_regul     reg;                                    //  ------  parametres de la regulation
 | 
|---|
 | 140 |         
 | 
|---|
 | 141 |         }
 | 
|---|
 | 142 |         var_internes;
 | 
|---|
 | 143 | 
 | 
|---|
 | 144 | //*****************************************************************************************
 | 
|---|
 | 145 | //                                                                                      ***
 | 
|---|
 | 146 | #endif          //--------------------------------------------------------------------  ***
 | 
|---|
 | 147 | //                                                                                      ***
 | 
|---|
 | 148 | //*****************************************************************************************
 | 
|---|
 | 149 | 
 | 
|---|
 | 150 | 
 | 
|---|
 | 151 | 
 | 
|---|
 | 152 | //----------------------  structure complete  tm  +  tc  +  interne  tache
 | 
|---|
 | 153 | 
 | 
|---|
 | 154 | 
 | 
|---|
 | 155 | typedef struct                  //  global connu de la tache et du prog principal  
 | 
|---|
 | 156 |         {
 | 
|---|
 | 157 |         int                     PCI_actif;              //      le PCI est actif
 | 
|---|
 | 158 | 
 | 
|---|
 | 159 |         
 | 
|---|
 | 160 |         table_tm                tm;                     //      table de telemesure  
 | 
|---|
 | 161 |         table_tc                tc;                     //      table de télécommande
 | 
|---|
 | 162 | 
 | 
|---|
 | 163 |         table_erreur            te;                     //      table courante pour gestion des erreurs de bus PCI
 | 
|---|
 | 164 | 
 | 
|---|
 | 165 |         int                     nb_lec_fofo_int;        //  nombre maxi de lectures dans la fifo en un coups d'interrupt
 | 
|---|
| [649] | 166 |         int                     val_con_fifo;           
 | 
|---|
 | 167 |         int                     val_con_donnee;         
 | 
|---|
 | 168 |         int                     val_con_pile;           
 | 
|---|
 | 169 |         int                     val_con_erreur;         
 | 
|---|
| [637] | 170 |         int                     signal_scan_immediat;   //  signal scan immediat pour savoir avant
 | 
|---|
 | 171 | 
 | 
|---|
 | 172 | 
 | 
|---|
 | 173 |         param_bolo              param;                  //      liste bolo dans le programme d'interruption
 | 
|---|
 | 174 |         reglage_bolo            reglage;                        //      etat bolo dans le programme interruption        
 | 
|---|
 | 175 |         
 | 
|---|
 | 176 |         detec_sync              ds;                     //      registres pour detection synchrone numerique
 | 
|---|
 | 177 |                                         //  -----   communication directe avec le  prog de lecture_fifo en interruption 
 | 
|---|
 | 178 | 
 | 
|---|
 | 179 | 
 | 
|---|
 | 180 |         var_internes    vi;                                     //  variables internes du programme d'interruption
 | 
|---|
 | 181 |         }
 | 
|---|
 | 182 |         tmtc;
 | 
|---|
 | 183 | 
 | 
|---|
 | 184 | extern  tmtc  *tt;
 | 
|---|
 | 185 | 
 | 
|---|