Index: branch/maincent/tp_info6/Emb_App/programme_principal_etud.c
===================================================================
--- branch/maincent/tp_info6/Emb_App/programme_principal_etud.c	(revision 366)
+++ branch/maincent/tp_info6/Emb_App/programme_principal_etud.c	(revision 367)
@@ -143,10 +143,34 @@
 	}
 }
 
+
+short capteur;
+void zone(){				// vrai pour toutes les pistes
+	while(1)
+	{
+		//lecture de la zone
+        CanFrame requ;
+        UINT flag;
+		requ.data.id='C';			//lecture des evenements
+		requ.data.rtr=1;			//indique une lecture
+		periph[ADDR('C')].ev=0x03;
+		snd_dtq(CanTx, requ.msg);
+		
+		//Attente de la reponse
+        wai_flg (ev_periph, 0x03, TWF_ANDW, &flag);
+        capteur=periph[ADDR('C')].val;
+		dly_tsk(25);				
+	}
+}
+
+
 short alpha;
 void tourelle(){				// vrai pour toutes les pistes
 	while(1)
 	{
+
+		
+		
         short k=1; //Gain du correcteur P
         //lecture de la position de la tourelle
         CanFrame req,comm;
@@ -159,38 +183,22 @@
         //Attente de la reponse
         wai_flg (ev_periph, 0x01, TWF_ANDW, &flag);
         alpha=periph[ADDR('R')].val;
-        
+     
 		
-		//Commande vitesse de la tourelle
-        comm.data.id='T';
-        comm.data.rtr=0; //indique une ?criture
-        comm.data.val=k*(450-alpha);
-        snd_dtq(CanTx, comm.msg);
- 		dly_tsk(50);
+			//Commande vitesse de la tourelle
+      	    comm.data.id='T';
+      	    comm.data.rtr=0; //indique une ?criture
+     	    comm.data.val=k*(450-alpha);
+      		snd_dtq(CanTx, comm.msg);
+ 			dly_tsk(50);
+		
 	}      
 }
 
 
-short capteur;
-void zone(){				// vrai pour toutes les pistes
-	while(1)
-	{
-		//lecture de la zone
-        CanFrame requ;
-        UINT flag;
-		requ.data.id='C';			//lecture des evenements
-		requ.data.rtr=1;			//indique une lecture
-		periph[ADDR('C')].ev=0x03;
-		snd_dtq(CanTx, requ.msg);
-		
-		//Attente de la reponse
-        wai_flg (ev_periph, 0x03, TWF_ANDW, &flag);
-        capteur=periph[ADDR('C')].val;
-		dly_tsk(25);				
-	}
-}
 
 
+
 unsigned short distance;
 unsigned short distance1;
 void dist(){				// vrai pour toutes les pistes
@@ -260,23 +268,82 @@
 		
 		else 		// piste noir
 		{
-			if (distance > 2000 ) // || ) //bosse piste rouge 
+			if (capteur == 0x6afe)  // 1er tonneau
 			{
-				// si trou dans la barriere ou zonesaut
+			
+				if (distance > 2000 ) 
+				{
+					// si trou dans la barriere ou zonesaut
+				}
+
+				else
+				{
+					distance1=distance;	 //cas normal: si on est au milieu de la piste angle des roues à 0
+        		}
+  				comm.data.val=s*(distance1-450);
+				snd_dtq(CanTx, comm.msg);
+			 	dly_tsk(5);
 			}
-			else if (capteur == 0x6aff)
+			else if (capteur == 0x6afd) //2eme tonneau
 			{
-				
-			//	dly_tsk(1500);
-				
-			}
+				if (distance > 2000 ) 
+				{
+					// si trou dans la barriere ou zonesaut
+				}
+
+				else
+				{
+					distance1=distance;	 //cas normal: si on est au milieu de la piste angle des roues à 0
+        		}
+  				comm.data.val=s*(distance1-300);
+				snd_dtq(CanTx, comm.msg);
+			 	dly_tsk(5);
+      	 	} 
+   			else if (capteur == 0x4a01) // 1er virage
+			{
+				if (distance > 2000 ) 
+				{
+					// si trou dans la barriere ou zonesaut
+				}
+
+				else
+				{
+					distance1=distance;	 //cas normal: si on est au milieu de la piste angle des roues à 0
+        		}
+  				comm.data.val=s*(distance1-250);
+				snd_dtq(CanTx, comm.msg);
+			 	dly_tsk(5);
+      	 	} 
+   			else if (capteur == 0x5602) // bosse 
+			{
+				if (distance > 2000 ) 
+				{
+					// si trou dans la barriere ou zonesaut
+				}
+
+				else
+				{
+					distance1=distance;	 //cas normal: si on est au milieu de la piste angle des roues à 0
+        		}
+  				comm.data.val=s*(distance1-145);
+				snd_dtq(CanTx, comm.msg);
+			 	dly_tsk(5);
+      	 	} 
 			else
 			{
-				distance1=distance;	 //cas normal: si on est au milieu de la piste angle des roues à 0
-        	}
-  			comm.data.val=s*(distance1-706);
-			snd_dtq(CanTx, comm.msg);
-			 dly_tsk(20);
+					if (distance > 2000  || capteur == 0x6aff || capteur ==  0x5601 ) //bosse piste rouge 
+				{
+					// si trou dans la barriere ou zonesaut
+				}
+
+				else
+				{
+					distance1=distance;	 //cas normal: si on est au milieu de la piste angle des roues à 0
+        		}
+  				comm.data.val=s*(distance1-750);
+				snd_dtq(CanTx, comm.msg);
+			 	dly_tsk(20);
+			}
 		}	
   
 			  
@@ -350,18 +417,22 @@
 			break;
 			
 			case 0x0004 :		// pour piste noir
-				if (capteur == 0x5602 || capteur == 0x5603 || capteur == 0x5604 || capteur == 0x5605)
+				if ( capteur == 0x5603 || capteur == 0x5605)
 					{
-						requete.data.val=60;				// ligne droite 
+						requete.data.val=50;				// ligne droite 
 					}
-					else if (capteur == 0x6aff)
+					else if (capteur == 0x6afd || capteur == 0x6afe)
 					{
-						requete.data.val=45; 				//bosse
+						requete.data.val=20; 				//bosse
       	 			} 
 					else if (capteur == 0x5601)
 					{
 						requete.data.val=35;				// petit virage entrée 
 					}
+					else if (capteur == 0x6aff)
+					{
+						requete.data.val=43;				//  virage après saut 
+					}
 					else if (capteur == 0x4203)
 					{
 						requete.data.val=10;				//  virage après saut 
@@ -368,7 +439,7 @@
 					}
 					else
 					{
-						requete.data.val=25; 				//virage
+						requete.data.val=15; 				//virage
       	 			} 
 			break;
 			
