Index: trunk/Poubelle/archediab.old/archediab.sources/c/acqui_util.c
===================================================================
--- trunk/Poubelle/archediab.old/archediab.sources/c/acqui_util.c	(revision 637)
+++ trunk/Poubelle/archediab.old/archediab.sources/c/acqui_util.c	(revision 639)
@@ -29,4 +29,6 @@
 if(parametr.n_max_mes_per!=nb_max_mes_per) {erreur("erreur nb_max_mes_per\n");return;}
 if(parametr.nb_bolo!=nb_bolo_util) {erreur("erreur nb_bolo_util\n");return;}
+
+gg->reglage=reglage_standard[0];
 
 for(j=0;j<nb_max_bolo;j++) 
@@ -227,5 +229,5 @@
 	if((b!=gg->reglage.horloge.nb_mesures) ou clavier(touche_alt) )	 emission_tc_reduite(tc2_horloge,tc3_nb_mesures,b);
 	if((tm!=gg->reglage.horloge.temp_mort) ou clavier(touche_alt) )	 emission_tc_reduite(tc2_horloge,tc3_temp_mort,tm);
-	if((flag!=gg->reglage.horloge.flag) ou clavier(touche_alt) )	 emission_tc_reduite(tc2_horloge,tc3_flag,flag);
+	if(flag ou (flag!=gg->reglage.horloge.flag) ou clavier(touche_alt) )  emission_tc_reduite(tc2_horloge,tc3_flag,flag);
 	}
 
Index: trunk/Poubelle/archediab.old/archediab.sources/c/acquisition_archeops.c
===================================================================
--- trunk/Poubelle/archediab.old/archediab.sources/c/acquisition_archeops.c	(revision 637)
+++ trunk/Poubelle/archediab.old/archediab.sources/c/acquisition_archeops.c	(revision 639)
@@ -190,13 +190,7 @@
 {
 blk_sync2 = *blk;
-}
-/*
-int i,j;	
-
-for (i=0;i<nb_per_block*2;i++)	for(j=0;j<nb_sync;j++)			
-		gg->don.sync[j]=blk->synchro[j][i];
 // ne fait rien: le block synchro precede toujours le block bolo
 }
-*/
+
 
 
@@ -210,21 +204,21 @@
 #define blk2  ((block_type_bolo*)(&bktm)) 	// pointeur sur la memoire locale
 // maintenant, decomprime  blk  pour le reecrire dans blk2
-printf("comprime: ds1= %x  , %x  ds2= %x  , %x   ",
+/*printf("comprime: ds1= %x  , %x  ds2= %x  , %x   ",
 	( (blk->data_bolo[0][0] & 0xffff0000)>>11 ) & 0x001fffe0,
 	( (blk->data_bolo[0][0] & 0x0000ffff)<<5 )  & 0x001fffe0,
 	( (blk->data_bolo[1][0] & 0xffff0000)>>11 ) & 0x001fffe0,
 	( (blk->data_bolo[1][0] & 0x0000ffff)<<5 )  & 0x001fffe0);
-
+*/
 for(j=0;j<nb_bolo_util;j++)	
 		{
-		decompress_7_2(blk->data_bolo[j],blk2->data_bolo[j],nb_per_block*2);
-		}
-
-printf("ds1= %x  , %x  ds2= %x  , %x   \n",
+		decompress_7_2((long *)blk->data_bolo[j],blk2->data_bolo[j],nb_per_block*2);
+		}
+
+/*printf("ds1= %x  , %x  ds2= %x  , %x   \n",
 					blk2->data_bolo[0][0],
 					blk2->data_bolo[0][1],
 					blk2->data_bolo[1][0],
 					blk2->data_bolo[1][1]);
-
+*/
 valide_block(&bktm,block_bolo,numero_block(blk));	// pour recopier le numero de block
 traite_block_bolo(blk2);
@@ -277,5 +271,5 @@
 
 #define  val_DS(j,i)  (blk->data_bolo[j][i]&0x1fffff)
-#define  synchro_DS(j,i)	(blk->data_bolo[j][i]>>20)
+//#define  synchro_DS(j,i)	((blk->data_bolo[j][i]>>20)&1)
 
 for (i=0;i<nb_per_block*2;i++)
@@ -291,5 +285,11 @@
 		}
 
-	for(j=0;j<nb_sync;j++)	gg->don.sync[j]=synchro_DS(j,i);	
+	for(j=0;j<nb_sync;j++)	
+		{
+		gg->don.sync[j]=blk_sync2.synchro[i][j];
+		}
+	
+	
+//	gg->don.sync[j]=synchro_DS(j,i);	
 
 	gg->temps_cntl=num_block_local*nb_per_block*2+i;	// temps controlleur en demi-periodes		
Index: trunk/Poubelle/archediab.old/archediab.sources/c/acquisition_general.c
===================================================================
--- trunk/Poubelle/archediab.old/archediab.sources/c/acquisition_general.c	(revision 637)
+++ trunk/Poubelle/archediab.old/archediab.sources/c/acquisition_general.c	(revision 639)
@@ -165,4 +165,11 @@
     				break;
 
