Index: branch/lepogam/Emb_App/SessionM32C_E8a_system.ini
===================================================================
--- branch/lepogam/Emb_App/SessionM32C_E8a_system.ini	(revision 58)
+++ branch/lepogam/Emb_App/SessionM32C_E8a_system.ini	(revision 59)
@@ -25,4 +25,4 @@
 [Target]
 M32C E8a SYSTEM=Renesas Communications
 [USER_DATA]
-RESET=ff0022
+RESET=ff002a
Index: branch/lepogam/Emb_App/programme_principal_etud.c
===================================================================
--- branch/lepogam/Emb_App/programme_principal_etud.c	(revision 58)
+++ branch/lepogam/Emb_App/programme_principal_etud.c	(revision 59)
@@ -121,13 +121,17 @@
 //				correspondant au nom du véhicule si le nom se termine par '*'
 
 unsigned int alpha=0;
-unsigned int theta=0;
+unsigned int distance=0;
+unsigned int vitesse=0;
+unsigned int distance_ref=722;
 unsigned int consigne=450;
-unsigned int consigne_vitesse=30;
-unsigned int valeur=0;
-int k=1;
+unsigned int consigne_vitesse=40;
+unsigned int valeur_t=0;
+unsigned int valeur_r=0;
+int k1=1;
+int k2=2;
 
-void asserv0(){
+void asserv_tourelle(){
 	
 	
 	//'T'/84/0x54 : Commande en vitesse de la tourelle portant le telemetre (en 1/10 de degre/secondes).
@@ -142,53 +146,68 @@
 		demande.data.rtr=1;
 	
 		snd_dtq (CanTx,demande.msg); // Interrogation du peripherique
-		rcv_dtq (CanRx,&reponse.msg); // Attente de la reponse
-		alpha=reponse.data.val; // contient la valeur de retour du simulateur.
+		alpha=periph[ADDR('R')].val; // contient la valeur de retour du simulateur.
 	
 	
 		comm.data.id='T'; 
 		comm.data.rtr=0; 
-		comm.data.val=valeur;
+		comm.data.val=valeur_t;
 		snd_dtq (CanTx,comm.msg);
-		dly_tsk(300);
+		dly_tsk(100);
 		}
 	}
 
 void asserv1(){
-	if(alpha!=consigne) valeur=k*(consigne-alpha);
+	if(alpha!=consigne) valeur_t=k1*(consigne-alpha);
 	}
-void asserv_vitesse(){
-	/*
+
+void asserv_roue(){
+	
 	//'U'/85/0x55 : Distance mesuree par le telemetre (1/100 de metre)
 	//'D'/68/0x44 : Commande de l'angle des roues directrices (en 1/10 de degre).
-	//'V'/86/0x56 : Commande en vitesse des roues motrices du vehicule (en radian /secondes).
+	
 	CanFrame comm;
 	CanFrame demande;
 	CanFrame reponse;
 	while(1){
 		
-		comm.data.id='D'; //envoi consigne vitesse
-		comm.data.rtr=0; 
-		comm.data.val=consigne_vitesse;
-		snd_dtq (CanTx,comm.msg);
-		
-	
 		demande.data.id='U'; 
 		demande.data.rtr=1;
 	
 		snd_dtq (CanTx,demande.msg); // Interrogation du peripherique
-		rcv_dtq (CanRx,&reponse.msg); // Attente de la reponse
-		theta=reponse.data.val; // contient la valeur de retour du simulateur.
+		distance=periph[ADDR('U')].val; // contient la valeur de retour du simulateur.
 	
 	
 		comm.data.id='D'; 
 		comm.data.rtr=0; 
-		comm.data.val=valeur;
+		comm.data.val=valeur_r;
 		snd_dtq (CanTx,comm.msg);
 		}
-	*/
+
 	}
+void asserv2(){
+	if(distance!=distance_ref) valeur_r=-k2*(distance_ref-distance);
+	}
 
+void asserv_vitesse(){
+	
+	//'V'/86/0x56 : Commande en vitesse des roues motrices du vehicule (en radian /secondes).
+	CanFrame comm;
+	CanFrame demande;
+	CanFrame reponse;
+	while(1){
+		
+		dly_tsk(400);
+		comm.data.id='V'; //envoi consigne vitesse
+		comm.data.rtr=0; 
+		comm.data.val=vitesse;
+		snd_dtq (CanTx,comm.msg);
+	
+		}
+	}
+void asserv3(){
+	if(vitesse!=consigne_vitesse) vitesse++;
+	}
 
 void main()
 {
@@ -202,9 +221,15 @@
 	capture_init();
 
 	sta_cyc(ID_acqui);
-//	sta_tsk(ID_periph_rx);
-	sta_tsk(ID_asserv0);
-	sta_cyc(ID_asserv1);	
+	sta_tsk(ID_periph_rx);
+	
+	sta_tsk(ID_asserv_tourelle);
+	sta_tsk(ID_asserv_roue);
+	sta_tsk(ID_asserv_vitesse);
+	sta_cyc(ID_asserv1);
+	sta_cyc(ID_asserv2);
+	sta_cyc(ID_asserv3);
+		
 	
 
     while(1)
Index: branch/lepogam/Emb_App/conf_noyau.cfg
===================================================================
--- branch/lepogam/Emb_App/conf_noyau.cfg	(revision 58)
+++ branch/lepogam/Emb_App/conf_noyau.cfg	(revision 59)
@@ -62,10 +62,19 @@
 	exinf	= 0x0;
 };
 task[]{
-	entry_address	= asserv0();
-	name	= ID_asserv0;
+	entry_address	= asserv_tourelle();
+	name	= ID_asserv_tourelle;
 	stack_size	= 256;
 	stack_section	= stack;
+	priority	= 3;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
+task[]{
+	entry_address	= asserv_roue();
+	name	= ID_asserv_roue;
+	stack_size	= 256;
+	stack_section	= stack;
 	priority	= 4;
 	initial_start	= OFF;
 	exinf	= 0x0;
@@ -75,11 +84,10 @@
 	name	= ID_asserv_vitesse;
 	stack_size	= 256;
 	stack_section	= stack;
-	priority	= 4;
+	priority	= 5;
 	initial_start	= OFF;
 	exinf	= 0x0;
 };
-
 flag[]{
 	name	= ev_bus_fin_tr;
 	initial_pattern	= 0x0000;
@@ -135,6 +143,24 @@
 	interval_counter	= 0x64;
 	phs_counter	= 0x0;
 };
+cyclic_hand[]{
+	entry_address	= asserv2();
+	name	= ID_asserv2;
+	exinf	= 0x0;
+	start	= OFF;
+	phsatr	= OFF;
+	interval_counter	= 0x64;
+	phs_counter	= 0x0;
+};
+cyclic_hand[]{
+	entry_address	= asserv3();
+	name	= ID_asserv3;
+	exinf	= 0x0;
+	start	= OFF;
+	phsatr	= OFF;
+	interval_counter	= 0x64;
+	phs_counter	= 0x0;
+};
 
 
 vdataqueue[]{
