Index: branch/mendiondo/Emb_App/SessionM32C_E8a_system.ini
===================================================================
--- branch/mendiondo/Emb_App/SessionM32C_E8a_system.ini	(revision 398)
+++ branch/mendiondo/Emb_App/SessionM32C_E8a_system.ini	(revision 399)
@@ -25,4 +25,4 @@
 [Target]
 M32C E8a SYSTEM=Renesas Communications
 [USER_DATA]
-RESET=ff001c
+RESET=ff0020
Index: branch/mendiondo/Emb_App/crt0mr.a30
===================================================================
--- branch/mendiondo/Emb_App/crt0mr.a30	(revision 398)
+++ branch/mendiondo/Emb_App/crt0mr.a30	(revision 399)
@@ -97,7 +97,7 @@
 ; after reset,this program will start
 ;-----------------------------------------------------------------
 __SYS_INITIAL:
-	LDC	#__Sys_Sp,ISP	; set initial ISP
+LDC	#__Sys_Sp,ISP	; set initial ISP
 
 	MOV.B	#2,0AH
 	MOV.B	#00,PMOD		; Set Processor Mode Register
Index: branch/mendiondo/Emb_App/programme_principal_etud.c
===================================================================
--- branch/mendiondo/Emb_App/programme_principal_etud.c	(revision 398)
+++ branch/mendiondo/Emb_App/programme_principal_etud.c	(revision 399)
@@ -124,10 +124,10 @@
 
 
 
-unsigned int alpha;
+unsigned int alpha;j;
 unsigned int dist;
 unsigned int k=2,cpt=0;ka=1;
-unsigned int numero_capt,couleur_capt,couleur,num_piste,feu;
+unsigned int numero_capt,couleur_capt,couleur_piste,couleur,num_piste,feu,ok=0,tour=0;
 unsigned short capteur;piste;
 
 
@@ -146,10 +146,10 @@
 					ka=1;
 					comm.data.val=65;											// 75 pour niveaux 1 , 65 pour 2, 45 pour 3
 				}
-			
+				else if (tour==3)comm.data.val=0;
 				else{
-					comm.data.val=30;											// 30	1,2,3	20    4		vitesse virage
-					k=5;														
+					comm.data.val=35;											// 30	1,2,3	20    4		vitesse virage
+					k=6;														
 				}
 				snd_dtq(CanTx,comm.msg);
 	//	dly_tsk(100);
@@ -162,10 +162,10 @@
 					ka=1;
 					comm.data.val=65;											// 75 pour niveaux 1 , 65 pour 2, 45 pour 3
 				}
-			
+				else if (tour==3)comm.data.val=0;
 				else{
 					comm.data.val=30;											// 30	1,2,3	20    4		vitesse virage
-					k=5;														
+					k=6;														
 				}
 				snd_dtq(CanTx,comm.msg);
 	//	dly_tsk(100);
@@ -176,9 +176,10 @@
 				if ((numero_capt==1024)&&(couleur_capt==118)){				// on passe le capteur début saut du niveau 3
 				ka=1;													/////////////////////////////////manque peut_être un cpt++
 				k=2;
+				cpt=5;
 				comm.data.val=45;										// pas besoin si on laisse la vitesse a 45 tt le temps
 				}