+	case e_helium	: 	{
+				long ll=(long)(&(gg->reglage.dilu.helium))-(long)(&(gg->reglage.dilu));
+    				int a=(int) valeur;	
+    				emission_tc_reduite(tc2_auto_dilu,ll,a);
+    				}
+    				break;
+
 	case e_chauf	: 	{
 				long ll=(long)(&(gg->reglage.dilu.chauffage))-(long)(&(gg->reglage.dilu));
@@ -170,4 +177,8 @@
     				emission_tc_reduite(tc2_auto_dilu,ll,a);
     				}
+    				break;
+
+	case e_cmd	:	emission_tc_reduite(tc2_horloge,tc3_commande,(int) valeur);
+    				ecritD(fen,e_cmd,0);
     				break;
 
Index: trunk/Poubelle/archediab.old/archediab.sources/c/bolo.c
===================================================================
--- trunk/Poubelle/archediab.old/archediab.sources/c/bolo.c	(revision 637)
+++ trunk/Poubelle/archediab.old/archediab.sources/c/bolo.c	(revision 639)
@@ -38,5 +38,6 @@
     				graph->graduations=0;
  				graph->sans_image=1;   					
- 				graph->avec_icones=0;   					
+ 				graph->avec_icones=0;  
+ 				graph->aspect=0; 					
  				graph->xtitre[0]=0;   					
  				graph->ytitre[0]=0;   
Index: trunk/Poubelle/archediab.old/archediab.sources/c/courbeVI.c
===================================================================
--- trunk/Poubelle/archediab.old/archediab.sources/c/courbeVI.c	(revision 637)
+++ trunk/Poubelle/archediab.old/archediab.sources/c/courbeVI.c	(revision 639)
@@ -19,5 +19,5 @@
 int i,j;double I,V,A,nep;int c;double x[50];
 double y[nb_max_bolo+1];
