source: Sophya/trunk/Poubelle/archediab.old/archediab.sources/h/tm.h@ 637

Last change on this file since 637 was 637, checked in by ansari, 26 years ago

archediab version 24 initial import

File size: 6.5 KB
RevLine 
[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
15typedef 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
26typedef 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
46typedef 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
55typedef 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
64typedef 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
74typedef 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
97typedef 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
120typedef 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
155typedef 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
166 int nb_lec_fofo_ext; // communication avec le prog principal: remis a zero apres lecture
167
168 int signal_scan_immediat; // signal scan immediat pour savoir avant
169
170
171 param_bolo param; // liste bolo dans le programme d'interruption
172 reglage_bolo reglage; // etat bolo dans le programme interruption
173
174 detec_sync ds; // registres pour detection synchrone numerique
175 // ----- communication directe avec le prog de lecture_fifo en interruption
176
177
178 var_internes vi; // variables internes du programme d'interruption
179 }
180 tmtc;
181
182extern tmtc *tt;
183
Note: See TracBrowser for help on using the repository browser.