Index: branch/diagne/Emb_App/SessionM32C_E8a_system.ini
===================================================================
--- branch/diagne/Emb_App/SessionM32C_E8a_system.ini	(revision 447)
+++ branch/diagne/Emb_App/SessionM32C_E8a_system.ini	(revision 448)
@@ -25,4 +25,4 @@
 [Target]
 M32C E8a SYSTEM=Renesas Communications
 [USER_DATA]
-RESET=ff0014
+RESET=ff0046
Index: branch/diagne/Emb_App/programme_principal_etud.c
===================================================================
--- branch/diagne/Emb_App/programme_principal_etud.c	(revision 447)
+++ branch/diagne/Emb_App/programme_principal_etud.c	(revision 448)
@@ -129,6 +129,7 @@
 short new_distance;
 short capt;
 short piste;
+short feu;
 
 
 void Asserv0(){	
@@ -174,7 +175,7 @@
 	}
 }
 
-void num_piste() //permet de savoir sur quel piste on est
+void num_piste() //permet de savoir sur quel piste on est et de gerer les feux tricolores
 {
 	CanFrame req;
 	UINT flag;
@@ -186,9 +187,33 @@
 		snd_dtq(CanTx,req.msg);
 		wai_flg(ev_periph, 0x04, TWF_ANDW,&flag);
 		piste=(periph[ADDR('M')].val)&0x00ff;
+		feu=(periph[ADDR('M')].val)&0x8000;
+		switch(piste)
+		{
+			     case 0x0004: lcd_str("Piste Noire");
+                 break;
+                 case 0x0003: lcd_str("Piste Rouge");
+                 break;
+                 case 0x0002: lcd_str("Piste Bleue");
+                 break;
+                 case 0x0001: lcd_str("Piste Verte\n");
+                 break;
+        }
+  	  	
+	 	
 		dly_tsk(20);
 	}
 }
+
+//demmarge selon couleur feu
+void demarrer(){
+	while(1){
+		if(feu==0x8000){
+			sta_tsk(ID_Avancer);
+		}
+		dly_tsk(50);
+	}
+}
 		
 
 void regulation_roue(){
@@ -241,9 +266,9 @@
 				else 
 					{
 						if (distance >1000)//On compare la distance mesurée par le telemtetre		
-							new_distance=680;
+							new_distance=710;
 						else new_distance=distance;
-						comm.data.val=1*(new_distance-680); //	On la garde bien au milieu de la piste	
+						comm.data.val=1*(new_distance-710); //	On la garde bien au milieu de la piste	
 						snd_dtq(CanTx,comm.msg);
 					}				
 					dly_tsk(10);
@@ -252,8 +277,6 @@
 }
 }
 
-
-	
 void Avancer(){
 	dly_tsk(6000);
 	while(1)
@@ -261,6 +284,17 @@
 			req.data.id='V';
 			req.data.rtr=0;
 			
+			//Arrêt force lorsque le bouton poussoir est activé
+	//		if(Bp_G==1){
+	//		req.data.val=0;
+	//		snd_dtq(CanTx, req.msg);
+	//		}
+			//Arret force lorsque le feu n'est pas vert
+		//	 if (feu==0){
+		//	req.data.val=0;
+		//	snd_dtq(CanTx, req.msg);
+		//	}
+			
 			switch (piste)
 			
 			{
@@ -270,8 +304,8 @@
 				break;
 				
 				 case  0x002:
-				 req.data.val=19;
-				 snd_dtq(CanTx,req.msg);
+				    req.data.val=19;
+				    snd_dtq(CanTx,req.msg);
 				 break;
 				 
 				case 0x0003:
@@ -297,37 +331,8 @@
 		
 	}	
 } 
+//}
 
-void clavier()	
-{
-	char sequence[10]={0};
-	short code_touche;
-    int index = 1;
-        while(1)	
-        {
-         	vrcv_dtq(QdmTouche, &code_touche);
-            lcd_putc(code_touche);
-                while(code_touche != '*')
-           		{                
-                  	if(code_touche == '#')
-                    {
-                     	sequence[0] = code_touche;	
-                    }	
-                    else
-					{
-                    	sequence[index] = code_touche;
-                        index++;
-                     }
-                     vrcv_dtq(QdmTouche, &code_touche);
-                     lcd_putc(code_touche);
-                }
-        sequence[index] = '*';
-        //consigne_tour = decode_int(sequence);
-        index=1;
-        dly_tsk(200);
-        }
-}
-	
 
 	
 void main()
@@ -355,6 +360,7 @@
 	sta_tsk(ID_roue);
 	sta_tsk(ID_capteur);
 	sta_tsk(ID_piste);
+	sta_tsk(ID_demarrer);
 	
 //	sta_tsk(ID_roue_rouge);
 	
Index: branch/diagne/Emb_App/conf_noyau.cfg
===================================================================
--- branch/diagne/Emb_App/conf_noyau.cfg	(revision 447)
+++ branch/diagne/Emb_App/conf_noyau.cfg	(revision 448)
@@ -73,6 +73,15 @@
 };
 
 task[]{
+	entry_address	= demarrer();
+	name	= ID_demarrer;
+	stack_size	= 256;
+	stack_section	= stack;
+	priority	= 7;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
+task[]{
 	entry_address	= Avancer();
 	name	= ID_Avancer;
 	stack_size	= 256;