-
+def_gains
 switch(item)
 	{
@@ -97,4 +97,7 @@
 				
 				if(litD(fen,cvi_precis,0L)) posi++;	else posi+=2;
+				printf(" posi=%d \n",posi);
+				if(posi>=25) {son(133);posi=0;tachedefond(fen,-1);} 						 
+
 				if(!fenetre(fenetre_automatismes)) 
 					ouvreD(fenetre_automatismes,automatismes_id,"automatismes",exec_automatismes);
@@ -126,5 +129,6 @@
 				for(j=0;j<nb_max_bolo;j++)	
 					{
-					y[j]=calcV(j+1)*1e-3;	//  mV
+					y[j]=(calcV(j+1)-xbolbrut(j))*1e-3;
+					//  corrigée du déséquilibre  en  µV puis transformé en mV  
 					}
 				montracen(fen,nb_max_bolo,I,y);
Index: trunk/Poubelle/archediab.old/archediab.sources/c/diabolo.c
===================================================================
--- trunk/Poubelle/archediab.old/archediab.sources/c/diabolo.c	(revision 637)
+++ trunk/Poubelle/archediab.old/archediab.sources/c/diabolo.c	(revision 639)
@@ -43,5 +43,5 @@
 //flag=alerte(3,"   Archeops ou Planck  \r\r acquisition avec carte PCI ??"); // vaut 1 pour acquisition PCI
 //flag=2;	// en mode simulation
-if(!clavier(touche_alt) ) flag=2; else flag=1;		// en mode acquisition
+if(clavier(touche_alt) ) flag=2; else flag=1;		// en mode acquisition
 #endif
 
@@ -116,4 +116,5 @@
 */
 
+
 if(flag==1)					//  mets en route les interruptions
 	{
Index: trunk/Poubelle/archediab.old/archediab.sources/c/dilution.c
===================================================================
--- trunk/Poubelle/archediab.old/archediab.sources/c/dilution.c	(revision 637)
+++ trunk/Poubelle/archediab.old/archediab.sources/c/dilution.c	(revision 639)
@@ -24,4 +24,12 @@
 #define  ecrit_switch(val,ii,bit) {if(val) ii=ii | bit ;else ii=ii& (0xffffffff^bit) ;}
 #define  calib(j)		litD(fenetre_dilution_calibration,j,0L)
+
+
+
+//   fonction ecrit un bit des switch dilution
+//  c'est une telecommande normale 64 bit  a supprimer
+// la telecommande passe a travers le transputer sans etre traitee par lui
+//  elle arrive directement sur l'EPLD
+
 void  ecrit_bit_dilution(int valeur,int bit);
 
@@ -47,4 +55,31 @@
 mot_tc[5]=(i>>16)&0xff;
 mot_tc[6]=(i>>24)&0xff;
+mot_tc[7]=0;	
+emission_telecommande(tc_dir_transputer,mot_tc);
+}
+
+//   fonction ecrit un  des dac dilution
+//  c'est une telecommande normale 64 bit  a supprimer
+// la telecommande passe a travers le transputer sans etre traitee par lui
+//  elle arrive directement sur l'EPLD
+
+void  ecrit_dac_dilution(void);
+
+void  ecrit_dac_dilution(void)
+{
+char mot_tc[10];
+int k;
+unsigned long i,j;
+i=litD(fenetre_dilution,dil_dac_1,0); // les 2 bits adresse du dac
+i=i<<14; i+=litD(fenetre_dilution,dil_dac_2,0);	// les 12 bits valeur du dac
+// ranger les bits a l'envers;
+j=0; for(k=0;k<16;k++)	{j=(j<<1) | (i&1);i=i>>1;}
+mot_tc[0]=tc_dac_dil;
+mot_tc[1]=(j)&0xff;
+mot_tc[2]=(j>>8)&0xff;
+mot_tc[3]=0;
+mot_tc[4]=0;
+mot_tc[5]=0;
+mot_tc[6]=0;
 mot_tc[7]=0;	
 emission_telecommande(tc_dir_transputer,mot_tc);
@@ -101,4 +136,8 @@
     case dil_ch6 :		ecrit_bit_dilution((int)valeur,chauffage6);	break;
     case dil_ch7 :		ecrit_bit_dilution((int)valeur,chauffage7);	break;
+    
+//    case dil_dac_1 :
+//   case dil_dac_2 :
+    case dil_envoi_dac :	ecrit_dac_dilution(); 	break;
 
     default  :   break;
@@ -142,7 +181,44 @@
 ecritD(fenetre_dilution,dil_EVV_retour,((blk->switch_dil&vanne_EVV)?1:0));
 
+
+
+// les temperatures sur les cartes modifiées
+{
+double I,V,R[4];
+int j,k;
+def_gains;
+k=0;
+for(j=0;(j<nb_max_bolo) && (k<4);j++)
+	{
+	if(parametr.bolo[j].bolo_code_util==bolo_thermo_simplifie)
+		{
+		I = 1e-3 * (double)dac_V(gg->reglage.bolo[j]) * 2441. / parametr.bolo[j].bolo_capa;	//	I en µA
+		V=0.001*bol_micro_volt(blk->temperature[k],(double)parametr.bolo[j].bolo_gain*gain_ampli(gg->reglage.bolo[j]));
+		if(I>0.0000001)		R[k]=V/I;	else	R[k]=0;				//	R  en 
+		k++;
+		}
+	}
+
+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]);
+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]);
+if(litD(fenetre_dilution,dil_trace_tempe,0))// trace les sondes de niveau helium
+	{
+	int temps_cntl=numero_block(blk)*nb_per_block*2;
+	double secondes,minutes;
+	secondes=gg->periode_echantillonage*(double)temps_cntl;
+	minutes=secondes/60.;
+	if(!fenetre(fenetre_temperature_dil)) 
+			{
+			nouveauD(fenetre_temperature_dil,0,"temperature_dil",0);
+			selectgra(fenetre_temperature_dil);
+			strcpy(graph->xtitre,"minutes");
+			}
+	tracen(fenetre_temperature_dil,4,minutes,R);
+	}
+}
+
 // les pressions et debits metres des injections de la dilution
 ecritD(fenetre_dilution,dil_p_d_3He,"3He: %4.1fb -> %5.2fµm/s -> %4.1fb"
-	,40. 	*	val_multiplex(p_R3)		//	200 bars pour 5V
+	,40. 	*	val_multiplex(p_R3)  -1.6	//	200 bars pour 5V et 1.6 bar d'offset
 	,2. 	* 	val_multiplex(d_3He)		//  10 MICRO MOLES  pour  5V
 	,20. 	*	val_multiplex(p_C3)		//	100 bars pour 5V
@@ -151,4 +227,5 @@
 	,40. 	*	val_multiplex(p_R4)		//	200 bars pour 5V
 	,8. 	* 	val_multiplex(d_4He)		//  40 MICRO MOLES  pour  5V
+//	,4. 	* 	val_multiplex(d_4He)		//  20 MICRO MOLES  pour  5V
 	,20. 	*	val_multiplex(p_C4)		//	100 bars pour 5V
 	);
@@ -227,9 +304,10 @@
 // lecture des sondes de niveau helium
 
-//if(blk->switch_dil & switch_helium )
-if(1)
+
 	{
 	double y[8];
+	static int niveau_pre;
 	int niveau,fin;
+//	printf("dilution :  numero de block = %d  \n",numero_block(blk));
 	changecontrole(fenetre_dilution,dil_niveau_helium,idem,idem,idem,idem,calrefcon(0,0,rouge,blanc,blanc),"");
 	y[0]=val_multiplex(j_he1)-calib(dil_j_he1);
@@ -241,17 +319,23 @@
 	y[6]=val_multiplex(j_he7)-calib(dil_j_he7);
 	y[7]=val_multiplex(j_he8)-calib(dil_j_he8);
-	niveau=0;fin=0;
-	for(i=0;i<8;i++)
+	if(blk->switch_dil & switch_helium)
 		{
-		if(y[i]>0.1) 	{
-				niveau++;
-				if(fin) 	niveau=9;
-				}
-		else		fin=1;
+		changecontrole(fenetre_dilution,dil_niveau_helium,idem,idem,idem,idem,calrefcon(0,0,rouge,blanc,blanc),"");
+		niveau=0;fin=0;
+		for(i=0;i<8;i++)
+			{
+			if(y[i]>0.1) 	{
+					niveau++;
+					if(fin) 	niveau=9;
+					}
+			else		fin=1;
+			}
+//		if(niveau==9)	changecontrole(fenetre_dilution,dil_niveau_helium,idem,idem,idem,idem
+//					,calrefcon(0,0,jaune,blanc,blanc),"");
+		if(niveau<niveau_pre)	niveau_pre=0;
+		else	{niveau_pre=niveau;	ecritD(fenetre_dilution,dil_niveau_helium,niveau);}
+//		printf("niveau=%d \n",niveau);
 		}
-	if(niveau==9)	changecontrole(fenetre_dilution,dil_niveau_helium,idem,idem,idem,idem
-				,calrefcon(0,0,jaune,blanc,blanc),"");
-	ecritD(fenetre_dilution,dil_niveau_helium,niveau);
-//	printf("niveau=%d \n",niveau);
+	else	changecontrole(fenetre_dilution,dil_niveau_helium,idem,idem,idem,idem,calrefcon(0,0,vert,blanc,blanc),"");
 
 	if(litD(fenetre_dilution,dil_trace_helium,0))// trace les sondes de niveau helium
@@ -270,11 +354,6 @@
 		}
 	}
