Index: branch/font/Emb_App/SessionM32C_E8a_system.ini
===================================================================
--- branch/font/Emb_App/SessionM32C_E8a_system.ini	(revision 220)
+++ branch/font/Emb_App/SessionM32C_E8a_system.ini	(revision 221)
@@ -25,4 +25,4 @@
 [Target]
 M32C E8a SYSTEM=Renesas Communications
 [USER_DATA]
-RESET=ff0020
+RESET=ff0022
Index: branch/font/Emb_App/programme_principal_etud.c
===================================================================
--- branch/font/Emb_App/programme_principal_etud.c	(revision 220)
+++ branch/font/Emb_App/programme_principal_etud.c	(revision 221)
@@ -120,15 +120,20 @@
 //'I'/73/Ox49 : Définition du nom du véhicule. Doit débuter par le caractère '#' et entraine le chargement de la configuration de piste
 //				correspondant au nom du véhicule si le nom se termine par '*'
 
-int alpha;
-int distance;
+const int distance_bord = 700;		//distance du bord souhaitée
+const int angle_tourelle = 450;		//angle tourelle souhaité
+int alpha;							//angle tourelle
+int distance;						//distance du bord mesurée
 int distance1;
-int vitesse = 72;
-int virage = 25;
-int angle = 500;
+int vitesse = 65;					//vitesse souhaitée
+int vitesse_virage = 25;			//vitesse pendant un virage souhaitée
+int angle_roue;				
 int kroue = 1;
 int k = 1;
-int couleur_capt;
+int num_piste;
+int num_piste1;
+int capteur;
+int couleur_capteur;
 
 void lecture_telemetre(){
 	CanFrame reponsed, requeted;
@@ -150,6 +155,7 @@
 	}
 }
 
+//Asservissement des roues permettant de placer la voiture ou on souhaite sur la piste
 void asservissement_roue(){
 	CanFrame comm, requete;
 	UINT flag;
@@ -159,17 +165,17 @@
 		comm.data.rtr = 1;
 		periph[ADDR('D')].ev = 0x03;
 		snd_dtq(CanTx, requete.msg); 
-		wai_flg(ev_periph, 0x03, TWF_ANDW, &flag);	//Attente de lecture
+		wai_flg(ev_periph, 0x03, TWF_ANDW, &flag);	//Attente de lecture de l'angle des roues
 		
 		comm.data.rtr = 0;
-		angle = kroue * (distance - 700);
-		comm.data.val = angle;
+		angle_roue = kroue * (distance - distance_bord);	//Asservissement de l'angle
+		comm.data.val = angle_roue;
 		snd_dtq(CanTx, comm.msg);
 		dly_tsk(5);		
 	}
-	
 }
-// test avec fonction periph
+
+//asservissmen tourelle
 void tsk_asserv1(){
 	UINT flag;
 	CanFrame comm, reponse, requete, m;
@@ -177,7 +183,7 @@
 	while(1){
 		//Lecture de la position
 		requete.data.id = 'R';
-		requete.data.rtr = 1;	//requete de lecture
+		requete.data.rtr = 1;	
 		periph[ADDR('R')].ev = 0x01;
 		snd_dtq(CanTx, requete.msg);
 		wai_flg(ev_periph, 0x01, TWF_ANDW, &flag); //Attente de la réponse
@@ -186,26 +192,64 @@
 		//asservissement en vitesse de rotation de la tourelle
 		comm.data.id = 'T';
 		comm.data.rtr = 0;
-		comm.data.val = k * (450 - alpha);
+		comm.data.val = k * (angle_tourelle - alpha);
 		snd_dtq(CanTx, comm.msg);
 		dly_tsk(5);		
 	}
 }
 
+void lecture_piste(){
+	CanFrame requete;
+	UINT flag;
+	
+	requete.data.id = 'M';
+	requete.data.rtr = 1;	
+	periph[ADDR('M')].ev = 0x04;
+	snd_dtq(CanTx, requete.msg);
+	wai_flg(ev_periph, 0x04, TWF_ANDW, &flag); //Attente de la réponse
+	num_piste = periph[ADDR('M')].val;	//acquisition numéro piste
+}
+
+void lecture_capteur(){
+	CanFrame requete;
+	UINT flag;
+	
+	while(1){
+		//Lecture de la zone
+		requete.data.id = 'C';
+		requete.data.rtr = 1;	
+		periph[ADDR('C')].ev = 0x05;
+		snd_dtq(CanTx, requete.msg);
+		wai_flg(ev_periph, 0x05, TWF_ANDW, &flag); //Attente de la réponse
+		capteur = periph[ADDR('C')].val;	//acquisition du dernier capteur franchi
+		couleur_capteur = capteur >> 8;
+		dly_tsk(5);
+	}
+}
+
+void gestion_saut (){
+
+	
+}
+
+
+//Fonction de demarrage de la voiture
 void demarrage(){
 	CanFrame comm, requete;
+	UINT flag;
 
-	dly_tsk(4000);
+	dly_tsk(4000);			//Attente avant départ
+		
 	comm.data.id = 'V';
 	comm.data.rtr = 0;
-	comm.data.val = vitesse;
+	comm.data.val = vitesse;	//Démarrage
 	snd_dtq(CanTx, comm.msg);
 	
-	while(1){
+		while(1){
 		comm.data.id = 'V';
 		comm.data.rtr = 0;
-		if(angle > 40 || angle < -40){
-			comm.data.val = virage;
+		if(angle_roue > 40 || angle_roue < -40){	//ralentissement de la voiture si angle demandé trop grand
+			comm.data.val = vitesse_virage;
 			snd_dtq(CanTx, comm.msg);
 		}	
 		else {
@@ -212,7 +256,8 @@
 			comm.data.val = vitesse;
 			snd_dtq(CanTx, comm.msg);
 		}
-	}	
+		dly_tsk(3);	
+	}
 }
 
 
@@ -228,6 +273,8 @@
 	capture_init();
 
 	sta_tsk(ID_periph_rx);
+	sta_tsk(ID_lecture_piste);
+	sta_tsk(ID_lecture_capteur);
 	sta_tsk(ID_demarrage);
 	sta_cyc(ID_acqui);
 	sta_tsk(ID_tsk_asserv1);
Index: branch/font/Emb_App/conf_noyau.cfg
===================================================================
--- branch/font/Emb_App/conf_noyau.cfg	(revision 220)
+++ branch/font/Emb_App/conf_noyau.cfg	(revision 221)
@@ -93,6 +93,36 @@
 };
 
 task[]{
+	entry_address	= gestion_saut();
+	name	= ID_gestion_saut;
+	stack_size	= 512;
+	stack_section	= stack;
+	priority	= 4;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
+
+task[]{
+	entry_address	= lecture_piste();
+	name	= ID_lecture_piste;
+	stack_size	= 512;
+	stack_section	= stack;
+	priority	= 4;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
+
+task[]{
+	entry_address	= lecture_capteur();
+	name	= ID_lecture_capteur;
+	stack_size	= 512;
+	stack_section	= stack;
+	priority	= 4;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
+
+task[]{
 	entry_address	= demarrage();
 	name	= ID_demarrage;
 	stack_size	= 512;
