Index: branch/dupriet/Emb_App/SessionM32C_E8a_system.ini
===================================================================
--- branch/dupriet/Emb_App/SessionM32C_E8a_system.ini	(revision 538)
+++ branch/dupriet/Emb_App/SessionM32C_E8a_system.ini	(revision 539)
@@ -25,4 +25,4 @@
 [Target]
 M32C E8a SYSTEM=Renesas Communications
 [USER_DATA]
-RESET=ff0132
+RESET=ff016e
Index: branch/dupriet/Emb_App/programme_principal_etud.c
===================================================================
--- branch/dupriet/Emb_App/programme_principal_etud.c	(revision 538)
+++ branch/dupriet/Emb_App/programme_principal_etud.c	(revision 539)
@@ -136,6 +136,15 @@
 int temps;
 unsigned short STOP=0;
 
+unsigned int piste;
+unsigned int num_piste=0;
+unsigned int couleur_feu=0;
+unsigned int feu_vert=0;
+
+unsigned int ultra=0;
+
+
+
 void capteur_couleur(){
 	CanFrame req;
 	unsigned int detect_change=0;
@@ -187,21 +196,46 @@
 				break;
 			
 			case 0x7610:		//début saut piste rouge	//vert petit 16
-				celerite=48;
-				roue=0;
+				if(num_piste==1024){
+				celerite=47;
+				roue=0;}
 				break;
 			case 0x7611:	//vert petit 17
+				if(num_piste==1024){
 				celerite=0;
 				
 				roue=1;dly_tsk(1000);
 				celerite=10;
 				dly_tsk(800);
-				celerite=20;
+				celerite=20;}
 				break;			//fin saut piste rouge
 			
 			case 0x7620:
 				norme=150;
 				break;
+			//piste noire
+			case 0x7613:	//vert 19 petit
+				roue=0;
+				break;
+			case 0x7614:	//vert 20 petit
+				roue=1;celerite=10;
+				norme=400;
+				break;
+			case 0x7615:	//vert 21 petit
+				roue=1;celerite=10;
+				norme=250;
+				break;
+			case 0x7616:	//vert 22 petit
+				roue=1;celerite=10;
+				norme=190;
+				break;
+			case 0x7617: //v23
+				norme=150;
+				break;
+			case 0x7618: //v24
+				norme=130;
+				break;
+				
 		}
 	dly_tsk(5);}
 }
@@ -259,7 +293,10 @@
 }
 
 void emergency(){
-	if(Bp_G){STOP++;}
+	while(1){
+		if(Bp_G){STOP++;}
+		dly_tsk(20);
+	}
 }
 
 void asserv_tourelle(){
@@ -285,6 +322,24 @@
 		}	
 }
 
+void lecteur_M(){
+	CanFrame req;
+	UINT flag;
+	
+	while(1){
+		req.data.id='M';
+		req.data.rtr=1;
+		periph[ADDR('M')].ev=0x04;
+		snd_dtq(CanTx, req.msg);
+		wai_flg(ev_periph, 0x04, TWF_ANDW, &flag);
+		piste=periph[ADDR('M')].val;
+		
+		num_piste=piste<<8;
+		couleur_feu=piste>>15;
+		dly_tsk(100);
+	}
+}
+
 void afficheur(){
 		CanFrame req;
 		UINT flag;
@@ -297,10 +352,38 @@
 			temps = periph[ADDR('H')].val;
 			sprintf(c,"%d",temps);
 			lcd_str(c);
+			lcd_str(" cs");
+			lcd_com(0xC0);
+			if(num_piste==256){lcd_str("piste verte");}
+			if(num_piste==512){lcd_str("piste bleue");}
+			if(num_piste==1024){lcd_str("piste rouge");}
+			if(num_piste==2048){lcd_str("piste noire");}
 			dly_tsk(100);
 			lcd_init();
 		}
 }
+
+void fonction_STOP(){
+	unsigned int z;
+	CanFrame comm;
+	CanFrame req;
+	UINT flag;
+	
+	while (1){		
+		req.data.id='D';
+		req.data.rtr=1;
+		periph[ADDR('D')].ev=0x01;
+		snd_dtq(CanTx,req.msg);
+		wai_flg(ev_periph,0x01,TWF_ANDW,&flag);
+		z=periph[ADDR('D')].val;
+		
+		comm.data.id='V';
+		comm.data.rtr=0;
+		comm.data.val=0;
+		snd_dtq(CanTx,comm.msg);
+		dly_tsk(1000);		//libere le processeur
+	}
+}
 
 void main()
 {
@@ -314,7 +397,8 @@
     clavier_init(1);
 	capture_init();
 	sta_tsk(ID_avancer);
-	sta_cyc(ID_acqui);
+	//sta_cyc(ID_acqui);
+	sta_tsk(ID_lecteur_M);
 	sta_tsk(ID_afficheur);
 	sta_tsk(ID_asserv_tourelle);
 	sta_tsk(ID_asserv_direction);
@@ -323,19 +407,23 @@
 	sta_tsk(ID_emergency);
     while(1)
     {
+		if(couleur_feu==65535){feu_vert++;}
+		if(feu_vert==1){sta_tsk(ID_avancer);}
 		if(STOP){
 			celerite=0;
-			dly_tsk(500);
 			ter_tsk(ID_asserv_tourelle);
 			ter_tsk(ID_asserv_direction);
 			ter_tsk(ID_periph_rx);
 			ter_tsk(ID_capteur_couleur);
 			ter_tsk(ID_avancer);
+			if(ultra==0){ultra++;
+				sta_tsk(ID_fonction_STOP);}
 			ter_tsk(ID_afficheur);
 			stp_cyc(ID_acqui);
+			ter_tsk(ID_emergency);
+			ter_tsk(ID_lecteur_M);
 			LED_R=!LED_R;
-			LED_J=!LED_J;
-			LED_V=!LED_V;
+			ter_tsk(ID_fonction_STOP);
 			}
 		/*
 		dly_tsk(100);
Index: branch/dupriet/Emb_App/conf_noyau.cfg
===================================================================
--- branch/dupriet/Emb_App/conf_noyau.cfg	(revision 538)
+++ branch/dupriet/Emb_App/conf_noyau.cfg	(revision 539)
@@ -77,7 +77,7 @@
 	name	= ID_emergency;
 	stack_size	= 256;
 	stack_section	= stack;
-	priority	= 4;
+	priority	= 1;
 	initial_start	= OFF;
 	exinf	= 0x0;
 };
@@ -93,6 +93,26 @@
 };
 
 task[]{
+	entry_address	= fonction_STOP();
+	name	= ID_fonction_STOP;
+	stack_size	= 256;
+	stack_section	= stack;
+	priority	= 3;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
+
+task[]{
+	entry_address	= lecteur_M();
+	name	= ID_lecteur_M;
+	stack_size	= 256;
+	stack_section	= stack;
+	priority	= 4;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
+
+task[]{
 	entry_address	= asserv_direction();
 	name	= ID_asserv_direction;
 	stack_size	= 256;
@@ -107,7 +127,7 @@
 	name	= ID_capteur_couleur;
 	stack_size	= 256;
 	stack_section	= stack;
-	priority	= 1;
+	priority	= 4;
 	initial_start	= OFF;
 	exinf	= 0x0;
 };