-else	
-	{
-	changecontrole(fenetre_dilution,dil_niveau_helium,idem,idem,idem,idem,calrefcon(0,0,vert,blanc,blanc),"");
-	}
-
-
-}
-
-
+
+}
+
+
Index: trunk/Poubelle/archediab.old/archediab.sources/c/menu.c
===================================================================
--- trunk/Poubelle/archediab.old/archediab.sources/c/menu.c	(revision 637)
+++ trunk/Poubelle/archediab.old/archediab.sources/c/menu.c	(revision 639)
@@ -22,5 +22,5 @@
 void ferme_annexe(void);
 
-int ann;
+int j,ann;
 
 void exec_menu_diabolo(int fen,int item,double valeur,...)
@@ -34,5 +34,6 @@
 								sauve_reglage(2);*/
 								break;
-	case	d_trace_tout	:	ouvreD(0,trace_tout_id ,"trace tout" ,exec_trace_tout );
+	case	d_trace_tout	:	for(j=0;j<8;j++) printf(" tracetout %d = %d \n",j,gg->trace_tout[j]);
+								ouvreD(0,trace_tout_id ,"trace tout" ,exec_trace_tout );
 								break;
 //	case	d_trace_tout	:	if(fenetre(fenetre_trace_tout)) select(fenetre_trace_tout);
Index: trunk/Poubelle/archediab.old/archediab.sources/c/reglage.c
===================================================================
--- trunk/Poubelle/archediab.old/archediab.sources/c/reglage.c	(revision 637)
+++ trunk/Poubelle/archediab.old/archediab.sources/c/reglage.c	(revision 639)
@@ -2,4 +2,6 @@
 #include "reglage.h"
 
+#define uc(iii)   (((long)(iii))&0xff)
+#define us(iii)   (((long)(iii))&0xffff)
 
 void	param_reglage(void)
@@ -138,12 +140,19 @@
 
 ecritT(fenetre_fichier_archeops_c,insert_f,"/*debut reglage %d */\n",num);
-ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d},\n",gg->reglage.horloge.periode,gg->reglage.horloge.nb_mesures
-		,gg->reglage.horloge.temp_mort,gg->reglage.horloge.flag);
-
+
+/***********   structure normale pour le mac   ****************/
+ecritT(fenetre_fichier_archeops_c,insert_f,"#ifdef programme\n");
+
+/*  ecrit horloge    */
+ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d},\n",uc(gg->reglage.horloge.periode),uc(gg->reglage.horloge.nb_mesures)
+		,uc(gg->reglage.horloge.temp_mort),uc(gg->reglage.horloge.flag));
+
+/* ecrit vitesses  */
 for(i=0;i<nb_type_blocks;i++)
-	{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]); }
-
-ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
-	
+	{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])); }
+
+ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
+
+/* ecrit 	reglage_un_bolo  : 2 mots long */
 for(i=0;i<nb_max_bolo;i++)
 	{if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d}\n",gg->reglage.bolo[i].mot1,gg->reglage.bolo[i].mot2); 
@@ -152,25 +161,80 @@
 
 ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
-	
+
+/* ecrit auto_bolo  4 char */	
 for(i=0;i<nombre_de_voies;i++)
-	{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); 
-			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);
-	}
-
-ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
-	
+	{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)); 
+			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));
+	}
+
+ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
+
+/* ecrit  regul_bolo   */
 for(i=0;i<nombre_de_regul;i++)
 	{if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d,%d,%d,%d,%d,%d}\n"
-				,gg->reglage.regul[i].mode,gg->reglage.regul[i].num_bolo,gg->reglage.regul[i].voie_chauf,gg->reglage.regul[i].prop
-				,gg->reglage.regul[i].integ,gg->reglage.regul[i].deriv,gg->reglage.regul[i].chauffage); 
+				,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)
+				,uc(gg->reglage.regul[i].integ),uc(gg->reglage.regul[i].deriv),us(gg->reglage.regul[i].chauffage)); 
 	else	ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d,%d,%d,%d}\n"