-			
+				else if (tour==3)comm.data.val=0;
 				else if ((numero_capt==768)&&(couleur_capt==66)){				// on passe le capteur arrivée saut du niveau 3 donc on ralentit
 					k=3;
 					ka=1;
@@ -188,12 +189,12 @@
 				else if (cpt%2 ==1){
 					k=2;														
 					ka=1;
-					comm.data.val=45;											// 75 pour niveaux 1 , 65 pour 2, 45 pour 3
+					comm.data.val=50;											// 75 pour niveaux 1 , 65 pour 2, 45 pour 3
 				}
 				
 				else{
 					comm.data.val=30;											// 30	1,2,3	20    4		vitesse virage
-					k=5;														
+					k=6;														
 				}
 				snd_dtq(CanTx,comm.msg);
 	//	dly_tsk(100);
@@ -208,8 +209,9 @@
 				else if ((numero_capt==1024)&&(couleur_capt==114)){				// on passe le capteur début saut du niveau 4
 					ka=1;
 					k=2;	
-					comm.data.val=41,5;										
+					comm.data.val=43;										
 				}
+				else if (tour==3)comm.data.val=0;
 				else if ((numero_capt==512)&&(couleur_capt==82)){				// on passe le capteur sortie virage avant SAUT
 					ka=1;
 					k=2;
@@ -225,14 +227,19 @@
 					k=3;														
 					comm.data.val=10;
 				}
+				 else if ((numero_capt==1024)&&(couleur_capt==86)){				// on passe le capteur début saut du niveau 4
+					ka=1;
+					k=2;	
+					comm.data.val=10;										
+				}
 				else if (cpt%2 ==1){
 					k=2;														
 					ka=1;
-					comm.data.val=25;											// 75 pour niveaux 1 , 65 pour 2, 45 pour 3
+					comm.data.val=20;											// 75 pour niveaux 1 , 65 pour 2, 45 pour 3
 				}			
 				else{
-					comm.data.val=20;											// 30	1,2,3	20    4		vitesse virage
-					k=5;														
+					comm.data.val=15;											// 30	1,2,3	20    4		vitesse virage
+					k=2;														
 				}
 				snd_dtq(CanTx,comm.msg);
 	//	dly_tsk(100);
@@ -259,18 +266,32 @@
 		
 			comm.data.id='T';
 			comm.data.rtr=0;
+			switch (num_piste){
+				
+				case (1024):
 			
-			if ((numero_capt==512)&&(couleur_capt==86)){				// on passe le capteur montée niveau 4
-					comm.data.val=k*(900-alpha);
-				}
-			else{
-				comm.data.val=k*(450-alpha);				//commande en vitesse de la tourelle
-			}
-			snd_dtq(CanTx,comm.msg);
+					if ((numero_capt==512)&&(couleur_capt==86)){				// on passe le capteur montée niveau 4
+						comm.data.val=k*(900-alpha);
+					}
+					else{
+						comm.data.val=k*(450-alpha);				//commande en vitesse de la tourelle
+					}
+					snd_dtq(CanTx,comm.msg);
+				break;
+				
+				default :
+					comm.data.val=k*(450-alpha);
+					snd_dtq(CanTx,comm.msg);	
+				break;
+			}	
+			
 			dly_tsk(10);
 		
 	}
 }
