Index: branch/maincent/tp_info6/Emb_App/programme_principal_etud.c
===================================================================
--- branch/maincent/tp_info6/Emb_App/programme_principal_etud.c	(revision 377)
+++ branch/maincent/tp_info6/Emb_App/programme_principal_etud.c	(revision 378)
@@ -123,6 +123,7 @@
 short piste1;
 short selecpiste;
 short modecourse;
+short feuvert;
 void piste(){					//detecte la couleur de la piste
 	while(1)
 	{
@@ -138,12 +139,32 @@
         wai_flg (ev_periph, 0x04, TWF_ANDW, &flag);
         piste1=periph[ADDR('M')].val;
 		selecpiste = piste1 & 0x00FF;
-		modecourse = piste1 & 0xFF00;
+		modecourse = piste1 & 0x7F00;
+		feuvert = piste1 & 0x8000;
 		dly_tsk(25);			
 	}
 }
+short even;
+short tourterm;
+void evenement(){					//detecte la couleur de la piste
+	while(1)
+	{
+		//lecture de levenement
+        CanFrame requet;
+        UINT flag;
+		requet.data.id='E';			//lecture des evenements
+		requet.data.rtr=1;			//indique une lecture
+		periph[ADDR('E')].ev=0x05;
+		snd_dtq(CanTx, requet.msg);
+		
+		//Attente de la reponse
+        wai_flg (ev_periph, 0x05, TWF_ANDW, &flag);
+        even=periph[ADDR('E')].val;
+		tourterm=even & 0x0020;
+		dly_tsk(25);			
+	}
+}
 
-
 short capteur;
 void zone(){				// vrai pour toutes les pistes
 	while(1)
@@ -325,7 +346,7 @@
 				{
 					distance1=distance;	 //cas normal: si on est au milieu de la piste angle des roues à 0
         		}
-  				comm.data.val=s*(distance1-145);
+  				comm.data.val=s*(distance1-147);
 				snd_dtq(CanTx, comm.msg);
 			 	dly_tsk(5);
       	 	} 
@@ -351,7 +372,7 @@
 
 }
 
-
+short nbtour;
 void vitesse(){
 	
 	dly_tsk(5000);
@@ -364,75 +385,66 @@
 		//commande vitesse vehicule
 		requete.data.id='V';
 		requete.data.rtr=0; 			//indique une ecriture
-		switch (selecpiste){
-			case 0x0001 :		// pour piste verte
 		
-				if (capteur == 0x5602 || capteur == 0x5603 || capteur == 0x5604 || capteur == 0x5605 || capteur == 0x5601  )
-				{
-					requete.data.val=70;				// ligne droite 
-				}	
-				else
-				{
-					requete.data.val=40; 				//virage
-      	 		} 
-			break;
+		if (p0_4==1 && ( modecourse == 0x0300 || modecourse == 0x0200 || nbtour > 4 ))
+		{	
+			switch (selecpiste)
+			{
+				case 0x0001 :		// pour piste verte
 			
-			case 0x0002 :		// pour piste bleu
+					if (capteur == 0x5602 || capteur == 0x5603 || capteur == 0x5604 || capteur == 0x5605  )
+					{
+						requete.data.val=100;				// ligne droite 
+					}
+		
+					else if (capteur == 0x5601 )
+					{
+						requete.data.val=100;				// pré virage
+						nbtour = nbtour +1;
+					}	
+					else if (capteur == 0x6aff )
+					{
+						requete.data.val=60;				// pré virage
+					}
+					else if (capteur == 0x6a00 )
+					{
+						requete.data.val=85;				// pré virage
+					}
+					else
+					{
+						requete.data.val=40; 				//virage
+      	 			} 
+				break;
+				
+				case 0x0002 :		// pour piste bleu
 						
-				if (capteur == 0x5602 || capteur == 0x5603 || capteur == 0x5605 || capteur == 0x5601  )
-				{
-					requete.data.val=60;				// ligne droite 
-				}
-				else if (capteur == 0x5604)
-				{
-					requete.data.val=50; 				//bosse
-      	 		} 
-				else
-				{
-					requete.data.val=25; 				//virage
-      	 		} 
-			break;
+					if (capteur == 0x5602 || capteur == 0x5603 || capteur == 0x5605 || capteur == 0x5601  )
+					{
+						requete.data.val=60;				// ligne droite 
+					}
+					else if (capteur == 0x5604)
+					{
+						requete.data.val=50; 				//bosse
+      	 			} 
+					else
+					{
+						requete.data.val=25; 				//virage
+      	 			} 
+				break;
 			
-			case 0x0003 :		// pour piste rouge
-				if (capteur == 0x5602 || capteur == 0x5603 || capteur == 0x5604 || capteur == 0x5605)
-				{
-					requete.data.val=60;				// ligne droite 
-				}
-				else if (capteur == 0x6aff)
-				{
-					requete.data.val=45; 				//bosse
-      	 		} 
-				else if (capteur == 0x5601)
-				{
-					requete.data.val=35;				// petit virage entrée 
-				}
-				else if (capteur == 0x4203)
-				{
-					requete.data.val=10;				//  virage après saut 
-				}
-				else
-				{
-					requete.data.val=25; 				//virage
-      	 		} 
-			break;
-			
-			case 0x0004 :		// pour piste noir
-				if ( capteur == 0x5603 || capteur == 0x5605)
+				case 0x0003 :		// pour piste rouge
+					if (capteur == 0x5602 || capteur == 0x5603 || capteur == 0x5604 || capteur == 0x5605)
 					{
-						requete.data.val=50;				// ligne droite 
+						requete.data.val=60;				// ligne droite 
 					}
-					else if (capteur == 0x6afd || capteur == 0x6afe)
+					else if (capteur == 0x6aff)
 					{
-						requete.data.val=20; 				//bosse
+						requete.data.val=45; 				//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 
@@ -439,11 +451,42 @@
 					}
 					else
 					{
-						requete.data.val=15; 				//virage
+						requete.data.val=25; 				//virage
       	 			} 
-			break;
-			
+				break;
+				
+				case 0x0004 :		// pour piste noir
+					if ( capteur == 0x5603 || capteur == 0x5605)
+						{
+							requete.data.val=50;				// ligne droite 
+						}
+						else if (capteur == 0x6afd || capteur == 0x6afe)
+						{
+							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 
+						}
+						else
+						{
+							requete.data.val=15; 				//virage
+      	 				} 
+				break;
+			}
 		}
+		else
+		{
+			requete.data.val=0;
+		}
 		
 //		requete.data.val=25;			//vitesse constante
 
@@ -469,6 +512,7 @@
         
 		
 		sta_tsk(ID_piste);
+		sta_tsk(ID_even);
         sta_tsk(ID_tourelle);
         sta_tsk(ID_dist);
         sta_tsk(ID_roue);
@@ -479,7 +523,9 @@
     while(1)
     {
                
-           dly_tsk(800);     
+           dly_tsk(800); 
+		   LED_V =1;
+		       
                  
     }
 }
Index: branch/maincent/tp_info6/Emb_App/conf_noyau.cfg
===================================================================
--- branch/maincent/tp_info6/Emb_App/conf_noyau.cfg	(revision 377)
+++ branch/maincent/tp_info6/Emb_App/conf_noyau.cfg	(revision 378)
@@ -56,6 +56,17 @@
 
 
 task[]{
+	entry_address	= evenement();
+	name	= ID_even;
+	stack_size	= 512;
+	stack_section	= stack;
+	priority	= 5;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
+
+
+task[]{
 	entry_address	= tourelle();
 	name	= ID_tourelle;
 	stack_size	= 512;
