Index: branch/schiano/Emb_App/SessionM32C_E8a_system.ini
===================================================================
--- branch/schiano/Emb_App/SessionM32C_E8a_system.ini	(revision 75)
+++ branch/schiano/Emb_App/SessionM32C_E8a_system.ini	(revision 76)
@@ -3,7 +3,7 @@
 [RESET_RELEASE]
 ENABLE=0
 [CPU_SELECT]
-DEVICE=M30879FL
+DEVICE=M30875FH
 EMUSEL=0
 MCU_GROUP=M32C__87 Group
 [POWER_SUPPLY]
@@ -10,7 +10,7 @@
 VOLTAGE_5_0=1
 VOLTAGE_3_3=0
 [FW_LOCATE]
-FWADDRESS=f000
+FWADDRESS=fa00
 RAMADDRESS=04
 [WDT]
 WDT_USE=0
@@ -25,4 +25,4 @@
 [Target]
 M32C E8a SYSTEM=Renesas Communications
 [USER_DATA]
-RESET=ff0016
+RESET=ff002a
Index: branch/schiano/Emb_App/programme_principal_etud.c
===================================================================
--- branch/schiano/Emb_App/programme_principal_etud.c	(revision 75)
+++ branch/schiano/Emb_App/programme_principal_etud.c	(revision 76)
@@ -124,12 +124,18 @@
 unsigned int teta =100;
 unsigned int consignealpha = 450;
 unsigned int angleRoue =0;
-//unsigned int distancemur =0;
-//unsigned int consignedistance = 724;
-int k=10;
+unsigned int distancemur =722;
+unsigned int consignedistance = 710; //722 piste verte
+int pistebleue =0;
+int consigneVitesse;
+int CouleurCapteur ='V';
+int k=2;
+int kp=-1;
 
 void main()
-{
+{
+	CanFrame go;
+	
 	ports_mcu();
     lcd_init();
 	periph_init();
@@ -140,13 +146,23 @@
 	capture_init();
 
 	sta_cyc(ID_acqui);
-//	sta_tsk(ID_periph_rx);
+	sta_tsk(ID_periph_rx);
 	sta_cyc(ID_asserv1);
 	sta_tsk(ID_asserv0);
 	
-	//sta_cyc(ID_asservangleroue);
-	//sta_tsk(ID_asservRoue);
+	sta_cyc(ID_asservangleroue);
+	sta_tsk(ID_asservRoue);
+	
+	dly_tsk(500);
+	
+	go.data.id='V';
+	go.data.rtr=0;
+	go.data.val=30; //consigne de vitesse de la voiture
 	
+	snd_dtq (CanTx,go.msg);
+	sta_tsk(ID_AsservVitesse);
+	//sta_cyc(ID_asservVitesseCyc);
+	
     while(1)
     {
 		//LED_J=1;
@@ -165,7 +181,7 @@
 void asserv0()
 {	
 	CanFrame comm;
-	CanFrame go;
+
 	CanFrame demande;
 	CanFrame reponse;
 	
@@ -175,21 +191,16 @@
 		comm.data.rtr=0;
 		comm.data.val=teta; //consigne de vitesse de rotation de la tourelle
 	
-		snd_dtq (CanTx,comm.msg);
-	
-		go.data.id='V';
-		go.data.rtr=0;
-		go.data.val=10; //consigne de vitesse de la voiture
+		snd_dtq (CanTx,comm.msg);
 	
-		snd_dtq (CanTx,go.msg);
-	
 		demande.data.id='R';
 		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;
+		//rcv_dtq (CanRx,&reponse.msg); // Attente de la reponse
+		alpha=periph[ADDR('R')].val;
+		dly_tsk(100);
+ 		//alpha = reponse.data.val;
 	
 	}
 }
@@ -198,30 +209,64 @@
 	if (alpha!=consignealpha)teta = k*(consignealpha - alpha);
 }
 	
-/*void asservRoue(){
+void asservRoue(){
 	
-	CanFrame angle;
+	CanFrame angleroues;
 	CanFrame demandeU;
 	CanFrame reponseU;
 	
 	while(1){
-	
-		angle.data.id='D';
-		angle.data.rtr=0;
-		angle.data.val=angleRoue; //consigne d'angle des roues de la voiture
+		angleroues.data.id='D';
+		angleroues.data.rtr=0;
+		angleroues.data.val=angleRoue; //consigne d'angle des roues de la voiture
 	
-		snd_dtq (CanTx,angle.msg);
+		snd_dtq (CanTx,angleroues.msg);
 	
 		demandeU.data.id='U';
 		demandeU.data.rtr=1;
 	
 		snd_dtq (CanTx,demandeU.msg); //Interrogation du peripherique
-		rcv_dtq (CanRx,&reponseU.msg); //Attente de la reponse
-
- 		distancemur = reponseU.data.val;
+		//rcv_dtq (CanRx,&reponseU.msg); //Attente de la reponse
+		if (periph[ADDR('U')].val < 1000){
+ 			distancemur = periph[ADDR('U')].val;
+		}
+		dly_tsk(6);
 	}
-}*/
+}
  