+
+
+
 		
 void distance(){
 	CanFrame req,comm;
@@ -278,39 +299,82 @@
 	while(1){
 		req.data.id='U';
 		req.data.rtr=1;
-		if ((numero_capt==1024)&&(couleur_capt==118)){				// on passe le capteur saut du niveau 3
-			dly_tsk(30);
-		}
-		else if ((numero_capt==1024)&&(couleur_capt==114)){				// on passe le capteur saut niveau 4
-			dly_tsk(200);
-		}
-		else{
-			periph[ADDR('U')].ev=0x02;
-			snd_dtq(CanTx, req.msg);
-			wai_flg(ev_periph, 0x02,TWF_ANDW, &flag);
-			dist=periph[ADDR('U')].val;								//lecture de la distance
 		
-			if((dist<1500)&&(dist>400)){
-				comm.data.id='D';
-				comm.data.rtr=0;
-				if ((numero_capt==2048)&&(couleur_capt==118)){				// on passe le capteur tonneau niveau 4
-					comm.data.val=-500 + dist;
+		switch(num_piste){
+			case(1024):
+				
+				if ((numero_capt==1024)&&(couleur_capt==114)){				// on passe le capteur saut niveau 4
+					dly_tsk(220);
 				}
-				else if ((numero_capt==512)&&(couleur_capt==86)){				// on passe le capteur sortie virage niveau 4
-					if ((dist<400)||(dist>550)){
-						dly_tsk(2);
+				else{
+					periph[ADDR('U')].ev=0x02;
+					snd_dtq(CanTx, req.msg);
+					wai_flg(ev_periph, 0x02,TWF_ANDW, &flag);
+					dist=periph[ADDR('U')].val;								//lecture de la distance
+				/*	if((dist=0)||(dist>2000)){
+						LED_J=1;
+						dly_tsk(1000);
 					}
-					else{
-					comm.data.val=ka*( -502 +dist);
+				*/		
+					
+					if(dist<1500){
+						comm.data.id='D';
+						comm.data.rtr=0;
+						if ((numero_capt==2048)&&(couleur_capt==118)){				// on passe le capteur tonneau niveau 4
+							comm.data.val=-520 + dist;
+						}
+						
+							
+						else if ((numero_capt==512)&&(couleur_capt==86)){				// on passe le capteur sortie virage niveau 4
+							if ((dist<400)||(dist>550)){
+							dly_tsk(2);
+							}
+							else{
+							comm.data.val=ka*( -502 +dist);
+							}
+						} 
+						else{
+							comm.data.val=ka*(-710 +dist);
+						}
+										
 					}
-				} 
-				else{
+				}	
+				snd_dtq(CanTx, comm.msg);
+				break;
+				
+			case (768):	
+				if ((numero_capt==1024)&&(couleur_capt==118)){				// on passe le capteur saut du niveau 3
+					dly_tsk(220);
+				}
+				
+				periph[ADDR('U')].ev=0x02;
+				snd_dtq(CanTx, req.msg);
+				wai_flg(ev_periph, 0x02,TWF_ANDW, &flag);
+				dist=periph[ADDR('U')].val;								//lecture de la distance
+				if((dist<1500)&&(dist>400)){
+					comm.data.id='D';
+					comm.data.rtr=0;
 					comm.data.val=ka*(-710 +dist);
 				}
-				snd_dtq(CanTx, comm.msg);							//commande en angle des roues
-			}
-		}			
+			snd_dtq(CanTx, comm.msg);	
+			break;
+			
+			default:
+				periph[ADDR('U')].ev=0x02;
+				snd_dtq(CanTx, req.msg);
+				wai_flg(ev_periph, 0x02,TWF_ANDW, &flag);
+				dist=periph[ADDR('U')].val;								//lecture de la distance
+				if((dist<1500)&&(dist>400)){
+					comm.data.id='D';
+					comm.data.rtr=0;
+					comm.data.val=ka*(-710 +dist);
+				}
+			snd_dtq(CanTx, comm.msg);	
+			break;
+		}
+				
 		dly_tsk(10);
+		
 	}
 }
 
@@ -328,7 +392,12 @@
 		numero_capt = capteur << 8;
 		couleur_capt = capteur >>8 ;
 		
-		if(couleur!=couleur_capt)cpt++;							// détection de changement de capteur
+		if(couleur!=couleur_capt){					// détection de changement de capteur
+			if ((couleur_capt == 86)&&(numero_capt ==1280)){
+				tour++;
+			}
+			cpt++;	
+		}						
 		couleur=couleur_capt;
 		
 		dly_tsk(100);
@@ -346,8 +415,10 @@
 		snd_dtq(CanTx, req.msg);
 		wai_flg(ev_periph, 0x04, TWF_ANDW, &flag);
 		piste=periph[ADDR('M')].val;
+		
 		num_piste=piste<<8;
-		couleur=piste<<15;
+		couleur_piste=piste<<15;
+		feu=piste>>15; 
 		
 		dly_tsk(500);
 	}
@@ -368,18 +439,34 @@
 	capture_init();
 	sta_tsk(ID_periph_rx);
 	sta_tsk(ID_pistes);
-	sta_tsk(ID_avancer);
+	
 //	sta_cyc(ID_acqui);
 	sta_tsk(ID_asserv_tourelle);
 	sta_tsk(ID_distance);
 	sta_tsk(ID_capte);
 	
+	
 	
-   	while(1)
-    {
-		dly_tsk(100);
+   	while(1){
+    
+	dly_tsk(1000);
+	
+	if (feu == 65535){
+		ok=1;
 	}
-	
+	if(ok == 1){
+		sta_tsk(ID_avancer);
+	}
+	if(tour == 3)/*||(Bp_G==1))*/{
+		ter_tsk(ID_pistes);
+		ter_tsk(ID_avancer);
+		ok=0;
+		ter_tsk(ID_asserv_tourelle);
+		ter_tsk(ID_distance);
+		ter_tsk(ID_capte);
+		ter_tsk(ID_periph_rx);		
+	}
+	}	
 }
 
 void acqui()
Index: branch/mendiondo/Emb_App/conf_noyau.cfg
===================================================================
--- branch/mendiondo/Emb_App/conf_noyau.cfg	(revision 398)
+++ branch/mendiondo/Emb_App/conf_noyau.cfg	(revision 399)
@@ -106,6 +106,7 @@
 	initial_start	= OFF;
 	exinf	= 0x0;
 };
+
 flag[]{
 	name	= ev_bus_fin_tr;
 	initial_pattern	= 0x0000;
