Index: branch/sotty/Emb_App/SessionM32C_E8a_system.ini
===================================================================
--- branch/sotty/Emb_App/SessionM32C_E8a_system.ini	(revision 359)
+++ branch/sotty/Emb_App/SessionM32C_E8a_system.ini	(revision 360)
@@ -25,4 +25,4 @@
 [Target]
 M32C E8a SYSTEM=Renesas Communications
 [USER_DATA]
-RESET=ff0036
+RESET=ff003e
Index: branch/sotty/Emb_App/programme_principal_etud.c
===================================================================
--- branch/sotty/Emb_App/programme_principal_etud.c	(revision 359)
+++ branch/sotty/Emb_App/programme_principal_etud.c	(revision 360)
@@ -151,15 +151,22 @@
 short distance_mur = 0;
 short angle_tourelle = 450;
 
-const short vit_max = 30;
+short vit_max = 30;
 unsigned int vit_roue = 15;//*
 short K_roue = 1;
 short ang_roue = 0;
 short capteur = 0;
 
+short compar_mur = 500;
+
 char num_piste = -1;
 
+char rotation_roues_asserv = 1; //Si 1 roues libres sinon blocage
+char rotation_roues_strat = 1; //Si 1 roues libres sinon blocage
+short filtre_sup = 1000;
+short filtre_inf = 0;
 
+
 void main()
 {
 	int k;
@@ -190,9 +197,9 @@
 	
 	couleur_piste();
 	sta_tsk(ID_strategie);
+	
     while(1)
     {
-		//strategie();
 		LED_J=1;
 		dly_tsk(100);
 		LED_J=0;
@@ -209,6 +216,7 @@
 		capteur = send_requete(INFO_CAPTEUR);//**
 		switch(num_piste){
 		    case PISTE_VERTE :
+				vit_roue = 40;
 	            break;
 
 	        case PISTE_BLEUE :
@@ -217,11 +225,12 @@
 	        case PISTE_ROUGE :
 				switch(capteur){
 					case 0x6301 : //Capteur perso avant bosse rouge
-						ang_roue = 0;//*****
+						rotation_roues_strat = 0; //blocage de langle des roues
 						vit_roue = 45;
 						break;
 					
 					case 0x4203 : //Capteur apres bosse rouge
+						rotation_roues_strat = 1;
 						vit_roue = 8;
 						k = 0;
 						break;
@@ -251,16 +260,53 @@
 
 	        case PISTE_NOIRE :
 				switch(capteur){
-					case 0x6302 :
-						if(distance_mur > 1000 || distance_mur < 0) {	//Trou dans le mur  //**
-							ang_roue = 0;
-						}
-						else {
-							ang_roue = (K_roue*(distance_mur-700));//**
-						}
-					break;
+					case 0x5601 :	//evitement tonneaux
+						compar_mur = 680; //decalage a gauche
+						filtre_inf = 300;
+						break;
+						
+					case 0x4a01 :	//fin tonneaux
+						compar_mur = 500; //voiture centree
+						filtre_inf = 0;
+						break;
+						
+					case 0x5602 :	//virage avant saut
+						vit_roue = 15;
+						break;
+						
+					case 0x6302 : //quart perso bosse
+						vit_roue = 10;
+						filtre_inf = 480;
+						filtre_sup = 520;
+						break;
+
+					case 0x5202 :	//fin de bosse
+						filtre_inf = 0;
+						filtre_sup = 1000;
+						vit_roue = vit_max;
+						break;
+					
+					case 0x6320 :	//capteur perso avant saut
+						rotation_roues_strat = 0; //blocage de langle des roues
+						vit_roue = vit_max + 12;
+						break;
+						
+					case 0x4203 :	//capteur apres saut
+						rotation_roues_strat = 1; //deblocage de langle des roues
+						vit_roue = vit_max-20;
+						break;
+						
+					case 0x5604 :	//capteur avant cross
+						filtre_inf = 300;
+						filtre_sup = 700;
+						break;
+						
+					case 0x4304 :	//capteur apres cross
+						filtre_inf = 0;
+						filtre_sup = 1000;
+						vit_roue = vit_max;
+						break;
 				
-				
 				}
 	            break;
 		}
@@ -277,15 +323,13 @@
 
 	//Angle des roues necessaire pour toutes les pistes
 	distance_mur = distance_telemetre()*sin(3.1415*angle_tourelle/1800.0);
-	if(distance_mur > 1000 || distance_mur < 0) {	//Trou dans le mur  //**
-		ang_roue = 0;
+	if(distance_mur > filtre_sup || distance_mur < filtre_inf) {	//Trou dans le mur
+		rotation_roues_asserv = 0;
 	}
 	else {
-		ang_roue = (K_roue*(distance_mur-500));//**
+		rotation_roues_asserv = 1;
 	}
-
-	
-
+	ang_roue = rotation_roues_asserv*rotation_roues_strat*(K_roue*(distance_mur-compar_mur));
 /*
 	//Detection de couleur
 	//8 bits de poids fort : couleur ('C','R','J','B' ou 'V')
