Ignore:
Timestamp:
Nov 25, 1999, 2:07:25 PM (26 years ago)
Author:
ansari
Message:

archediab 25

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  
    2929if(parametr.n_max_mes_per!=nb_max_mes_per) {erreur("erreur nb_max_mes_per\n");return;}
    3030if(parametr.nb_bolo!=nb_bolo_util) {erreur("erreur nb_bolo_util\n");return;}
     31
     32gg->reglage=reglage_standard[0];
    3133
    3234for(j=0;j<nb_max_bolo;j++)
     
    227229        if((b!=gg->reglage.horloge.nb_mesures) ou clavier(touche_alt) )  emission_tc_reduite(tc2_horloge,tc3_nb_mesures,b);
    228230        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);
    230232        }
    231233
  • trunk/Poubelle/archediab.old/archediab.sources/c/acquisition_archeops.c

    r637 r639  
    190190{
    191191blk_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];
    198192// ne fait rien: le block synchro precede toujours le block bolo
    199193}
    200 */
     194
    201195
    202196
     
    210204#define blk2  ((block_type_bolo*)(&bktm))       // pointeur sur la memoire locale
    211205// 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   ",
    213207        ( (blk->data_bolo[0][0] & 0xffff0000)>>11 ) & 0x001fffe0,
    214208        ( (blk->data_bolo[0][0] & 0x0000ffff)<<5 )  & 0x001fffe0,
    215209        ( (blk->data_bolo[1][0] & 0xffff0000)>>11 ) & 0x001fffe0,
    216210        ( (blk->data_bolo[1][0] & 0x0000ffff)<<5 )  & 0x001fffe0);
    217 
     211*/
    218212for(j=0;j<nb_bolo_util;j++)     
    219213                {
    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",
    224218                                        blk2->data_bolo[0][0],
    225219                                        blk2->data_bolo[0][1],
    226220                                        blk2->data_bolo[1][0],
    227221                                        blk2->data_bolo[1][1]);
    228 
     222*/
    229223valide_block(&bktm,block_bolo,numero_block(blk));       // pour recopier le numero de block
    230224traite_block_bolo(blk2);
     
    277271
    278272#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)
    280274
    281275for (i=0;i<nb_per_block*2;i++)
     
    291285                }
    292286
    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);       
    294294
    295295        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  
    165165                                break;
    166166
     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
    167174        case e_chauf    :       {
    168175                                long ll=(long)(&(gg->reglage.dilu.chauffage))-(long)(&(gg->reglage.dilu));
     
    170177                                emission_tc_reduite(tc2_auto_dilu,ll,a);
    171178                                }
     179                                break;
     180
     181        case e_cmd      :       emission_tc_reduite(tc2_horloge,tc3_commande,(int) valeur);
     182                                ecritD(fen,e_cmd,0);
    172183                                break;
    173184
  • trunk/Poubelle/archediab.old/archediab.sources/c/bolo.c

    r637 r639  
    3838                                graph->graduations=0;
    3939                                graph->sans_image=1;                                   
    40                                 graph->avec_icones=0;                                           
     40                                graph->avec_icones=0; 
     41                                graph->aspect=0;                                       
    4142                                graph->xtitre[0]=0;                                     
    4243                                graph->ytitre[0]=0;   
  • trunk/Poubelle/archediab.old/archediab.sources/c/courbeVI.c

    r637 r639  
    1919int i,j;double I,V,A,nep;int c;double x[50];
    2020double y[nb_max_bolo+1];
    21 
     21def_gains
    2222switch(item)
    2323        {
     
    9797                               
    9898                                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
    99102                                if(!fenetre(fenetre_automatismes))
    100103                                        ouvreD(fenetre_automatismes,automatismes_id,"automatismes",exec_automatismes);
     
    126129                                for(j=0;j<nb_max_bolo;j++)     
    127130                                        {
    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 
    129133                                        }
    130134                                montracen(fen,nb_max_bolo,I,y);
  • trunk/Poubelle/archediab.old/archediab.sources/c/diabolo.c

    r637 r639  
    4343//flag=alerte(3,"   Archeops ou Planck  \r\r acquisition avec carte PCI ??"); // vaut 1 pour acquisition PCI
    4444//flag=2;       // en mode simulation
    45 if(!clavier(touche_alt) ) flag=2; else flag=1;          // en mode acquisition
     45if(clavier(touche_alt) ) flag=2; else flag=1;           // en mode acquisition
    4646#endif
    4747
     
    116116*/
    117117
     118
    118119if(flag==1)                                     //  mets en route les interruptions
    119120        {
  • trunk/Poubelle/archediab.old/archediab.sources/c/dilution.c

    r637 r639  
    2424#define  ecrit_switch(val,ii,bit) {if(val) ii=ii | bit ;else ii=ii& (0xffffffff^bit) ;}
    2525#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
    2634void  ecrit_bit_dilution(int valeur,int bit);
    2735
     
    4755mot_tc[5]=(i>>16)&0xff;
    4856mot_tc[6]=(i>>24)&0xff;
     57mot_tc[7]=0;   
     58emission_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
     66void  ecrit_dac_dilution(void);
     67
     68void  ecrit_dac_dilution(void)
     69{
     70char mot_tc[10];
     71int k;
     72unsigned long i,j;
     73i=litD(fenetre_dilution,dil_dac_1,0); // les 2 bits adresse du dac
     74i=i<<14; i+=litD(fenetre_dilution,dil_dac_2,0); // les 12 bits valeur du dac
     75// ranger les bits a l'envers;
     76j=0; for(k=0;k<16;k++)  {j=(j<<1) | (i&1);i=i>>1;}
     77mot_tc[0]=tc_dac_dil;
     78mot_tc[1]=(j)&0xff;
     79mot_tc[2]=(j>>8)&0xff;
     80mot_tc[3]=0;
     81mot_tc[4]=0;
     82mot_tc[5]=0;
     83mot_tc[6]=0;
    4984mot_tc[7]=0;   
    5085emission_telecommande(tc_dir_transputer,mot_tc);
     
    101136    case dil_ch6 :              ecrit_bit_dilution((int)valeur,chauffage6);     break;
    102137    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;
    103142
    104143    default  :   break;
     
    142181ecritD(fenetre_dilution,dil_EVV_retour,((blk->switch_dil&vanne_EVV)?1:0));
    143182
     183
     184
     185// les temperatures sur les cartes modifiées
     186{
     187double I,V,R[4];
     188int j,k;
     189def_gains;
     190k=0;
     191for(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
     202if(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]);
     203else    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]);
     204if(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
    144220// les pressions et debits metres des injections de la dilution
    145221ecritD(fenetre_dilution,dil_p_d_3He,"3He: %4.1fb -> %5.2fµm/s -> %4.1fb"
    146         ,40.    *       val_multiplex(p_R3)             //      200 bars pour 5V
     222        ,40.    *       val_multiplex(p_R3)  -1.6       //      200 bars pour 5V et 1.6 bar d'offset
    147223        ,2.     *       val_multiplex(d_3He)            //  10 MICRO MOLES  pour  5V
    148224        ,20.    *       val_multiplex(p_C3)             //      100 bars pour 5V
     
    151227        ,40.    *       val_multiplex(p_R4)             //      200 bars pour 5V
    152228        ,8.     *       val_multiplex(d_4He)            //  40 MICRO MOLES  pour  5V
     229//      ,4.     *       val_multiplex(d_4He)            //  20 MICRO MOLES  pour  5V
    153230        ,20.    *       val_multiplex(p_C4)             //      100 bars pour 5V
    154231        );
     
    227304// lecture des sondes de niveau helium
    228305
    229 //if(blk->switch_dil & switch_helium )
    230 if(1)
     306
    231307        {
    232308        double y[8];
     309        static int niveau_pre;
    233310        int niveau,fin;
     311//      printf("dilution :  numero de block = %d  \n",numero_block(blk));
    234312        changecontrole(fenetre_dilution,dil_niveau_helium,idem,idem,idem,idem,calrefcon(0,0,rouge,blanc,blanc),"");
    235313        y[0]=val_multiplex(j_he1)-calib(dil_j_he1);
     
    241319        y[6]=val_multiplex(j_he7)-calib(dil_j_he7);
    242320        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)
    245322                {
    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);
    251338                }
    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),"");
    256340
    257341        if(litD(fenetre_dilution,dil_trace_helium,0))// trace les sondes de niveau helium
     
    270354                }
    271355        }
    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  
    2222void ferme_annexe(void);
    2323
    24 int ann;
     24int j,ann;
    2525
    2626void exec_menu_diabolo(int fen,int item,double valeur,...)
     
    3434                                                                sauve_reglage(2);*/
    3535                                                                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 );
    3738                                                                break;
    3839//      case    d_trace_tout    :       if(fenetre(fenetre_trace_tout)) select(fenetre_trace_tout);
  • trunk/Poubelle/archediab.old/archediab.sources/c/reglage.c

    r637 r639  
    22#include "reglage.h"
    33
     4#define uc(iii)   (((long)(iii))&0xff)
     5#define us(iii)   (((long)(iii))&0xffff)
    46
    57void    param_reglage(void)
     
    138140
    139141ecritT(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   ****************/
     144ecritT(fenetre_fichier_archeops_c,insert_f,"#ifdef programme\n");
     145
     146/*  ecrit horloge    */
     147ecritT(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  */
    143151for(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
     154ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
     155
     156/* ecrit        reglage_un_bolo  : 2 mots long */
    148157for(i=0;i<nb_max_bolo;i++)
    149158        {if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d}\n",gg->reglage.bolo[i].mot1,gg->reglage.bolo[i].mot2);
     
    152161
    153162ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
    154        
     163
     164/* ecrit auto_bolo  4 char */   
    155165for(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
     170ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
     171
     172/* ecrit  regul_bolo   */
    162173for(i=0;i<nombre_de_regul;i++)
    163174        {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].prop
    165                                 ,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));
    166177        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   */
    171183ecritT(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   ****************/
     189ecritT(fenetre_fichier_archeops_c,insert_f,"#else\n");
     190
     191/*  ecrit horloge    */
     192ecritT(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  */
     196for(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
     199ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
     200
     201/* ecrit        reglage_un_bolo  : 2 mots long */
     202for(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
     207ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
     208
     209/* ecrit auto_bolo  4 char */   
     210for(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
     217ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
     218
     219/* ecrit  regul_bolo   */
     220for(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   */
     230ecritT(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       ****************/
     238ecritT(fenetre_fichier_archeops_c,insert_f,"#endif\n");
    175239
    176240ecritT(fenetre_fichier_archeops_c,insert_f,"/*fin_reglage*/\n");
  • trunk/Poubelle/archediab.old/archediab.sources/c/senseur_stellaire.c

    r637 r639  
    22#include "senseur_stellaire.h"
    33
     4int diodes[12]={1,2,3,4,5,6,7,8,9,10,11,12};
    45
    56
     
    6061double secondes;
    6162int a,b,b0,b1,b2;
     63int prem_d;
    6264
    6365if(!fenetre(fenetre_senseur_stellaire)) return;
     
    9294         }
    9395
    94 
    9596//k=0;
     97prem_d=litD(fenetre_senseur_stellaire,sst_prem_diode,0L);
    9698for(k=0;k<72;k++)
    9799        {
     
    102104                if(i>3 ) q=i+8;
    103105                if(i>7 ) q=i+12;
     106                q=diodes[i];
     107                q=i+prem_d-1;
    104108               
    105109                a=place_paquet(q,0);
  • trunk/Poubelle/archediab.old/archediab.sources/c/synchro.c

    r637 r639  
    120120int i; 
    121121double x;
     122static long ancien_temps;
    122123if(select_synchro==7)   // selection  valeur fixe
    123124        {
    124         if(sy_per>=synchro_periode)
     125        if((gg->temps_cntl%(int)synchro_periode)==0)
     126//      if(sy_per>=synchro_periode)
    125127                {
    126128                if(gg->trace_ouvert&2)  exec_trace_1_per(fenetre_trace_1_per,ds_debut,0);
     
    130132        else
    131133                {
    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               
    133141                if(gg->trace_ouvert&2)  exec_trace_1_per(fenetre_trace_1_per,ds_suite,0);
    134142                if(gg->trace_ouvert&4)  exec_trace_DS(fenetre_trace_DS,ds_suite,0);
    135143                }
     144        ancien_temps=gg->temps_cntl;
    136145        }
    137146else
  • trunk/Poubelle/archediab.old/archediab.sources/c/tache_archeops.c

    r637 r639  
    1313//*****************************************************************************************
    1414//                                                                                      ***
    15 #ifdef _archeops                //---------   pour  Archeops    ----------------------- ***
     15#ifdef _archeopsXX              //---------   pour  Archeops    ----------------------- ***
    1616#ifndef _sans_transputer        //---------   pour  Archeops avec transputer    -------------   ***
    1717//                                                                                      ***
  • trunk/Poubelle/archediab.old/archediab.sources/c/tache_archeops_bit2.c

    r637 r639  
    1717//*****************************************************************************************
    1818//                                                                                      ***
    19 #ifdef _archeopsxx              //---------   pour  Archeops    ----------------------- ***
     19#ifdef _archeops                //---------   pour  Archeops    ----------------------- ***
    2020#ifndef _sans_transputer        //---------   pour  Archeops avec transputer    -------------   ***
    2121//                                                                                      ***
  • trunk/Poubelle/archediab.old/archediab.sources/c/trace-DS.c

    r637 r639  
    55#include "trace.h"
    66#include "menu.h"
    7 
     7#define max_couleur 10
     8
     9static int      ds_bolo_coul[2*nb_max_bolo];
    810
    911       
     
    1416static  int             raz_parasite=2;
    1517
     18void    montracen_ds(int fen,int n,double x,double *y);
    1619
    1720void    exec_trace_DS_suite(int u);
     
    2831static int u=-1;
    2932static flag_err=0;
     33int i;
    3034switch(item)
    3135    {
     
    4650    case ds_temps_mort  :       
    4751    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 
    4874                                calcul_table_DS(synchro_periode);
    4975                                break;
     
    99125void    exec_trace_DS_suite(int u)      // appellé quoiqu'il arrive avec u=0,1,2,.... , npt_DS-1
    100126{
    101 static double y[nb_max_bolo+1],y1[nb_max_bolo+1],y2[nb_max_bolo+1],bb[nb_max_bolo+1];
     127static double y[2*nb_max_bolo],y1[2*nb_max_bolo],y2[2*nb_max_bolo],bb[2*nb_max_bolo];
    102128int j;
    103129static double  phase_mesure[nb_max_bolo],confiance[nb_max_bolo],phase_memoire;
    104 
     130//printf("suite avec u=%d \n");
    105131switch(choix_DS)
    106132        {
     
    119145                                {
    120146                                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]));
    123149                                }
    124                         j=1;    // bolo pur mesurer la phase
    125                         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];
    126152                        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/*                             
    128162                        for(j=0;j<nb_max_bolo;j++)
    129163                                {
    130164                                y1[j]=sin(phase_memoire)*y1[j]+cos(phase_memoire)*y2[j];
    131165                                }
    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*/
    133168                        trace_DS(y1,0);
    134169                        for(j=0;j<nb_max_bolo;j++)
     
    208243
    209244// divise par la norme, trace y puis fait un RAZ
    210 void trace_DS(double *y,int enregistre)         //   y [nb_max_bolo +1 ]
     245void trace_DS(double *y,int enregistre)         //   y [2*nb_max_bolo]
    211246{
    212247double x;
    213 static double yraz[nb_max_bolo];
    214 static double yt[nb_max_bolo+1];
     248static double yraz[2*nb_max_bolo];
     249static double yt[2*nb_max_bolo];
    215250int j,k,moy;
    216 static double yfiltre[nb_max_bolo][10];
     251static double yfiltre[2*nb_max_bolo][10];
    217252static int uf=0;
     253static int scan_ds=0;
    218254x=gg->periode_echantillonage*(double)gg->temps_cntl-gg->temps_origine;
    219255
     
    231267
    232268
    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;
     269for(j=0;j<2*nb_max_bolo;j++)    yt[j]=y[j];
     270for(j=0;j<2*nb_max_bolo;j++)    y[j]=0;
    235271
    236272//printf(" au debut = %g , %g , %g , %g , %g \n",yt[0],yt[1],yt[2],yt[3],yt[4]);
     
    239275
    240276
    241 for(j=0;j<nb_max_bolo;j++)
     277for(j=0;j<2*nb_max_bolo;j++)
    242278                        {
    243279                        yt[j]/=norme_DS;
     
    251287raz_parasite=0;
    252288selectgra(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]);
     289if(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
    257297
    258298moy=litD(fenetre_trace_DS,ds_moyenne,0L);
     
    262302        uf++;
    263303        if(uf>=moy) uf=0;
    264         for(j=0;j<nb_max_bolo;j++)                                      //  ne moyenne pas le signal de scan
     304        for(j=0;j<2*nb_max_bolo;j++)                                   
    265305                {
    266306                for(k=0;k<moy;k++)      yfiltre[j][k]+=yt[j];
     
    271311//printf(" montracen yt= %g , %g , %g , %g , %g \n",yt[0],yt[1],yt[2],yt[3],yt[4]);
    272312//printf(" avant trace : =%g  \n",yt[nb_max_bolo]);
    273 montracen(fenetre_trace_DS,nb_max_bolo+1,x,yt);
    274 
     313montracen_ds(fenetre_trace_DS,2*nb_max_bolo,x,yt);
    275314if(!(graph->scroll_courbe) && litD(fenetre_trace_DS,ds_retour,0L) &&
    276315                 ( (x<graph->xmin) ou (x>graph->xmax) ))
     
    415454}
    416455
     456
     457
     458void    montracen_ds(int fen,int n,double x,double *y)
     459{
     460int i,cc;
     461double yy[max_couleur];   // 0=rien : 1 2=bolo0 // 3 4 =bolo
     462for(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        }
     468tracen(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  
    1919int  i,j;
    2020double x,c1,c2;
     21static int scan_tt;
    2122util_trace_tout *SS;
    2223SS=infos(fen)->util;
     
    9192
    9293    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);   
    9696                                                       
    9797                                                for(j=0;j<nb_max_bolo;j++)             
     
    105105                                                                {
    106106                                                                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");
    113109
    114110                                                                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                                                               
     112if(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               
    117116
     117        scan_tt = ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) ;
     118        }
    118119
    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);
    121121
    122122
     
    144144for(i=0;i<max_couleur;i++)
    145145        {
    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];
    147147                else            yy[i]=0;
    148148        }
Note: See TracChangeset for help on using the changeset viewer.