-				,gg->reglage.regul[i].mode,gg->reglage.regul[i].num_bolo,gg->reglage.regul[i].voie_chauf,gg->reglage.regul[i].prop
-				,gg->reglage.regul[i].integ,gg->reglage.regul[i].deriv,gg->reglage.regul[i].chauffage);
-	}
-
+				,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)
+				,uc(gg->reglage.regul[i].integ),uc(gg->reglage.regul[i].deriv),us(gg->reglage.regul[i].chauffage)); 
+	}
+
+/*  ecrit  auto_dilu   */
 ecritT(fenetre_fichier_archeops_c,insert_f,"},{%d,%d,%d,%d,%d,%d,%d,%d} \n"
-		,gg->reglage.dilu.vanne,gg->reglage.dilu.helium,gg->reglage.dilu.chauffage,gg->reglage.dilu.piles
-		,gg->reglage.dilu.transmission,gg->reglage.dilu.temps_max_vanne,gg->reglage.dilu.xx7,gg->reglage.dilu.xx8);
-
+		,uc(gg->reglage.dilu.vanne),uc(gg->reglage.dilu.helium),uc(gg->reglage.dilu.chauffage),uc(gg->reglage.dilu.piles)
+		,uc(gg->reglage.dilu.transmission),uc(gg->reglage.dilu.temps_max_vanne),uc(gg->reglage.dilu.xx7),uc(gg->reglage.dilu.xx8));
+
+
+/***********  structure swappée pour le transputer   ****************/
+ecritT(fenetre_fichier_archeops_c,insert_f,"#else\n");
+
+/*  ecrit horloge    */
+ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d},\n",uc(gg->reglage.horloge.flag),uc(gg->reglage.horloge.temp_mort)
+		,uc(gg->reglage.horloge.nb_mesures),uc(gg->reglage.horloge.periode));
+
+/* ecrit vitesses  */
+for(i=0;i<nb_type_blocks;i++)
+	{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])); }
+
+ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
+
+/* ecrit 	reglage_un_bolo  : 2 mots long */
+for(i=0;i<nb_max_bolo;i++)
+	{if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d}\n",gg->reglage.bolo[i].mot1,gg->reglage.bolo[i].mot2); 
+			else	ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d}\n",gg->reglage.bolo[i].mot1,gg->reglage.bolo[i].mot2);
+	}
+
+ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
+
+/* ecrit auto_bolo  4 char */	
+for(i=0;i<nombre_de_voies;i++)
+	{if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d,%d,%d}\n"
+				,uc(gg->reglage.autom[i].delai),uc(gg->reglage.autom[i].courant),uc(gg->reglage.autom[i].gain),uc(gg->reglage.autom[i].mode)); 
+			else	ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d}\n"
+				,uc(gg->reglage.autom[i].delai),uc(gg->reglage.autom[i].courant),uc(gg->reglage.autom[i].gain),uc(gg->reglage.autom[i].mode)); 
+	}
+
+ecritT(fenetre_fichier_archeops_c,insert_f,"},{\n");
+
+/* ecrit  regul_bolo   */
+for(i=0;i<nombre_de_regul;i++)
+	{if(i>0) ecritT(fenetre_fichier_archeops_c,insert_f,",{%d,%d,%d,%d,%d,%d,%d}\n"
+				,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)
+				,us(gg->reglage.regul[i].chauffage),uc(gg->reglage.regul[i].deriv),uc(gg->reglage.regul[i].integ)); 
+	else	ecritT(fenetre_fichier_archeops_c,insert_f,"{%d,%d,%d,%d,%d,%d,%d}\n"
+				,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)
+				,us(gg->reglage.regul[i].chauffage),uc(gg->reglage.regul[i].deriv),uc(gg->reglage.regul[i].integ)); 
+	}
+
+/*  ecrit  auto_dilu   */
+ecritT(fenetre_fichier_archeops_c,insert_f,"},{%d,%d,%d,%d,%d,%d,%d,%d} \n"
+		,uc(gg->reglage.dilu.piles),uc(gg->reglage.dilu.chauffage),uc(gg->reglage.dilu.helium),uc(gg->reglage.dilu.vanne)
+		,uc(gg->reglage.dilu.xx8),uc(gg->reglage.dilu.xx7),uc(gg->reglage.dilu.temps_max_vanne),uc(gg->reglage.dilu.transmission));
+
+
+
+
+/***********   fin des structures swappées       ****************/
+ecritT(fenetre_fichier_archeops_c,insert_f,"#endif\n");
 
 ecritT(fenetre_fichier_archeops_c,insert_f,"/*fin_reglage*/\n");
Index: trunk/Poubelle/archediab.old/archediab.sources/c/senseur_stellaire.c
===================================================================
--- trunk/Poubelle/archediab.old/archediab.sources/c/senseur_stellaire.c	(revision 637)
+++ trunk/Poubelle/archediab.old/archediab.sources/c/senseur_stellaire.c	(revision 639)
@@ -2,4 +2,5 @@
 #include "senseur_stellaire.h" 
 
+int diodes[12]={1,2,3,4,5,6,7,8,9,10,11,12};
 
 
@@ -60,4 +61,5 @@
 double secondes;
 int a,b,b0,b1,b2;
+int prem_d;
 
 if(!fenetre(fenetre_senseur_stellaire)) return;
@@ -92,6 +94,6 @@
 	 }
 
-
 //k=0;
