source: Sophya/trunk/Poubelle/archediab.old/archediab.sources/c/senseur_stellaire.c@ 639

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

archediab 25

File size: 4.4 KB
Line 
1#include "diabolo.h"
2#include "senseur_stellaire.h"
3
4int diodes[12]={1,2,3,4,5,6,7,8,9,10,11,12};
5
6
7//-------------------- fonction exec de la fenetre : senseur_stellaire -------------------------------
8
9
10void exec_senseur_stellaire(int fen,int item,double valeur,...)
11{
12if(item>1000) item-=1000; // pour appeler le case pour tous les cara d'un edit texte
13
14switch(item)
15 {
16 case ouverture :
17
18 break;
19 case fermeture :
20 break;
21 case sst_azer :
22 break;
23 case sst_sortie_brute :
24 break;
25 default : break;
26 }
27}
28
29//#define bit_sst(i,j,k) (((blk->sst[i][i*3+k/4])>>(j+8*k%4))&1)
30
31
32// i est le numero du point dans le block de 72
33// j est le numero de la diode de 0 a 47
34// j%8 est la place du bit dans le mot de 8 bit
35// j/8 (de 0 a 5 ) est la serie de mesure
36// k est le numero du bit dans le mot de 12 bits
37// les k se suivent dans les données
38
39// k est le numero du point dans le block de 72
40// i est le numero de la diode de 0 a 47
41// j est le paquet de 4 bits de 0 a 2
42
43
44// on prend des paquets de 4 bits
45// chaque diode est formee de 3 paquets
46// dans l'ordre : les paquets de 8 diodes (8 paquets)
47// recommencer 3 fois (24 paquets)
48// enfin, faire 6 fois cette operation (144 paquets)
49
50// soit q la place du paquet i,j,k
51#define place_paquet(i,j) (i/8) * 24 + j*8 + (i%8)
52
53
54void traite_block_sst(block_type_sst* blk)
55{
56int i,j,k;
57double y[15];
58double x;
59
60int temps_cntl;
61double secondes;
62int a,b,b0,b1,b2;
63int prem_d;
64
65if(!fenetre(fenetre_senseur_stellaire)) return;
66// ecriture des valeurs brutes du senseur stellaire
67// les numero 0 et 4 sont dediés aux thermometres
68// pour l'instant machent bien 1 2 3 8 9 10 11
69if(litD(fenetre_senseur_stellaire,sst_sortie_brute,0))
70 {
71 if(!fenetre(fenetre_senseur_stellaire_lecture_brute)) nouveauT(fenetre_senseur_stellaire_lecture_brute,0,"lecture senseur stellaire");
72
73 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"\nsenseur stellaire \n");
74
75
76// k=0;
77 for(k=0;k<4;k++)
78 {
79 for(i=0;i<16;i++) // 16 senseurs
80 {
81 for(j=0;j<3;j++) // 3 paquets
82 {
83 a=place_paquet(i,j);
84 b= ( blk->sst[k][a/8] >>( (a%8)*4) ) & 0xf;
85 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"%x",b);
86 }
87 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f," ");
88 }
89 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"\n");
90 }
91
92 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"\n");
93
94 }
95
96//k=0;
97prem_d=litD(fenetre_senseur_stellaire,sst_prem_diode,0L);
98for(k=0;k<72;k++)
99 {
100 for(i=0;i<12;i++) // seulement les 8 premieres diodes
101 {
102 int q;
103 q=i+4;
104 if(i>3 ) q=i+8;
105 if(i>7 ) q=i+12;
106 q=diodes[i];
107 q=i+prem_d-1;
108
109 a=place_paquet(q,0);
110 b0= ( blk->sst[k][a/8] >>( (a%8)*4) ) & 0xf;
111 a=place_paquet(q,1);
112 b1= ( blk->sst[k][a/8] >>( (a%8)*4) ) & 0xf;
113 a=place_paquet(q,2);
114 b2= ( blk->sst[k][a/8] >>( (a%8)*4) ) & 0xf;
115
116
117 x=(double)( (b0<<8) | (b1<<4) | b2 ) ;
118 if(x>2047) x-=4096;
119 y[i]=x;
120 }
121// printf(" y = %g %g %g %g %g \n",y[0],y[1],y[2],y[3],y[4]);
122 temps_cntl =numero_block(blk)*nb_per_block*2+k;
123 secondes=gg->periode_echantillonage*(double)temps_cntl-gg->temps_origine;
124 tracen(fenetre_senseur_stellaire,12,secondes,y);
125 }
126}
127
128
129
130// les 46 valeurs en hexa
131// i=0; // juste le premier point du block
132// for(i=0;i<72;i++)
133/*
134for(i=0;i<72;i++)
135 {
136
137 for(j=0;j<12;j++) // seulement les 12 premieres diodes
138 {
139 x=0;
140 for(k=0;k<12;k++) x=(x<<1) | bit_sst(i,j,k);
141 y[j]=(double)x;
142 }
143 temps_cntl =numero_block(blk)*nb_per_block*2+i;
144 secondes=gg->periode_echantillonage*(double)temps_cntl-gg->temps_origine;
145 tracen(fenetre_senseur_stellaire,12,secondes,y);
146 }
147
148*/
149/* i=1; // juste le premier point du block
150// for(i=0;i<72;i++)
151 {
152 for(k=0;k<12;k++) // 12 bits
153 {
154 for(j=0;j<35;j++) // 46 senseurs
155 {
156 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"%d ",bit_sst(i,j,k));
157 }
158 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"\n");
159 }
160 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"\n");
161 }
162
163// les 46 valeurs en hexa
164// i=0; // juste le premier point du block
165// for(i=0;i<72;i++)
166 for(i=0;i<10;i++)
167 {
168 for(j=0;j<35;j++) // 46 senseurs
169 {
170 x=0;
171 for(k=0;k<12;k++) x=(x<<1) | bit_sst(i,j,k);
172 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"%3x ",x);
173 }
174 ecritT(fenetre_senseur_stellaire_lecture_brute,fin_f,"\n");
175 }
176
177
178 }
179
180
181*/
Note: See TracBrowser for help on using the repository browser.