Index: branch/daval/Emb_App/SessionM32C_E8a_system.ini
===================================================================
--- branch/daval/Emb_App/SessionM32C_E8a_system.ini	(revision 182)
+++ branch/daval/Emb_App/SessionM32C_E8a_system.ini	(revision 183)
@@ -25,4 +25,4 @@
 [Target]
 M32C E8a SYSTEM=Renesas Communications
 [USER_DATA]
-RESET=ff0022
+RESET=ff002a
Index: branch/daval/Emb_App/programme_principal_etud.c
===================================================================
--- branch/daval/Emb_App/programme_principal_etud.c	(revision 182)
+++ branch/daval/Emb_App/programme_principal_etud.c	(revision 183)
@@ -126,22 +126,18 @@
 int k=1; 				//gain du correcteur
 int valeur = 0 ; 		//valeur envoyee
 
+int consigne_roue=700;
+int C=1;
+int orientation_roue =0;
 CanFrame vitesse;
 CanFrame requete;
 
+int distance_mesure=0;
 
-void avance()
-{
-		vitesse.data.id='V';			//Envoi d'une commande
-		vitesse.data.rtr=0; 			//Indique une ecriture
-		vitesse.data.val=15;
-		snd_dtq (CanTx,vitesse.msg);
-	
 
-}
 void asservissement()
 {
-	CanFrame comm;
+	CanFrame commande;
 	CanFrame requete;
 	CanFrame reponse;
 	 
@@ -157,15 +153,67 @@
 	    angle = periph[ADDR('R')].val; 	// Contient la valeur de retour du simulateur.
 
     	   
-		comm.data.id='T';			//Envoi d'une commande
-		comm.data.rtr=0; 			//Indique une ecriture
+		commande.data.id='T';			//Envoi d'une commande
+		commande.data.rtr=0; 			//Indique une ecriture
 		valeur=k*(consigne-angle); 
-		comm.data.val=valeur;
-		snd_dtq (CanTx,comm.msg); 	//Envoi modif
-		dly_tsk(2);
+		commande.data.val=valeur;
+		snd_dtq (CanTx,commande.msg); 	//Envoi modif
+		dly_tsk(5);
 	}
 }
 
+void avance()
+{
+		vitesse.data.id='V';			//Envoi d'une commande en vitesse
+		vitesse.data.rtr=0; 			//Indique une ecriture
+		vitesse.data.val=25;
+		snd_dtq (CanTx,vitesse.msg);
+		dly_tsk(15);
+
+}
+void distance_bord()
+{
+	CanFrame requete_dist;
+    UINT flag;
+	
+    while(1)
+	{
+		
+        requete_dist.data.id= 'U' ;
+        requete_dist.data.rtr= 1 ;							//requete lecture
+        periph[ADDR('U')].ev= 0x02 ;
+        snd_dtq(CanTx, requete_dist.msg);
+        wai_flg (ev_periph, 0x02, TWF_ANDW, &flag);			//Attente lecture
+        distance_mesure=periph[ADDR('U')].val;
+		dly_tsk(15);
+		
+	}
+}
+
+
+void angle_roue()
+{
+        CanFrame requete,commande;
+        UINT flag;
+		
+   while (1) 
+   {
+	   
+        requete.data.id='D';			
+        requete.data.rtr=1;
+        periph[ADDR('D')].ev=0x01;
+        snd_dtq(CanTx, requete.msg);
+        wai_flg (ev_periph, 0x01, TWF_ANDW, &flag);
+        orientation_roue=periph[ADDR('D')].val;
+        commande.data.id='D';
+        commande.data.rtr=0; 
+        commande.data.val= C*(distance_mesure-consigne_roue);
+        snd_dtq(CanTx, commande.msg);
+		dly_tsk(5);
+	}
+}
+
+
 
 void main()
 
@@ -184,6 +232,8 @@
 	sta_cyc(ID_acqui);
 	sta_tsk(ID_periph_rx); //Si on utilise cette tâche on ne doit plus utiliser canRX
 	sta_tsk(ID_asservissement);
+	sta_tsk(ID_distance_bord);
+	sta_tsk(ID_angle_roue);
 	sta_tsk(ID_avance);
 	while(1);
 	
Index: branch/daval/Emb_App/conf_noyau.cfg
===================================================================
--- branch/daval/Emb_App/conf_noyau.cfg	(revision 182)
+++ branch/daval/Emb_App/conf_noyau.cfg	(revision 183)
@@ -75,6 +75,16 @@
 	name	= ID_avance;
 	stack_size	= 256;
 	stack_section	= stack;
+	priority	= 5;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
+
+task[]{
+	entry_address	= distance_bord();
+	name	= ID_distance_bord;
+	stack_size	= 256;
+	stack_section	= stack;
 	priority	= 4;
 	initial_start	= OFF;
 	exinf	= 0x0;
@@ -81,16 +91,15 @@
 };
 
 task[]{
-	entry_address	= oriente_roue();
-	name	= ID_oriente_roue;
+	entry_address	= angle_roue();
+	name	= ID_angle_roue;
 	stack_size	= 256;
 	stack_section	= stack;
-	priority	= 5;
+	priority	= 4;
 	initial_start	= OFF;
 	exinf	= 0x0;
 };
 
-
 flag[]{
 	name	= ev_bus_fin_tr;
 	initial_pattern	= 0x0000;