+prem_d=litD(fenetre_senseur_stellaire,sst_prem_diode,0L);
 for(k=0;k<72;k++)
 	{
@@ -102,4 +104,6 @@
 		if(i>3 ) q=i+8;
 		if(i>7 ) q=i+12;
+		q=diodes[i];
+		q=i+prem_d-1;
 		
 		a=place_paquet(q,0);
Index: trunk/Poubelle/archediab.old/archediab.sources/c/synchro.c
===================================================================
--- trunk/Poubelle/archediab.old/archediab.sources/c/synchro.c	(revision 637)
+++ trunk/Poubelle/archediab.old/archediab.sources/c/synchro.c	(revision 639)
@@ -120,7 +120,9 @@
 int i;	
 double x;
+static long ancien_temps;
 if(select_synchro==7)	// selection  valeur fixe
 	{
-	if(sy_per>=synchro_periode)
+	if((gg->temps_cntl%(int)synchro_periode)==0)
+//	if(sy_per>=synchro_periode)
 		{
 		if(gg->trace_ouvert&2)	exec_trace_1_per(fenetre_trace_1_per,ds_debut,0);
@@ -130,8 +132,15 @@
 	else
 		{
-		sy_per=sy_per+1;
+		if(gg->temps_cntl!=ancien_temps+1)
+			{
+			sy_per+=gg->temps_cntl-ancien_temps;
+			printf("erreur synchro corrigée\n");
+			}
+		else	sy_per=sy_per+1;
+		
 		if(gg->trace_ouvert&2)	exec_trace_1_per(fenetre_trace_1_per,ds_suite,0);
 		if(gg->trace_ouvert&4)	exec_trace_DS(fenetre_trace_DS,ds_suite,0);
 		}
+	ancien_temps=gg->temps_cntl;
 	}
 else
Index: trunk/Poubelle/archediab.old/archediab.sources/c/tache_archeops.c
===================================================================
--- trunk/Poubelle/archediab.old/archediab.sources/c/tache_archeops.c	(revision 637)
+++ trunk/Poubelle/archediab.old/archediab.sources/c/tache_archeops.c	(revision 639)
@@ -13,5 +13,5 @@
 //*****************************************************************************************
 //											***
-#ifdef _archeops		//---------   pour  Archeops    -----------------------	***
+#ifdef _archeopsXX		//---------   pour  Archeops    -----------------------	***
 #ifndef _sans_transputer	//---------   pour  Archeops avec transputer    -------------	***
 //											***
Index: trunk/Poubelle/archediab.old/archediab.sources/c/tache_archeops_bit2.c
===================================================================
--- trunk/Poubelle/archediab.old/archediab.sources/c/tache_archeops_bit2.c	(revision 637)
+++ trunk/Poubelle/archediab.old/archediab.sources/c/tache_archeops_bit2.c	(revision 639)
@@ -17,5 +17,5 @@
 //*****************************************************************************************
 //											***
-#ifdef _archeopsxx		//---------   pour  Archeops    -----------------------	***
+#ifdef _archeops		//---------   pour  Archeops    -----------------------	***
 #ifndef _sans_transputer	//---------   pour  Archeops avec transputer    -------------	***
 //											***
Index: trunk/Poubelle/archediab.old/archediab.sources/c/trace-DS.c
===================================================================
--- trunk/Poubelle/archediab.old/archediab.sources/c/trace-DS.c	(revision 637)
+++ trunk/Poubelle/archediab.old/archediab.sources/c/trace-DS.c	(revision 639)
@@ -5,5 +5,7 @@
 #include "trace.h"
 #include "menu.h"
-
+#define max_couleur 10
+
+static int	ds_bolo_coul[2*nb_max_bolo];
 
 	
@@ -14,4 +16,5 @@
 static  int		raz_parasite=2;
 
+void	montracen_ds(int fen,int n,double x,double *y);
 
 void	exec_trace_DS_suite(int u);
@@ -28,4 +31,5 @@
 static int u=-1;
 static flag_err=0;
+int i;
 switch(item)
     {
@@ -46,4 +50,26 @@
     case ds_temps_mort	:	
     case ds_temps_mort+1000 :
+                 			
+                 			
+    case ds_bolo_couleur :
+    case ds_bolo_couleur+1 :
+    case ds_bolo_couleur+2 :
+    case ds_bolo_couleur+3 :
+    case ds_bolo_couleur+4 :
+    case ds_bolo_couleur+5 :
+    case ds_bolo_couleur+6 :
+    case ds_bolo_couleur+7 :
+    case ds_bolo_couleur+8 :
+    case ds_bolo_couleur+9 :
+    
+    				for(i=0;i<max_couleur;i+=2)	
+    					{
+    					ds_bolo_coul[i]=litD(fen,ds_bolo_couleur+i,0L)-1; // 0=rien : 1=bolo0 // 2=bolo1
+    					if( (ds_bolo_coul[i]<1) ou (ds_bolo_coul[i]>nb_max_bolo) )   ds_bolo_coul[i]=0;
+    					if (ds_bolo_coul[i]<=24) ds_bolo_coul[i+1]=ds_bolo_coul[i]+24;
+    					printf(" i=%d bolo=%d    ",i,ds_bolo_coul[i]);
+    					}
+    				printf("\n");				    
+ 
     				calcul_table_DS(synchro_periode);
 				break;
@@ -99,8 +125,8 @@
 void	exec_trace_DS_suite(int u)	// appellé quoiqu'il arrive avec u=0,1,2,.... , npt_DS-1
 {
-static double y[nb_max_bolo+1],y1[nb_max_bolo+1],y2[nb_max_bolo+1],bb[nb_max_bolo+1];
+static double y[2*nb_max_bolo],y1[2*nb_max_bolo],y2[2*nb_max_bolo],bb[2*nb_max_bolo];
 int j;
 static double  phase_mesure[nb_max_bolo],confiance[nb_max_bolo],phase_memoire;
-
+//printf("suite avec u=%d \n");
 switch(choix_DS)
 	{
@@ -119,16 +145,25 @@
 				{
 				phase_mesure[j]=atan2(y1[j],y2[j]);
-				confiance[j]=log((y1[j]*y1[j]+y2[j]*y2[j])/(bb[j]*bb[j]));
-				printf(" %d°(%2.1f)  ",degre(phase_mesure[j]),confiance[j]);
+				confiance[j]=bb[j]*bb[j];
+				if(confiance[j]) 	confiance[j]=log((y1[j]*y1[j]+y2[j]*y2[j])/(bb[j]*bb[j]));
 				}
-			j=1;	// bolo pur mesurer la phase
-			phase_memoire=phase_mesure[j];
+			j=5;	// bolo pur mesurer la phase
+			phase_memoire=0.95*phase_memoire+0.05*phase_mesure[j];
 			ecritD(fenetre_trace_DS,ds_phase,"%d°",degre(phase_memoire));
-			printf(": phase memoire=%g  \n",phase_memoire);
+			printf(" phase=%d°(%2.1f)  \n",degre(phase_mesure[j]),confiance[j]);
+//			printf(": phase memoire=%g  \n",phase_memoire);
+//			printf(" trace y1= %g , %g , %g , %g , %g \n",y1[0],y1[1],y1[2],y1[3],y1[4]); 
+			for(j=0;j<nb_max_bolo;j++)
+				{
+				y1[j+nb_max_bolo]=y2[j];
+				}
+
+/*				
 			for(j=0;j<nb_max_bolo;j++)
 				{
 				y1[j]=sin(phase_memoire)*y1[j]+cos(phase_memoire)*y2[j];
 				}
-//			printf(" trace y1= %g , %g , %g , %g , %g \n",y1[0],y1[1],y1[2],y1[3],y1[4]); 
+			printf(" trace y1= %g , %g , %g , %g , %g \n",y1[0],y1[1],y1[2],y1[3],y1[4]); 
+*/
 			trace_DS(y1,0);
 			for(j=0;j<nb_max_bolo;j++)
@@ -208,12 +243,13 @@
 
 // divise par la norme, trace y puis fait un RAZ
-void trace_DS(double *y,int enregistre)		//   y [nb_max_bolo +1 ]
+void trace_DS(double *y,int enregistre)		//   y [2*nb_max_bolo]
 {
 double x;
-static double yraz[nb_max_bolo];
-static double yt[nb_max_bolo+1];
+static double yraz[2*nb_max_bolo];
+static double yt[2*nb_max_bolo];
 int j,k,moy;
-static double yfiltre[nb_max_bolo][10];
+static double yfiltre[2*nb_max_bolo][10];
 static int uf=0;
+static int scan_ds=0;
 x=gg->periode_echantillonage*(double)gg->temps_cntl-gg->temps_origine;
 
@@ -231,6 +267,6 @@
 
 
-for(j=0;j<nb_max_bolo;j++)	yt[j]=y[j];
-for(j=0;j<nb_max_bolo;j++)	y[j]=0;
+for(j=0;j<2*nb_max_bolo;j++)	yt[j]=y[j];
+for(j=0;j<2*nb_max_bolo;j++)	y[j]=0;
 
 //printf(" au debut = %g , %g , %g , %g , %g \n",yt[0],yt[1],yt[2],yt[3],yt[4]); 
@@ -239,5 +275,5 @@
 
 
-for(j=0;j<nb_max_bolo;j++)
+for(j=0;j<2*nb_max_bolo;j++)
 			{
 			yt[j]/=norme_DS;
@@ -251,8 +287,12 @@
 raz_parasite=0;
 selectgra(fenetre_trace_DS);
-yt[nb_max_bolo]=(0.95*graph->ymin+0.05*graph->ymax) + 
-		+  ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) * 0.9 * (graph->ymax-graph->ymin);
-//printf(" signal subscan=%g  ",yt[nb_max_bolo]);
-//printf(" avant moyenne= %g , %g , %g , %g , %g \n",yt[0],yt[1],yt[2],yt[3],yt[4]); 
+if(scan_ds != ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) )
+	{
+	if(scan_ds)	rectangle(fenetre_trace_DS,x,graph->ymin,x,graph->ymax,rouge);		// trace le segment x1,y1 - x2,y2		
+	  else	rectangle(fenetre_trace_DS,x,graph->ymin,x,graph->ymax,bleu);		// trace le segment x1,y1 - x2,y2		
+
+	scan_ds = ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) ;
+	}
+
 
 moy=litD(fenetre_trace_DS,ds_moyenne,0L);
@@ -262,5 +302,5 @@
 	uf++;
 	if(uf>=moy) uf=0;
-	for(j=0;j<nb_max_bolo;j++) 					//  ne moyenne pas le signal de scan 
+	for(j=0;j<2*nb_max_bolo;j++) 					 
 		{
 		for(k=0;k<moy;k++)	yfiltre[j][k]+=yt[j];
@@ -271,6 +311,5 @@
 //printf(" montracen yt= %g , %g , %g , %g , %g \n",yt[0],yt[1],yt[2],yt[3],yt[4]); 
 //printf(" avant trace : =%g  \n",yt[nb_max_bolo]);
-montracen(fenetre_trace_DS,nb_max_bolo+1,x,yt);
-
+montracen_ds(fenetre_trace_DS,2*nb_max_bolo,x,yt);
 if(!(graph->scroll_courbe) && litD(fenetre_trace_DS,ds_retour,0L) &&
 		 ( (x<graph->xmin) ou (x>graph->xmax) )) 
@@ -415,2 +454,18 @@
 }
 
+
+
+void	montracen_ds(int fen,int n,double x,double *y)
+{
+int i,cc;
+double yy[max_couleur];   // 0=rien : 1 2=bolo0 // 3 4 =bolo
+for(i=0;i<max_couleur;i++)
+	{
+	cc=ds_bolo_coul[i];
+	if(cc && (cc<=2*nb_max_bolo) ) 	yy[i]=y[cc-1];
+		else		yy[i]=0;
+	}
+tracen(fen,max_couleur,x,yy);
+//	printf("0=%g  1=%g  2=%g  \n",yy[0],yy[1],yy[2]);
+}
+
Index: trunk/Poubelle/archediab.old/archediab.sources/c/trace_tout.c
===================================================================
--- trunk/Poubelle/archediab.old/archediab.sources/c/trace_tout.c	(revision 637)
+++ trunk/Poubelle/archediab.old/archediab.sources/c/trace_tout.c	(revision 639)
@@ -19,4 +19,5 @@
 int  i,j;
 double x,c1,c2;
+static int scan_tt;
 util_trace_tout *SS;
 SS=infos(fen)->util;
@@ -91,7 +92,6 @@
 
     case tache_de_fond		:	selectgra(fen);
-    						
-							c1=2*3.14*SS->fmini*gg->periode_echantillonage;		c1=c1/(1+c1);	
-							c2=2*3.14*SS->fmaxi*gg->periode_echantillonage;		c2=c2/(1+c2);	
+							c1=2*3.14*SS->fmini*gg->periode_echantillonage;	if(c1>0)	c1=c1/(1+c1);	
+							c2=2*3.14*SS->fmaxi*gg->periode_echantillonage;	if(c2>0)	c2=c2/(1+c2);	
 							
 			    			for(j=0;j<nb_max_bolo;j++)		
@@ -105,18 +105,18 @@
 								{
 								SS->ipas=SS->moyenne;
-								for(j=0;j<nb_max_bolo;j++) SS->y[j]=SS->y[j]/(double)SS->moyenne;
-								printf("trace_tout  un  point \n");
-								
-//								SS->[nb_max_bolo]=(0.95*graph->ymin+0.05*graph->ymax) + 
-//									+  ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) )
-//										* 0.9 * (graph->ymax-graph->ymin);
+								if(SS->moyenne) for(j=0;j<nb_max_bolo;j++) SS->y[j]=SS->y[j]/(double)SS->moyenne;
+//								printf("trace_tout  un  point \n");
 
 								x=gg->periode_echantillonage*(double)gg->temps_cntl-gg->temps_origine;
-//								printf("x=%g  x0=%g  \n",x,x0);
-								//if(x<0) {x0=gg->periode_echantillonage*(double)gg->temps_cntl;x=0;}
+								
+if(scan_tt != ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) )
+	{
+	if(scan_tt)	rectangle(fen,x,graph->ymin,x,graph->ymax,rouge);		// trace le segment x1,y1 - x2,y2		
+	  else	rectangle(fen,x,graph->ymin,x,graph->ymax,bleu);		// trace le segment x1,y1 - x2,y2		
 
+	scan_tt = ( (gg->don.sync[sync_subscan]!=0) et (gg->don.sync[sync_scan]!=0) ) ;
+	}
 
-								montracen_tout(fen,nb_max_bolo,x,SS);	// SANS LA SYNCHRO
-//								montracen(fen,nb_max_bolo+1,x,SS->y);	// avec la synchro
+   								montracen_tout(fen,nb_max_bolo,x,SS);
 
 
@@ -144,5 +144,5 @@
 for(i=0;i<max_couleur;i++)
 	{
-	if(SS->bolo_couleur[i])	yy[i]=SS->y[SS->bolo_couleur[i]-1];
+	if( (SS->bolo_couleur[i]>=1) && (SS->bolo_couleur[i]<nb_max_bolo+1) ) 	yy[i]=SS->y[SS->bolo_couleur[i]-1];
 		else		yy[i]=0;
 	}
