Index: branch/daoud/Emb_App/SessionM32C_E8a_system.ini
===================================================================
--- branch/daoud/Emb_App/SessionM32C_E8a_system.ini	(revision 448)
+++ branch/daoud/Emb_App/SessionM32C_E8a_system.ini	(revision 449)
@@ -25,4 +25,4 @@
 [Target]
 M32C E8a SYSTEM=Renesas Communications
 [USER_DATA]
-RESET=ff0018
+RESET=ff0046
Index: branch/daoud/Emb_App/programme_principal_etud.c
===================================================================
--- branch/daoud/Emb_App/programme_principal_etud.c	(revision 448)
+++ branch/daoud/Emb_App/programme_principal_etud.c	(revision 449)
@@ -119,13 +119,140 @@
 //				disponible. 0xab avec a-> nombre de couleurs bien placées et b -> couleurs présentes mais mal placées.
 //'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 '*'
-short alpha;
+short alpha,capteur_num,n_piste,att,message_capt;
+int consigne_angle=450;
+int temps,feu;
 short vitesse,distance,capteur;
-CanFrame vite;
+CanFrame vite,com,demande_capteur;	   
+	UINT flag_de_piste,flag_de_zone;
+	
+	
+	
+void DEPART(){
+	while(1){
+		if(feu==0x0001){
+			sta_tsk(ID_demarrage);
+		}
+		dly_tsk(50);
+	}
+}	
+int decode(char* c){
+	int valeur = 0;
+	int i=1;
+	if(c[0]=='#'){
+        while(c[i]!='*'){
+          valeur=valeur*10 + (c[i]-48);
+            i=i+1;
+        }
+        return valeur;
+	}
+	return 0;
+}
 
 
-short calcul_vitesse(short distance){
+
+
+
+void clavier(){
+	short code_touche;
+	char sequence[6]=" ";
+	int i=0;
+	int resultat;
+	while(1){	
+		vrcv_dtq(QdmTouche, &code_touche);
+		lcd_putc(code_touche);
+	
+		if(code_touche=='#')i=0;
+
+		sequence[i] = code_touche;
+		i=i+1;
+		
+		if((i>=5)&&(code_touche=='*')){
+		 resultat=decode(sequence);
+			if (( resultat!=0) && ( resultat<=1800))
+				consigne_angle=  resultat;	
+		}	
+	}
+}
+void det_piste()
+{	
+		FLGPTN flag_de_piste,flag_de_zone;
+		ipol_flg(ev_periph, 0x03,TWF_ANDW, &flag_de_zone);
+		capteur_num=periph[ADDR('C')].val & 0x00ff;
+		clr_flg(ev_periph, 0x04);
+		com.data.id = 'C';
+		com.data.rtr = 1;
+		ipsnd_dtq(CanTx, com.msg);
+		
+		
+		pol_flg(ev_periph,0x04,TWF_ANDW, &flag_de_piste);
+    	n_piste=periph[ADDR('M')].val & 0x00ff;
+		feu= periph[ADDR('M')].val & 0x8000;
+	
+		clr_flg(ev_periph, 0x03);
+		com.data.id = 'M';
+		com.data.rtr = 1;
+		ipsnd_dtq(CanTx, com.msg);
+		
+}
+
+ 
+ 
+void afficher(){
+	
 	while(1){
+	             
+	
+		
+		lcd_com (0x80);
+		lcd_str("Piste : ");
+		switch (n_piste)
+		{
+			case 1 :lcd_str("Vert");
+					break;
+			case 2 : lcd_str("Bleu");
+					break;
+			case 3 :lcd_str("Rouge");
+					break;
+			case 4 :lcd_str("Noir");
+					break;
+			default : break;
+		}
+		lcd_com (0xC0);
+		lcd_str("Zone : ");
+		switch (capteur_num){
+		
+	  	 case 1 :  lcd_str("Vert");
+			break;
+		 	 case 2 : lcd_str("Jaune");
+			break;
+			 case 3 :lcd_str("Rouge");
+			break;
+			 case 4 :lcd_str("Bleu");
+			break;
+			 case 5 :lcd_str("Cyan");
+			break;
+			default : break;
+		}
+		dly_tsk(100);
+	}
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+short calcul_vitesse(short distance){}
+	/*while(1){
 	if(distance>=700){
 		//vitesse=(-30/400)*distance+((30*11)/4);
 		vitesse=50*exp(((distance)-700)/800);
@@ -138,7 +265,7 @@
 		return vitesse;
 		}
 	}
-}
+}*/
 
 void asserv0_tourelle(){ 
 	short k=1;
@@ -156,7 +283,7 @@
 	//Commande vitesse de la tourelle
 	comm.data.id='T';
 	comm.data.rtr=0; //indique une écriture
-	comm.data.val=k*(450-alpha);
+	comm.data.val=k*(consigne_angle-alpha);
 	snd_dtq(CanTx, comm.msg);
 	dly_tsk(10);
 		
@@ -183,30 +310,13 @@
 
 
 }
- void det_capteur(){
- //lecture du capteur 
-	CanFrame req;
-	UINT flag;
-	while(1){
-	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);
-    capteur=periph[ADDR('C')].val;
- 	dly_tsk(20);
-	}
+
  
  
- }
- 
- 
- 
 
 void det_saut(){
 	while(1){
-if(capteur==0x7688){
+if(capteur_num==0x0088){
 	distance=700;
 	alpha=450;
 	
@@ -227,7 +337,7 @@
 	
 	req.data.id='D';
 	req.data.rtr=0;
-	if(capteur==0x7688){ 
+	if(capteur_num==0x5611){ 
 	req.data.val=0;
 	snd_dtq(CanTx, req.msg);}
     else{
@@ -244,32 +354,43 @@
 }
 void demarrage(){
 	
-	
+
 	dly_tsk(6000);
 	//test avec vitesse
+ 
+	
 	while(1){
     vite.data.id='V';
     vite.data.rtr=0; 
- if(capteur==0x7688){// debut de saut
+	
+    if(capteur_num==0x5611)
+	  {
+		 // debut de saut
 
-	vite.data.val=45;
-    snd_dtq(CanTx, vite.msg);}
- else{
-  if(capteur==0x4203){
-	vite.data.val=7;
-    snd_dtq(CanTx, vite.msg);}
- if(capteur==0x7601){
-	vite.data.val=3;
-    snd_dtq(CanTx, vite.msg);}
-
-
- else{
+	   vite.data.val=45;
+       snd_dtq(CanTx, vite.msg);
+	   }
+     else{
+     if(capteur_num==0x5612)
+	 {//après le saut
+    	vite.data.val=7;
+        snd_dtq(CanTx, vite.msg);
+		}
+     if(capteur_num==0x7613)
+	 {
+	    vite.data.val=3;
+      snd_dtq(CanTx, vite.msg);
+	  }
+  else{
    vite.data.val=36;
     snd_dtq(CanTx, vite.msg);
      }
- }
+  
+ 
+ 
 	dly_tsk(10);}
-	}
+	 
+}	}
 
 void main()
 { 
@@ -277,7 +398,7 @@
 	ports_mcu();
     lcd_init();
 	periph_init();
-	periph_nom("#AutoTest*");
+	periph_nom("SPEEDY");
 
     can_init();
     clavier_init(1);
@@ -284,14 +405,20 @@
 	capture_init();
 
 
-	sta_cyc(ID_acqui);
+	sta_cyc(ID_acqui);
+	sta_cyc(ID_det_piste);
 	sta_tsk(ID_periph_rx);
+		
 	
-  sta_tsk(ID_asserv0_tourelle);
-  sta_tsk(ID_demarrage);
+   sta_tsk(ID_asserv0_tourelle);
+   sta_tsk(ID_demarrage);
+      
+	 //sta_tsk(ID_DEPART);
+	  
 	sta_tsk(ID_dist);
   	sta_tsk( ID_roue_reg);
-   sta_tsk (ID_det_capteur);
+    sta_tsk( ID_afficher);
+   // sta_tsk( ID_clavier);
 	sta_tsk (ID_det_saut);
 
 
Index: branch/daoud/Emb_App/conf_noyau.cfg
===================================================================
--- branch/daoud/Emb_App/conf_noyau.cfg	(revision 448)
+++ branch/daoud/Emb_App/conf_noyau.cfg	(revision 449)
@@ -81,6 +81,24 @@
 	exinf	= 0x0;
 };
 task[]{
+	entry_address	= clavier();
+	name	= ID_clavier;
+	stack_size	= 256;
+	stack_section	= stack;
+	priority	= 4;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
+task[]{
+	entry_address	=afficher();
+	name	= ID_afficher;
+	stack_size	= 256;
+	stack_section	= stack;
+	priority	= 5;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
+task[]{
 	entry_address	= demarrage();
 	name	= ID_demarrage;
 	stack_size	= 512;
@@ -114,18 +132,17 @@
 	initial_start	= OFF;
 	exinf	= 0x0;
 };
+
 task[]{
-	entry_address	= det_capteur();
-	name	= ID_det_capteur;
-	stack_size	= 512;
+	entry_address	= DEPART();
+	name	= ID_DEPART;
+	stack_size	= 256;
 	stack_section	= stack;
-	priority	= 7;
+	priority	= 8;
 	initial_start	= OFF;
 	exinf	= 0x0;
 };
 
-
-
 flag[]{
 	name	= ev_bus_fin_tr;
 	initial_pattern	= 0x0000;
@@ -179,8 +196,16 @@
 	interval_counter	= 0x64;
 	phs_counter	= 0x0;
 };
+cyclic_hand[]{
+	entry_address	= det_piste();
+	name	= ID_det_piste;
+	exinf	= 0x0;
+	start	= OFF;
+	phsatr	= OFF;
+	interval_counter	= 0x100;
+	phs_counter	= 0x0;
+};
 
-
 vdataqueue[]{
 	name	= QdmTouche;
 	wait_queue	= TA_TFIFO;