-/*void asservangleroue(){
-	if (distancemur!=consignedistance)angleRoue = (consignedistance - distancemur);
-}*/
\ No newline at end of file
+void asservangleroue(){
+	if (distancemur != consignedistance)angleRoue=kp*(consignedistance - distancemur);
+	//if (distancemur < 400)angleRoue = -200;
+	//if ((distancemur < 900)&&(distancemur > 400))angleRoue = 0;
+	//if (distancemur > 900)angleRoue = 200;
+}
+
+void AsservVitesse(){
+	CanFrame vitesse;
+	CanFrame demandeCapteur;
+	
+	while(1){
+		demandeCapteur.data.id='C';
+		demandeCapteur.data.rtr=1;
+		
+		snd_dtq (CanTx,demandeCapteur.msg); // demande couleur capteur
+		pistebleue = periph[ADDR('C')].val;
+		CouleurCapteur = periph[ADDR('C')].val>>2;
+		if ((CouleurCapteur == 0x1580)||(CouleurCapteur == 0x1581)) {
+			consigneVitesse = 65; // 65 sur la piste verte
+		}
+		else {
+			consigneVitesse = 25; // 35 piste verte
+		}
+		//if (pistebleue == 0x5604)consigneVitesse = 40; //décélération pour le saut piste bleue
+		
+		vitesse.data.id='V';
+		vitesse.data.rtr=0;
+		vitesse.data.val=consigneVitesse; //consigne de vitesse de la voiture
+	
+		snd_dtq (CanTx,vitesse.msg);
+		
+
+		dly_tsk(100);
+	}
+}
\ No newline at end of file
Index: branch/schiano/Emb_App/conf_noyau.cfg
===================================================================
--- branch/schiano/Emb_App/conf_noyau.cfg	(revision 75)
+++ branch/schiano/Emb_App/conf_noyau.cfg	(revision 76)
@@ -63,6 +63,16 @@
 };
 
 task[]{
+	entry_address	= asserv0();
+	name	= ID_asserv0;
+	stack_size	= 256;
+	stack_section	= stack;
+	priority	= 4;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
+
+task[]{
 	entry_address	= asservRoue();
 	name	= ID_asservRoue;
 	stack_size	= 256;
@@ -73,11 +83,11 @@
 };
 
 task[]{
-	entry_address	= asserv0();
-	name	= ID_asserv0;
+	entry_address	= AsservVitesse();
+	name	= ID_AsservVitesse;
 	stack_size	= 256;
 	stack_section	= stack;
-	priority	= 4;
+	priority	= 3;
 	initial_start	= OFF;
 	exinf	= 0x0;
 };
@@ -146,11 +156,10 @@
 	exinf	= 0x0;
 	start	= OFF;
 	phsatr	= OFF;
-	interval_counter	= 150;
+	interval_counter	= 50;
 	phs_counter	= 0x0;
 };
 
-
 vdataqueue[]{
 	name	= QdmTouche;
 	wait_queue	= TA_TFIFO;
