Index: branch/toribio/Emb_App/SessionM32C_E8a_system.ini
===================================================================
--- branch/toribio/Emb_App/SessionM32C_E8a_system.ini	(revision 227)
+++ branch/toribio/Emb_App/SessionM32C_E8a_system.ini	(revision 228)
@@ -25,4 +25,4 @@
 [Target]
 M32C E8a SYSTEM=Renesas Communications
 [USER_DATA]
-RESET=ff0016
+RESET=ff001e
Index: branch/toribio/Emb_App/programme_principal_etud.c
===================================================================
--- branch/toribio/Emb_App/programme_principal_etud.c	(revision 227)
+++ branch/toribio/Emb_App/programme_principal_etud.c	(revision 228)
@@ -125,8 +125,13 @@
 short alpha;
 short distance;
 short angleR;
-short vitesse;
+/*short vitesse;*/
+short virage=0;
+short numcapt=0;
+short sauter=0;
+short trouV=0;
 
+
 void asserv0(){
 	while(1){
 	short k=1; //Gain du correcteur P
@@ -152,7 +157,8 @@
 	
 }
 
-void dist(){while(1){
+void dist(){
+	while(1){
 	//lecture de la distance du mur
 	CanFrame req;
 	UINT flag;
@@ -168,53 +174,116 @@
 	
 }
 
-void roue(){while(1){
+void roue(){
+	while(1){
 	short k=2; //Gain du correcteur P
 //lecture de la position de la roue
 	CanFrame req,comm;
 	UINT flag;
-/*	
-	req.data.id='D';
-	req.data.rtr=1;
-	periph[ADDR('D')].ev=0x01;
-	snd_dtq(CanTx, req.msg);
-	//Attente de la réponse
-	wai_flg (ev_periph, 0x01, TWF_ANDW, &flag);
-	angleR=periph[ADDR('D')].val;
-*/
+if (sauter==0){
 	//Commande de l'angle de roue
 	comm.data.id='D';
 	comm.data.rtr=0; //indique une écriture
-	if (distance<1000){
-	comm.data.val=k*(distance-700);}
+	if (distance>1000);
+	else comm.data.val=k*(distance-700);
 	snd_dtq(CanTx, comm.msg);
 	dly_tsk(5);	
 }
+ 
+ else if (sauter==2){
+	//Commande de l'angle de roue
+	comm.data.id='D';
+	comm.data.rtr=0; //indique une écriture
+	if (distance>1000);
+	else comm.data.val=k*(distance-610);//on tourne un peu plus pour le saut
+	snd_dtq(CanTx, comm.msg);
+	dly_tsk(5);	
 }
-void demare(){
+  else if (sauter==3 ){
+	//Commande de l'angle de roue
+	comm.data.id='D';
+	comm.data.rtr=0; //indique une écriture
+	if (distance>1000);
+	else comm.data.val=k*(distance-700);
+	snd_dtq(CanTx, comm.msg);
+	dly_tsk(5);	
+}
+ else if (sauter==1 ){
+	//Commande de l'angle de roue
+	comm.data.id='D';
+	comm.data.rtr=0; //indique une écriture
+	if (distance>1000);
+	else comm.data.val=0;
+	snd_dtq(CanTx, comm.msg);
+	dly_tsk(5);	
+}}
+
+
+
+
+}
+
+void regvitesse(){
 	
 	CanFrame requete;
 
-	dly_tsk(6000);
-	requete.data.id='V';
-	requete.data.rtr=0; 
-	requete.data.val=35;
-	snd_dtq(CanTx, requete.msg);
-	dly_tsk(5);
+	dly_tsk(5000);
+
 	
-/*	while(1)
+	while(1)
 	{requete.data.id='V';
-	requete.data.rtr=0; 
-	requete.data.val=35;
+	requete.data.rtr=0;
+	if (sauter==1){   //augmentation de la vitesse pour sauter
+	requete.data.val=45;}
+	else if (sauter==2){	  //diminution vitesse pour preparer saut
+	requete.data.val=25;}
+	else if (sauter==3){	  //diminution vitesse pour après saut
+	requete.data.val=15;}
+	else if (sauter==0){requete.data.val=35;} //pas de saut
 	snd_dtq(CanTx, requete.msg);
 	dly_tsk(5);}
-	*/
+	
 		
 
 }
 
+void zone(){
+	while(1){
+	//lecture de la zone
+	CanFrame req;
+	UINT flag;
+	
+	req.data.id='C';
+	req.data.rtr=1;
+	periph[ADDR('C')].ev=0x03;
+	snd_dtq(CanTx, req.msg);
+	//Attente de la réponse
+	wai_flg (ev_periph, 0x03, TWF_ANDW, &flag);
+	virage=periph[ADDR('C')].val;
+	numcapt=virage & 0x00ff;
+	virage=virage & 0xff00;
+	dly_tsk(5);}
+	
+}
 
+void saut(){
+	while(1){
+    if (numcapt==2 && virage==20992){
+		sauter=2; //préparation au saut
+	}	
+	else if (numcapt==3 && virage!=16896)
+	{	sauter=1; //Renvoie 1 si c'est la zone du saut
+		}
+	else if (numcapt==3 && virage==16896){
+		sauter=3;} // virage apres saut
+		
+	else if (numcapt==4 && virage==22016){
+		sauter=0;} // retour à la regulation normal
+	dly_tsk(5);}
+	
+}
 
+
 
 void main()
 {
@@ -231,13 +300,13 @@
 	sta_cyc(ID_acqui);
 	sta_tsk(ID_periph_rx);
 
-	sta_tsk(ID_demare);
+	sta_tsk(ID_regvitesse);
 	sta_tsk(ID_asserv0);
 	sta_tsk(ID_dist);
 	sta_tsk(ID_roue);
-		
+	sta_tsk(ID_zone);
+	sta_tsk(ID_saut);
 
-
 	
     while(1)
     {
Index: branch/toribio/Emb_App/conf_noyau.cfg
===================================================================
--- branch/toribio/Emb_App/conf_noyau.cfg	(revision 227)
+++ branch/toribio/Emb_App/conf_noyau.cfg	(revision 228)
@@ -49,7 +49,7 @@
 	name	= ID_asserv0;
 	stack_size	= 512;
 	stack_section	= stack;
-	priority	= 5;
+	priority	= 6;
 	initial_start	= OFF;
 	exinf	= 0x0;
 	
@@ -67,11 +67,22 @@
 };
 
 task[]{
+	entry_address	= zone();
+	name	= ID_zone;
+	stack_size	= 512;
+	stack_section	= stack;
+	priority	= 6;
+	initial_start	= OFF;
+	exinf	= 0x0;
+	
+};
+
+task[]{
 	entry_address	= roue();
 	name	= ID_roue;
 	stack_size	= 512;
 	stack_section	= stack;
-	priority	= 7;
+	priority	= 6;
 	initial_start	= OFF;
 	exinf	= 0x0;
 	
@@ -78,18 +89,32 @@
 };
 
 task[]{
-	entry_address	= demare();
-	name	= ID_demare;
+	entry_address	= regvitesse();
+	name	= ID_regvitesse;
 	stack_size	= 512;
 	stack_section	= stack;
-	priority	= 7;
+	priority	= 6;
 	initial_start	= OFF;
 	exinf	= 0x0;
 	
 };
 
+task[]{
+	entry_address	= saut();
+	name	= ID_saut;
+	stack_size	= 512;
+	stack_section	= stack;
+	priority	= 6;
+	initial_start	= OFF;
+	exinf	= 0x0;
+	
+};
 
+
 	
+
+
+	
 task[]{
 	entry_address	= periph_tx();
 	name	= ID_periph_tx;
