Changeset 639 in Sophya for trunk/Poubelle/archediab.old/archediab.sources/c
- Timestamp:
- Nov 25, 1999, 2:07:25 PM (26 years ago)
- Location:
- trunk/Poubelle/archediab.old/archediab.sources/c
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Poubelle/archediab.old/archediab.sources/c/acqui_util.c
r637 r639 29 29 if(parametr.n_max_mes_per!=nb_max_mes_per) {erreur("erreur nb_max_mes_per\n");return;} 30 30 if(parametr.nb_bolo!=nb_bolo_util) {erreur("erreur nb_bolo_util\n");return;} 31 32 gg->reglage=reglage_standard[0]; 31 33 32 34 for(j=0;j<nb_max_bolo;j++) … … 227 229 if((b!=gg->reglage.horloge.nb_mesures) ou clavier(touche_alt) ) emission_tc_reduite(tc2_horloge,tc3_nb_mesures,b); 228 230 if((tm!=gg->reglage.horloge.temp_mort) ou clavier(touche_alt) ) emission_tc_reduite(tc2_horloge,tc3_temp_mort,tm); 229 if( (flag!=gg->reglage.horloge.flag) ou clavier(touche_alt) )emission_tc_reduite(tc2_horloge,tc3_flag,flag);231 if(flag ou (flag!=gg->reglage.horloge.flag) ou clavier(touche_alt) ) emission_tc_reduite(tc2_horloge,tc3_flag,flag); 230 232 } 231 233 -
trunk/Poubelle/archediab.old/archediab.sources/c/acquisition_archeops.c
r637 r639 190 190 { 191 191 blk_sync2 = *blk; 192 }193 /*194 int i,j;195 196 for (i=0;i<nb_per_block*2;i++) for(j=0;j<nb_sync;j++)197 gg->don.sync[j]=blk->synchro[j][i];198 192 // ne fait rien: le block synchro precede toujours le block bolo 199 193 } 200 */ 194 201 195 202 196 … … 210 204 #define blk2 ((block_type_bolo*)(&bktm)) // pointeur sur la memoire locale 211 205 // maintenant, decomprime blk pour le reecrire dans blk2 212 printf("comprime: ds1= %x , %x ds2= %x , %x ",206 /*printf("comprime: ds1= %x , %x ds2= %x , %x ", 213 207 ( (blk->data_bolo[0][0] & 0xffff0000)>>11 ) & 0x001fffe0, 214 208 ( (blk->data_bolo[0][0] & 0x0000ffff)<<5 ) & 0x001fffe0, 215 209 ( (blk->data_bolo[1][0] & 0xffff0000)>>11 ) & 0x001fffe0, 216 210 ( (blk->data_bolo[1][0] & 0x0000ffff)<<5 ) & 0x001fffe0); 217 211 */ 218 212 for(j=0;j<nb_bolo_util;j++) 219 213 { 220 decompress_7_2( blk->data_bolo[j],blk2->data_bolo[j],nb_per_block*2);221 } 222 223 printf("ds1= %x , %x ds2= %x , %x \n",214 decompress_7_2((long *)blk->data_bolo[j],blk2->data_bolo[j],nb_per_block*2); 215 } 216 217 /*printf("ds1= %x , %x ds2= %x , %x \n", 224 218 blk2->data_bolo[0][0], 225 219 blk2->data_bolo[0][1], 226 220 blk2->data_bolo[1][0], 227 221 blk2->data_bolo[1][1]); 228 222 */ 229 223 valide_block(&bktm,block_bolo,numero_block(blk)); // pour recopier le numero de block 230 224 traite_block_bolo(blk2); … … 277 271 278 272 #define val_DS(j,i) (blk->data_bolo[j][i]&0x1fffff) 279 #define synchro_DS(j,i) (blk->data_bolo[j][i]>>20)273 //#define synchro_DS(j,i) ((blk->data_bolo[j][i]>>20)&1) 280 274 281 275 for (i=0;i<nb_per_block*2;i++) … … 291 285 } 292 286 293 for(j=0;j<nb_sync;j++) gg->don.sync[j]=synchro_DS(j,i); 287 for(j=0;j<nb_sync;j++) 288 { 289 gg->don.sync[j]=blk_sync2.synchro[i][j]; 290 } 291 292 293 // gg->don.sync[j]=synchro_DS(j,i); 294 294 295 295 gg->temps_cntl=num_block_local*nb_per_block*2+i; // temps controlleur en demi-periodes -
trunk/Poubelle/archediab.old/archediab.sources/c/acquisition_general.c
r637 r639 165 165 break; 166 166 167 case e_helium : { 168 long ll=(long)(&(gg->reglage.dilu.helium))-(long)(&(gg->reglage.dilu)); 169 int a=(int) valeur; 170 emission_tc_reduite(tc2_auto_dilu,ll,a); 171 } 172 break; 173 167 174 case e_chauf : { 168 175 long ll=(long)(&(gg->reglage.dilu.chauffage))-(long)(&(gg->reglage.dilu)); … … 170 177 emission_tc_reduite(tc2_auto_dilu,ll,a); 171 178 } 179 break; 180 181 case e_cmd : emission_tc_reduite(tc2_horloge,tc3_commande,(int) valeur); 182 ecritD(fen,e_cmd,0); 172 183 break; 173 184 -
trunk/Poubelle/archediab.old/archediab.sources/c/bolo.c
r637 r639 38 38 graph->graduations=0; 39 39 graph->sans_image=1; 40 graph->avec_icones=0; 40 graph->avec_icones=0; 41 graph->aspect=0; 41 42 graph->xtitre[0]=0; 42 43 graph->ytitre[0]=0; -
trunk/Poubelle/archediab.old/archediab.sources/c/courbeVI.c
r637 r639 19 19 int i,j;double I,V,A,nep;int c;double x[50]; 20 20 double y[nb_max_bolo+1]; 21 21 def_gains 22 22 switch(item) 23 23 { … … 97 97 98 98 if(litD(fen,cvi_precis,0L)) posi++; else posi+=2; 99 printf(" posi=%d \n",posi); 100 if(posi>=25) {son(133);posi=0;tachedefond(fen,-1);} 101 99 102 if(!fenetre(fenetre_automatismes)) 100 103 ouvreD(fenetre_automatismes,automatismes_id,"automatismes",exec_automatismes); … … 126 129 for(j=0;j<nb_max_bolo;j++) 127 130 { 128 y[j]=calcV(j+1)*1e-3; // mV 131 y[j]=(calcV(j+1)-xbolbrut(j))*1e-3; 132 // corrigée du déséquilibre en µV puis transformé en mV 129 133 } 130 134 montracen(fen,nb_max_bolo,I,y); -
trunk/Poubelle/archediab.old/archediab.sources/c/diabolo.c
r637 r639 43 43 //flag=alerte(3," Archeops ou Planck \r\r acquisition avec carte PCI ??"); // vaut 1 pour acquisition PCI 44 44 //flag=2; // en mode simulation 45 if( !clavier(touche_alt) ) flag=2; else flag=1; // en mode acquisition45 if(clavier(touche_alt) ) flag=2; else flag=1; // en mode acquisition 46 46 #endif 47 47 … … 116 116 */ 117 117 118 118 119 if(flag==1) // mets en route les interruptions 119 120 { -
trunk/Poubelle/archediab.old/archediab.sources/c/dilution.c
r637 r639 24 24 #define ecrit_switch(val,ii,bit) {if(val) ii=ii | bit ;else ii=ii& (0xffffffff^bit) ;} 25 25 #define calib(j) litD(fenetre_dilution_calibration,j,0L) 26 27 28 29 // fonction ecrit un bit des switch dilution 30 // c'est une telecommande normale 64 bit a supprimer 31 // la telecommande passe a travers le transputer sans etre traitee par lui 32 // elle arrive directement sur l'EPLD 33 26 34 void ecrit_bit_dilution(int valeur,int bit); 27 35 … … 47 55 mot_tc[5]=(i>>16)&0xff; 48 56 mot_tc[6]=(i>>24)&0xff; 57 mot_tc[7]=0; 58 emission_telecommande(tc_dir_transputer,mot_tc); 59 } 60 61 // fonction ecrit un des dac dilution 62 // c'est une telecommande normale 64 bit a supprimer 63 // la telecommande passe a travers le transputer sans etre traitee par lui 64 // elle arrive directement sur l'EPLD 65 66 void ecrit_dac_dilution(void); 67 68 void ecrit_dac_dilution(void) 69 { 70 char mot_tc[10]; 71 int k; 72 unsigned long i,j; 73 i=litD(fenetre_dilution,dil_dac_1,0); // les 2 bits adresse du dac 74 i=i<<14; i+=litD(fenetre_dilution,dil_dac_2,0); // les 12 bits valeur du dac 75 // ranger les bits a l'envers; 76 j=0; for(k=0;k<16;k++) {j=(j<<1) | (i&1);i=i>>1;} 77 mot_tc[0]=tc_dac_dil; 78 mot_tc[1]=(j)&0xff; 79 mot_tc[2]=(j>>8)&0xff; 80 mot_tc[3]=0; 81 mot_tc[4]=0; 82 mot_tc[5]=0; 83 mot_tc[6]=0; 49 84 mot_tc[7]=0; 50 85 emission_telecommande(tc_dir_transputer,mot_tc); … … 101 136 case dil_ch6 : ecrit_bit_dilution((int)valeur,chauffage6); break; 102 137 case dil_ch7 : ecrit_bit_dilution((int)valeur,chauffage7); break; 138 139 // case dil_dac_1 : 140 // case dil_dac_2 : 141 case dil_envoi_dac : ecrit_dac_dilution(); break; 103 142 104 143 default : break; … … 142 181 ecritD(fenetre_dilution,dil_EVV_retour,((blk->switch_dil&vanne_EVV)?1:0)); 143 182 183 184 185 // les temperatures sur les cartes modifiées 186 { 187 double I,V,R[4]; 188 int j,k; 189 def_gains; 190 k=0; 191 for(j=0;(j<nb_max_bolo) && (k<4);j++) 192 { 193 if(parametr.bolo[j].bolo_code_util==bolo_thermo_simplifie) 194 { 195 I = 1e-3 * (double)dac_V(gg->reglage.bolo[j]) * 2441. / parametr.bolo[j].bolo_capa; // I en µA 196 V=0.001*bol_micro_volt(blk->temperature[k],(double)parametr.bolo[j].bolo_gain*gain_ampli(gg->reglage.bolo[j])); 197 if(I>0.0000001) R[k]=V/I; else R[k]=0; // R en 198 k++; 199 } 200 } 201 202 if(R[0]<90.) ecritD(fenetre_dilution,dil_temp,"germ= %6.2f 4K=%5.1f 1.6K=%5.1f 10K=%5.1f",R[0],R[1],R[2],R[3]); 203 else ecritD(fenetre_dilution,dil_temp,"germ= %6.3fk 4K=%5.1f 1.6K=%5.1f 10K=%5.1f",R[0]*0.001,R[1],R[2],R[3]); 204 if(litD(fenetre_dilution,dil_trace_tempe,0))// trace les sondes de niveau helium 205 { 206 int temps_cntl=numero_block(blk)*nb_per_block*2; 207 double secondes,minutes; 208 secondes=gg->periode_echantillonage*(double)temps_cntl; 209 minutes=secondes/60.; 210 if(!fenetre(fenetre_temperature_dil)) 211 { 212 nouveauD(fenetre_temperature_dil,0,"temperature_dil",0); 213 selectgra(fenetre_temperature_dil); 214 strcpy(graph->xtitre,"minutes"); 215 } 216 tracen(fenetre_temperature_dil,4,minutes,R); 217 } 218 } 219 144 220 // les pressions et debits metres des injections de la dilution 145 221 ecritD(fenetre_dilution,dil_p_d_3He,"3He: %4.1fb -> %5.2fµm/s -> %4.1fb" 146 ,40. * val_multiplex(p_R3) // 200 bars pour 5V222 ,40. * val_multiplex(p_R3) -1.6 // 200 bars pour 5V et 1.6 bar d'offset 147 223 ,2. * val_multiplex(d_3He) // 10 MICRO MOLES pour 5V 148 224 ,20. * val_multiplex(p_C3) // 100 bars pour 5V … … 151 227 ,40. * val_multiplex(p_R4) // 200 bars pour 5V 152 228 ,8. * val_multiplex(d_4He) // 40 MICRO MOLES pour 5V 229 // ,4. * val_multiplex(d_4He) // 20 MICRO MOLES pour 5V 153 230 ,20. * val_multiplex(p_C4) // 100 bars pour 5V 154 231 ); … … 227 304 // lecture des sondes de niveau helium 228 305 229 //if(blk->switch_dil & switch_helium ) 230 if(1) 306 231 307 { 232 308 double y[8]; 309 static int niveau_pre; 233 310 int niveau,fin; 311 // printf("dilution : numero de block = %d \n",numero_block(blk)); 234 312 changecontrole(fenetre_dilution,dil_niveau_helium,idem,idem,idem,idem,calrefcon(0,0,rouge,blanc,blanc),""); 235 313 y[0]=val_multiplex(j_he1)-calib(dil_j_he1); … … 241 319 y[6]=val_multiplex(j_he7)-calib(dil_j_he7); 242 320 y[7]=val_multiplex(j_he8)-calib(dil_j_he8); 243 niveau=0;fin=0; 244 for(i=0;i<8;i++) 321 if(blk->switch_dil & switch_helium) 245 322 { 246 if(y[i]>0.1) { 247 niveau++; 248 if(fin) niveau=9; 249 } 250 else fin=1; 323 changecontrole(fenetre_dilution,dil_niveau_helium,idem,idem,idem,idem,calrefcon(0,0,rouge,blanc,blanc),""); 324 niveau=0;fin=0; 325 for(i=0;i<8;i++) 326 { 327 if(y[i]>0.1) { 328 niveau++; 329 if(fin) niveau=9; 330 } 331 else fin=1; 332 } 333 // if(niveau==9) changecontrole(fenetre_dilution,dil_niveau_helium,idem,idem,idem,idem 334 // ,calrefcon(0,0,jaune,blanc,blanc),""); 335 if(niveau<niveau_pre) niveau_pre=0; 336 else {niveau_pre=niveau; ecritD(fenetre_dilution,dil_niveau_helium,niveau);} 337 // printf("niveau=%d \n",niveau); 251 338 } 252 if(niveau==9) changecontrole(fenetre_dilution,dil_niveau_helium,idem,idem,idem,idem 253 ,calrefcon(0,0,jaune,blanc,blanc),""); 254 ecritD(fenetre_dilution,dil_niveau_helium,niveau); 255 // printf("niveau=%d \n",niveau); 339 else changecontrole(fenetre_dilution,dil_niveau_helium,idem,idem,idem,idem,calrefcon(0,0,vert,blanc,blanc),""); 256 340 257 341 if(litD(fenetre_dilution,dil_trace_helium,0))// trace les sondes de niveau helium … … 270 354 } 271 355 } 272 else 273 { 274 changecontrole(fenetre_dilution,dil_niveau_helium,idem,idem,idem,idem,calrefcon(0,0,vert,blanc,blanc),""); 275 } 276 277 278 } 279 280 356 357 } 358 359 -
trunk/Poubelle/archediab.old/archediab.sources/c/menu.c
r637 r639 22 22 void ferme_annexe(void); 23 23 24 int ann;24 int j,ann; 25 25 26 26 void exec_menu_diabolo(int fen,int item,double valeur,...) … … 34 34 sauve_reglage(2);*/ 35 35 break; 36 case d_trace_tout : ouvreD(0,trace_tout_id ,"trace tout" ,exec_trace_tout ); 36 case d_trace_tout : for(j=0;j<8;j++) printf(" tracetout %d = %d \n",j,gg->trace_tout[j]); 37 ouvreD(0,trace_tout_id ,"trace tout" ,exec_trace_tout ); 37 38 break; 38 39 // case d_trace_tout : if(fenetre(fenetre_trace_tout)) select(fenetre_trace_tout); -
trunk/Poubelle/archediab.old/archediab.sources/c/reglage.c
r637 r639 2 2 #include "reglage.h" 3 3 4 #define uc(iii) (((long)(iii))&0xff) 5 #define us(iii) (((long)(iii))&0xffff) 4 6 5 7 void param_reglage(void) … … 138 140 139 141 ecritT(fenetre_fichier_archeops_c,insert_f,"/*debut reglage %d */\n",num); 140 ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d},\n",gg->reglage.horloge.periode,gg->reglage.horloge.nb_mesures 141 ,gg->reglage.horloge.temp_mort,gg->reglage.horloge.flag); 142 142 143 /*********** structure normale pour le mac ****************/ 144 ecritT(fenetre_fichier_archeops_c,insert_f,"#ifdef programme\n"); 145 146 /* ecrit horloge */ 147 ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d},\n",uc(gg->reglage.horloge.periode),uc(gg->reglage.horloge.nb_mesures) 148 ,uc(gg->reglage.horloge.temp_mort),uc(gg->reglage.horloge.flag)); 149 150 /* ecrit vitesses */ 143 151 for(i=0;i<nb_type_blocks;i++) 144 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",%d\n",gg->reglage.vitesse[i]); else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d\n",gg->reglage.vitesse[i]); } 145 146 ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n"); 147 152 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",%d\n",uc(gg->reglage.vitesse[i])); else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d\n",uc(gg->reglage.vitesse[i])); } 153 154 ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n"); 155 156 /* ecrit reglage_un_bolo : 2 mots long */ 148 157 for(i=0;i<nb_max_bolo;i++) 149 158 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d}\n",gg->reglage.bolo[i].mot1,gg->reglage.bolo[i].mot2); … … 152 161 153 162 ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n"); 154 163 164 /* ecrit auto_bolo 4 char */ 155 165 for(i=0;i<nombre_de_voies;i++) 156 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d,%d,%d}\n",gg->reglage.autom[i].mode,gg->reglage.autom[i].gain,gg->reglage.autom[i].courant,gg->reglage.autom[i].delai); 157 else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d}\n",gg->reglage.autom[i].mode,gg->reglage.autom[i].gain,gg->reglage.autom[i].courant,gg->reglage.autom[i].delai); 158 } 159 160 ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n"); 161 166 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d,%d,%d}\n",uc(gg->reglage.autom[i].mode),uc(gg->reglage.autom[i].gain),uc(gg->reglage.autom[i].courant),uc(gg->reglage.autom[i].delai)); 167 else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d}\n",uc(gg->reglage.autom[i].mode),uc(gg->reglage.autom[i].gain),uc(gg->reglage.autom[i].courant),uc(gg->reglage.autom[i].delai)); 168 } 169 170 ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n"); 171 172 /* ecrit regul_bolo */ 162 173 for(i=0;i<nombre_de_regul;i++) 163 174 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d,%d,%d,%d,%d,%d}\n" 164 , gg->reglage.regul[i].mode,gg->reglage.regul[i].num_bolo,gg->reglage.regul[i].voie_chauf,gg->reglage.regul[i].prop165 , gg->reglage.regul[i].integ,gg->reglage.regul[i].deriv,gg->reglage.regul[i].chauffage);175 ,uc(gg->reglage.regul[i].mode),uc(gg->reglage.regul[i].num_bolo),uc(gg->reglage.regul[i].voie_chauf),uc(gg->reglage.regul[i].prop) 176 ,uc(gg->reglage.regul[i].integ),uc(gg->reglage.regul[i].deriv),us(gg->reglage.regul[i].chauffage)); 166 177 else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d,%d,%d,%d}\n" 167 ,gg->reglage.regul[i].mode,gg->reglage.regul[i].num_bolo,gg->reglage.regul[i].voie_chauf,gg->reglage.regul[i].prop 168 ,gg->reglage.regul[i].integ,gg->reglage.regul[i].deriv,gg->reglage.regul[i].chauffage); 169 } 170 178 ,uc(gg->reglage.regul[i].mode),uc(gg->reglage.regul[i].num_bolo),uc(gg->reglage.regul[i].voie_chauf),uc(gg->reglage.regul[i].prop) 179 ,uc(gg->reglage.regul[i].integ),uc(gg->reglage.regul[i].deriv),us(gg->reglage.regul[i].chauffage)); 180 } 181 182 /* ecrit auto_dilu */ 171 183 ecritT(fenetre_fichier_archeops_c,insert_f,"},{%d,%d,%d,%d,%d,%d,%d,%d} \n" 172 ,gg->reglage.dilu.vanne,gg->reglage.dilu.helium,gg->reglage.dilu.chauffage,gg->reglage.dilu.piles 173 ,gg->reglage.dilu.transmission,gg->reglage.dilu.temps_max_vanne,gg->reglage.dilu.xx7,gg->reglage.dilu.xx8); 174 184 ,uc(gg->reglage.dilu.vanne),uc(gg->reglage.dilu.helium),uc(gg->reglage.dilu.chauffage),uc(gg->reglage.dilu.piles) 185 ,uc(gg->reglage.dilu.transmission),uc(gg->reglage.dilu.temps_max_vanne),uc(gg->reglage.dilu.xx7),uc(gg->reglage.dilu.xx8)); 186 187 188 /*********** structure swappée pour le transputer ****************/ 189 ecritT(fenetre_fichier_archeops_c,insert_f,"#else\n"); 190 191 /* ecrit horloge */ 192 ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d},\n",uc(gg->reglage.horloge.flag),uc(gg->reglage.horloge.temp_mort) 193 ,uc(gg->reglage.horloge.nb_mesures),uc(gg->reglage.horloge.periode)); 194 195 /* ecrit vitesses */ 196 for(i=0;i<nb_type_blocks;i++) 197 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",%d\n",uc(gg->reglage.vitesse[i^3])); else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d\n",uc(gg->reglage.vitesse[i^3])); } 198 199 ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n"); 200 201 /* ecrit reglage_un_bolo : 2 mots long */ 202 for(i=0;i<nb_max_bolo;i++) 203 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d}\n",gg->reglage.bolo[i].mot1,gg->reglage.bolo[i].mot2); 204 else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d}\n",gg->reglage.bolo[i].mot1,gg->reglage.bolo[i].mot2); 205 } 206 207 ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n"); 208 209 /* ecrit auto_bolo 4 char */ 210 for(i=0;i<nombre_de_voies;i++) 211 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d,%d,%d}\n" 212 ,uc(gg->reglage.autom[i].delai),uc(gg->reglage.autom[i].courant),uc(gg->reglage.autom[i].gain),uc(gg->reglage.autom[i].mode)); 213 else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d}\n" 214 ,uc(gg->reglage.autom[i].delai),uc(gg->reglage.autom[i].courant),uc(gg->reglage.autom[i].gain),uc(gg->reglage.autom[i].mode)); 215 } 216 217 ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n"); 218 219 /* ecrit regul_bolo */ 220 for(i=0;i<nombre_de_regul;i++) 221 {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d,%d,%d,%d,%d,%d}\n" 222 ,uc(gg->reglage.regul[i].prop),uc(gg->reglage.regul[i].voie_chauf),uc(gg->reglage.regul[i].num_bolo),uc(gg->reglage.regul[i].mode) 223 ,us(gg->reglage.regul[i].chauffage),uc(gg->reglage.regul[i].deriv),uc(gg->reglage.regul[i].integ)); 224 else ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d,%d,%d,%d}\n" 225 ,uc(gg->reglage.regul[i].prop),uc(gg->reglage.regul[i].voie_chauf),uc(gg->reglage.regul[i].num_bolo),uc(gg->reglage.regul[i].mode) 226 ,us(gg->reglage.regul[i].chauffage),uc(gg->reglage.regul[i].deriv),uc(gg->reglage.regul[i].integ)); 227 } 228 229 /* ecrit auto_dilu */ 230 ecritT(fenetre_fichier_archeops_c,insert_f,"},{%d,%d,%d,%d,%d,%d,%d,%d} \n" 231 ,uc(gg->reglage.dilu.piles),uc(gg->reglage.dilu.chauffage),uc(gg->reglage.dilu.helium),uc(gg->reglage.dilu.vanne) 232 ,uc(gg->reglage.dilu.xx8),uc(gg->reglage.dilu.xx7),uc(gg->reglage.dilu.temps_max_vanne),uc(gg->reglage.dilu.transmission)); 233 234 235 236 237 /*********** fin des structures swappées ****************/ 238 ecritT(fenetre_fichier_archeops_c,insert_f,"#endif\n"); 175 239 176 240 ecritT(fenetre_fichier_archeops_c,insert_f,"/*fin_reglage*/\n"); -
trunk/Poubelle/archediab.old/archediab.sources/c/senseur_stellaire.c
r637 r639 2 2 #include "senseur_stellaire.h" 3 3 4 int diodes[12]={1,2,3,4,5,6,7,8,9,10,11,12}; 4 5 5 6 … … 60 61 double secondes; 61 62 int a,b,b0,b1,b2; 63 int prem_d; 62 64 63 65 if(!fenetre(fenetre_senseur_stellaire)) return; … … 92 94 } 93 95 94 95 96 //k=0; 97 prem_d=litD(fenetre_senseur_stellaire,sst_prem_diode,0L); 96 98 for(k=0;k<72;k++) 97 99 { … … 102 104 if(i>3 ) q=i+8; 103 105 if(i>7 ) q=i+12; 106 q=diodes[i]; 107 q=i+prem_d-1; 104 108 105 109 a=place_paquet(q,0); -
trunk/Poubelle/archediab.old/archediab.sources/c/synchro.c
r637 r639 120 120 int i; 121 121 double x; 122 static long ancien_temps; 122 123 if(select_synchro==7) // selection valeur fixe 123 124 { 124 if(sy_per>=synchro_periode) 125 if((gg->temps_cntl%(int)synchro_periode)==0) 126 // if(sy_per>=synchro_periode) 125 127 { 126 128 if(gg->trace_ouvert&2) exec_trace_1_per(fenetre_trace_1_per,ds_debut,0); … … 130 132 else 131 133 { 132 sy_per=sy_per+1; 134 if(gg->temps_cntl!=ancien_temps+1) 135 { 136 sy_per+=gg->temps_cntl-ancien_temps; 137 printf("erreur synchro corrigée\n"); 138 } 139 else sy_per=sy_per+1; 140 133 141 if(gg->trace_ouvert&2) exec_trace_1_per(fenetre_trace_1_per,ds_suite,0); 134 142 if(gg->trace_ouvert&4) exec_trace_DS(fenetre_trace_DS,ds_suite,0); 135 143 } 144 ancien_temps=gg->temps_cntl; 136 145 } 137 146 else -
trunk/Poubelle/archediab.old/archediab.sources/c/tache_archeops.c
r637 r639 13 13 //***************************************************************************************** 14 14 // *** 15 #ifdef _archeops //--------- pour Archeops ----------------------- ***15 #ifdef _archeopsXX //--------- pour Archeops ----------------------- *** 16 16 #ifndef _sans_transputer //--------- pour Archeops avec transputer ------------- *** 17 17 // *** -
trunk/Poubelle/archediab.old/archediab.sources/c/tache_archeops_bit2.c
r637 r639 17 17 //***************************************************************************************** 18 18 // *** 19 #ifdef _archeops xx//--------- pour Archeops ----------------------- ***19 #ifdef _archeops //--------- pour Archeops ----------------------- *** 20 20 #ifndef _sans_transputer //--------- pour Archeops avec transputer ------------- *** 21 21 // *** -
trunk/Poubelle/archediab.old/archediab.sources/c/trace-DS.c
r637 r639 5 5 #include "trace.h" 6 6 #include "menu.h" 7 7 #define max_couleur 10 8 9 static int ds_bolo_coul[2*nb_max_bolo]; 8 10 9 11 … … 14 16 static int raz_parasite=2; 15 17 18 void montracen_ds(int fen,int n,double x,double *y); 16 19 17 20 void exec_trace_DS_suite(int u); … … 28 31 static int u=-1; 29 32 static flag_err=0; 33 int i; 30 34 switch(item) 31 35 { … … 46 50 case ds_temps_mort : 47 51 case ds_temps_mort+1000 : 52 53 54 case ds_bolo_couleur : 55 case ds_bolo_couleur+1 : 56 case ds_bolo_couleur+2 : 57 case ds_bolo_couleur+3 : 58 case ds_bolo_couleur+4 : 59 case ds_bolo_couleur+5 : 60 case ds_bolo_couleur+6 : 61 case ds_bolo_couleur+7 : 62 case ds_bolo_couleur+8 : 63 case ds_bolo_couleur+9 : 64 65 for(i=0;i<max_couleur;i+=2) 66 { 67 ds_bolo_coul[i]=litD(fen,ds_bolo_couleur+i,0L)-1; // 0=rien : 1=bolo0 // 2=bolo1 68 if( (ds_bolo_coul[i]<1) ou (ds_bolo_coul[i]>nb_max_bolo) ) ds_bolo_coul[i]=0; 69 if (ds_bolo_coul[i]<=24) ds_bolo_coul[i+1]=ds_bolo_coul[i]+24; 70 printf(" i=%d bolo=%d ",i,ds_bolo_coul[i]); 71 } 72 printf("\n"); 73 48 74 calcul_table_DS(synchro_periode); 49 75 break; … … 99 125 void exec_trace_DS_suite(int u) // appellé quoiqu'il arrive avec u=0,1,2,.... , npt_DS-1 100 126 { 101 static double y[ nb_max_bolo+1],y1[nb_max_bolo+1],y2[nb_max_bolo+1],bb[nb_max_bolo+1];127 static double y[2*nb_max_bolo],y1[2*nb_max_bolo],y2[2*nb_max_bolo],bb[2*nb_max_bolo]; 102 128 int j; 103 129 static double phase_mesure[nb_max_bolo],confiance[nb_max_bolo],phase_memoire; 104 130 //printf("suite avec u=%d \n"); 105 131 switch(choix_DS) 106 132 { … … 119 145 { 120 146 phase_mesure[j]=atan2(y1[j],y2[j]); 121 confiance[j]= log((y1[j]*y1[j]+y2[j]*y2[j])/(bb[j]*bb[j]));122 printf(" %d°(%2.1f) ",degre(phase_mesure[j]),confiance[j]);147 confiance[j]=bb[j]*bb[j]; 148 if(confiance[j]) confiance[j]=log((y1[j]*y1[j]+y2[j]*y2[j])/(bb[j]*bb[j])); 123 149 } 124 j= 1; // bolo pur mesurer la phase125 phase_memoire= phase_mesure[j];150 j=5; // bolo pur mesurer la phase 151 phase_memoire=0.95*phase_memoire+0.05*phase_mesure[j]; 126 152 ecritD(fenetre_trace_DS,ds_phase,"%d°",degre(phase_memoire)); 127 printf(": phase memoire=%g \n",phase_memoire); 153 printf(" phase=%d°(%2.1f) \n",degre(phase_mesure[j]),confiance[j]); 154 // printf(": phase memoire=%g \n",phase_memoire); 155 // printf(" trace y1= %g , %g , %g , %g , %g \n",y1[0],y1[1],y1[2],y1[3],y1[4]); 156 for(j=0;j<nb_max_bolo;j++) 157 { 158 y1[j+nb_max_bolo]=y2[j]; 159 } 160 161 /* 128 162 for(j=0;j<nb_max_bolo;j++) 129 163 { 130 164 y1[j]=sin(phase_memoire)*y1[j]+cos(phase_memoire)*y2[j]; 131 165 } 132 // printf(" trace y1= %g , %g , %g , %g , %g \n",y1[0],y1[1],y1[2],y1[3],y1[4]); 166 printf(" trace y1= %g , %g , %g , %g , %g \n",y1[0],y1[1],y1[2],y1[3],y1[4]); 167 */ 133 168 trace_DS(y1,0); 134 169 for(j=0;j<nb_max_bolo;j++) … … 208 243 209 244 // divise par la norme, trace y puis fait un RAZ 210 void trace_DS(double *y,int enregistre) // y [ nb_max_bolo +1]245 void trace_DS(double *y,int enregistre) // y [2*nb_max_bolo] 211 246 { 212 247 double x; 213 static double yraz[ nb_max_bolo];214 static double yt[ nb_max_bolo+1];248 static double yraz[2*nb_max_bolo]; 249 static double yt[2*nb_max_bolo]; 215 250 int j,k,moy; 216 static double yfiltre[ nb_max_bolo][10];251 static double yfiltre[2*nb_max_bolo][10]; 217 252 static int uf=0; 253 static int scan_ds=0; 218 254 x=gg->periode_echantillonage*(double)gg->temps_cntl-gg->temps_origine; 219 255 … … 231 267 232 268 233 for(j=0;j< nb_max_bolo;j++) yt[j]=y[j];234 for(j=0;j< nb_max_bolo;j++) y[j]=0;269 for(j=0;j<2*nb_max_bolo;j++) yt[j]=y[j]; 270 for(j=0;j<2*nb_max_bolo;j++) y[j]=0; 235 271 236 272 //printf(" au debut = %g , %g , %g , %g , %g \n",yt[0],yt[1],yt[2],yt[3],yt[4]); … … 239 275 240 276 241 for(j=0;j< nb_max_bolo;j++)277 for(j=0;j<2*nb_max_bolo;j++) 242 278 { 243 279 yt[j]/=norme_DS; … … 251 287 raz_parasite=0; 252 288 selectgra(fenetre_trace_DS); 253 yt[nb_max_bolo]=(0.95*graph->ymin+0.05*graph->ymax) + 254 + ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) * 0.9 * (graph->ymax-graph->ymin); 255 //printf(" signal subscan=%g ",yt[nb_max_bolo]); 256 //printf(" avant moyenne= %g , %g , %g , %g , %g \n",yt[0],yt[1],yt[2],yt[3],yt[4]); 289 if(scan_ds != ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) ) 290 { 291 if(scan_ds) rectangle(fenetre_trace_DS,x,graph->ymin,x,graph->ymax,rouge); // trace le segment x1,y1 - x2,y2 292 else rectangle(fenetre_trace_DS,x,graph->ymin,x,graph->ymax,bleu); // trace le segment x1,y1 - x2,y2 293 294 scan_ds = ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) ; 295 } 296 257 297 258 298 moy=litD(fenetre_trace_DS,ds_moyenne,0L); … … 262 302 uf++; 263 303 if(uf>=moy) uf=0; 264 for(j=0;j< nb_max_bolo;j++) // ne moyenne pas le signal de scan304 for(j=0;j<2*nb_max_bolo;j++) 265 305 { 266 306 for(k=0;k<moy;k++) yfiltre[j][k]+=yt[j]; … … 271 311 //printf(" montracen yt= %g , %g , %g , %g , %g \n",yt[0],yt[1],yt[2],yt[3],yt[4]); 272 312 //printf(" avant trace : =%g \n",yt[nb_max_bolo]); 273 montracen(fenetre_trace_DS,nb_max_bolo+1,x,yt); 274 313 montracen_ds(fenetre_trace_DS,2*nb_max_bolo,x,yt); 275 314 if(!(graph->scroll_courbe) && litD(fenetre_trace_DS,ds_retour,0L) && 276 315 ( (x<graph->xmin) ou (x>graph->xmax) )) … … 415 454 } 416 455 456 457 458 void montracen_ds(int fen,int n,double x,double *y) 459 { 460 int i,cc; 461 double yy[max_couleur]; // 0=rien : 1 2=bolo0 // 3 4 =bolo 462 for(i=0;i<max_couleur;i++) 463 { 464 cc=ds_bolo_coul[i]; 465 if(cc && (cc<=2*nb_max_bolo) ) yy[i]=y[cc-1]; 466 else yy[i]=0; 467 } 468 tracen(fen,max_couleur,x,yy); 469 // printf("0=%g 1=%g 2=%g \n",yy[0],yy[1],yy[2]); 470 } 471 -
trunk/Poubelle/archediab.old/archediab.sources/c/trace_tout.c
r637 r639 19 19 int i,j; 20 20 double x,c1,c2; 21 static int scan_tt; 21 22 util_trace_tout *SS; 22 23 SS=infos(fen)->util; … … 91 92 92 93 case tache_de_fond : selectgra(fen); 93 94 c1=2*3.14*SS->fmini*gg->periode_echantillonage; c1=c1/(1+c1); 95 c2=2*3.14*SS->fmaxi*gg->periode_echantillonage; c2=c2/(1+c2); 94 c1=2*3.14*SS->fmini*gg->periode_echantillonage; if(c1>0) c1=c1/(1+c1); 95 c2=2*3.14*SS->fmaxi*gg->periode_echantillonage; if(c2>0) c2=c2/(1+c2); 96 96 97 97 for(j=0;j<nb_max_bolo;j++) … … 105 105 { 106 106 SS->ipas=SS->moyenne; 107 for(j=0;j<nb_max_bolo;j++) SS->y[j]=SS->y[j]/(double)SS->moyenne; 108 printf("trace_tout un point \n"); 109 110 // SS->[nb_max_bolo]=(0.95*graph->ymin+0.05*graph->ymax) + 111 // + ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) 112 // * 0.9 * (graph->ymax-graph->ymin); 107 if(SS->moyenne) for(j=0;j<nb_max_bolo;j++) SS->y[j]=SS->y[j]/(double)SS->moyenne; 108 // printf("trace_tout un point \n"); 113 109 114 110 x=gg->periode_echantillonage*(double)gg->temps_cntl-gg->temps_origine; 115 // printf("x=%g x0=%g \n",x,x0); 116 //if(x<0) {x0=gg->periode_echantillonage*(double)gg->temps_cntl;x=0;} 111 112 if(scan_tt != ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) ) 113 { 114 if(scan_tt) rectangle(fen,x,graph->ymin,x,graph->ymax,rouge); // trace le segment x1,y1 - x2,y2 115 else rectangle(fen,x,graph->ymin,x,graph->ymax,bleu); // trace le segment x1,y1 - x2,y2 117 116 117 scan_tt = ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) ; 118 } 118 119 119 montracen_tout(fen,nb_max_bolo,x,SS); // SANS LA SYNCHRO 120 // montracen(fen,nb_max_bolo+1,x,SS->y); // avec la synchro 120 montracen_tout(fen,nb_max_bolo,x,SS); 121 121 122 122 … … 144 144 for(i=0;i<max_couleur;i++) 145 145 { 146 if( SS->bolo_couleur[i])yy[i]=SS->y[SS->bolo_couleur[i]-1];146 if( (SS->bolo_couleur[i]>=1) && (SS->bolo_couleur[i]<nb_max_bolo+1) ) yy[i]=SS->y[SS->bolo_couleur[i]-1]; 147 147 else yy[i]=0; 148 148 }
Note:
See TracChangeset
for help on using the changeset viewer.