Index: branch/porte/Emb_App/SessionM32C_E8a_system.ini
===================================================================
--- branch/porte/Emb_App/SessionM32C_E8a_system.ini	(revision 425)
+++ branch/porte/Emb_App/SessionM32C_E8a_system.ini	(revision 426)
@@ -25,4 +25,4 @@
 [Target]
 M32C E8a SYSTEM=Renesas Communications
 [USER_DATA]
-RESET=ff0076
+RESET=ff0082
Index: branch/porte/Emb_App/programme_principal_etud.c
===================================================================
--- branch/porte/Emb_App/programme_principal_etud.c	(revision 425)
+++ branch/porte/Emb_App/programme_principal_etud.c	(revision 426)
@@ -123,7 +123,7 @@
 // +-----------------------------------------------------+
 // |     				Constantes           		     |
 // +-----------------------------------------------------+
-const Vitesse_max=99, Vitesse_min=0, Vitesse_noir=12;
+const Vitesse_max=99, Vitesse_min=0;
 const Kpt=1 , Kdt=0.1, Kdr=0.2, Kpr=1;											//Paramètre des PD de la tourelle et des roues
 
 // +-----------------------------------------------------+
@@ -131,17 +131,20 @@
 // +-----------------------------------------------------+
 //Variables pour l'asserivssement des roues, de la vitesse et du telemetre
 unsigned int Angle_T=0, Consigne_T=400, Consigne_T_noir=900;						//prend la valeur de l'angle au temps t-1 //Consigne de l'angle de la tourelle (consigne/10=>degrès)
-unsigned int valeur=0, Saut=0; 										//valeur transmise corrigé
+unsigned short valeur=0, Saut=0; 														//valeur transmise corrigé
 unsigned int Somme_Erreur=0, Erreur=0;			
 unsigned int ErreurRoues=0,Somme_ErreurRoues=0;
-unsigned int vit=0, i=1, Distance;		
-unsigned int Angle_R=0, Vitesse_vert=40,Vitesse_bleu=35,Vitesse_rouge=30;					//Angle des roues
+int vit=0, i=1, Distance;		
+int Angle_R=0;																//Angle des roues
+unsigned short Vitesse_vert=40,Vitesse_bleu=35,Vitesse_rouge=30, Vitesse_noir=12;
+unsigned short Vitesse_vert_virage=30, Vitesse_bleu_virage=26, Vitesse_rouge_virage=20, Vitesse_rouge_saut=45;					
 //Variable de la fonction Capteur
 unsigned int Info_capteur, couleur_capteur, num_capteur;
 //Variable de la fonction Distance_bord
-unsigned int Bord_defaut=0, ecart=400, distance_bord=790, distance_bord_noir=500;
+unsigned int Bord_defaut=0, ecart=400, distance_bord_vert=810, distance_bord=780, distance_bord_noir=500;
 //Variable des fonctions IHM
-short Touche_clavier, Temps=0;
+short Touche_clavier;
+float Temps=0;
 //char *Temps;
 //Variable de la fonction Circuit
 unsigned int Info_circuit, Etat_feu, Num_circuit=0, Depart_ok=0, Arret_urgence=0;
@@ -227,7 +230,7 @@
 	Somme_ErreurRoues+=ErreurRoues;
 	switch(Num_circuit){
 			case 1:
-				if(Distance != distance_bord && Bord_defaut == 0){
+				if(Distance != distance_bord_vert && Bord_defaut == 0){
 					Angle_R=-1*(Kpr*ErreurRoues+Kdr*Somme_ErreurRoues);}				//correction de l'angle par handler cyclique des roues
 			break;
 			case 2:
@@ -272,7 +275,7 @@
 						snd_dtq (CanTx,comm.msg);			// Envoi de la commande de vitesse
 					}
 					else{									// Ralentissement en cas de virage.
-						comm.data.val=Vitesse_vert/1.2;	
+						comm.data.val=Vitesse_vert_virage;	
 						snd_dtq (CanTx,comm.msg);
 					}
 				}
@@ -288,7 +291,7 @@
 						snd_dtq (CanTx,comm.msg);			// Envoi de la commande de vitesse
 					}
 					else{									// Ralentissement en cas de virage.
-						comm.data.val=Vitesse_bleu/1.3;	
+						comm.data.val=Vitesse_bleu_virage;	
 						snd_dtq (CanTx,comm.msg);
 					}
 				}
@@ -304,14 +307,31 @@
 					snd_dtq (CanTx,comm.msg);			// Envoi de la commande de vitesse
 					}
 					else if(couleur_capteur == 0x0766 && num_capteur == 0x66F0){				//Accelération pour passer le saut
-					comm.data.val=45;	
+					comm.data.val=Vitesse_rouge_saut;	
 					snd_dtq (CanTx,comm.msg);
 					}
 					else{									// Ralentissement en cas de virage.
-					comm.data.val=Vitesse_rouge/1.5;	
+					comm.data.val=Vitesse_rouge_virage;	
 					snd_dtq (CanTx,comm.msg);
 					}
 				}
+			/*	if(couleur==0x1c80 || couleur==0x18c8 ) ; // avant saut: bloc rouge grand valeur 2 et pré-barille: petit bloc cyan 32 , bloc les roues
+				else if(couleur==0x18d0 || couleur==0x18c1){ // barille: petit bloc cyan 64 et piste caillou: petit bloc cyan 6
+					distance_ref=350;
+					if(distance!=distance_ref){
+						valeur_r=-k2*(distance_ref-distance);}
+					}
+				else if(couleur==0x18e0){
+					distance_ref=570;
+					if(distance!=distance_ref){
+					valeur_r=-k2*(distance_ref-distance);}
+				}
+				else {
+					distance_ref=distance_ref_init;
+					if(distance!=distance_ref){
+						valeur_r=-k2*(distance_ref-distance);}
+				}			
+			}*/
 			break;
 			case 4 : 
 				if(Depart_ok == 1 && Arret_urgence == 0){
@@ -377,7 +397,7 @@
 		
 		switch(Num_circuit){
 			case 1:
-				if(Distance > distance_bord+ecart  || Distance < distance_bord-ecart){
+				if(Distance > distance_bord_vert+ecart  || Distance < distance_bord_vert-ecart){
 				Bord_defaut=1;
 				}
 				else{
@@ -408,7 +428,21 @@
 				Bord_defaut=0;
 				}
 			break;
+			default : 
+				if(Distance > distance_bord_noir+ecart  || Distance < distance_bord_noir-ecart){
+				Bord_defaut=1;
+				}
+				else{
+				Bord_defaut=0;
+				}
 		}
+		
+		if(Bord_defaut == 1){
+			LED_J=1;
+			dly_tsk(1000);
+			LED_J=0;
+		}
+		
 		dly_tsk(10);	
 	}
 }
@@ -470,7 +504,7 @@
 			default :	lcd_str("Inconnu");	
 		}
 		lcd_putc('|');
-		switch(Info_capteur){		
+		switch(Info_capteur / 10){		
 			case 0x560:		lcd_str("VERT");	break;
 			case 0x430:		lcd_str("NOIR");	break;
 			case 0x520:		lcd_str("ROUGE");	break;
@@ -480,6 +514,8 @@
 		}
 		lcd_putc('|');
 		//lcd_str('Temps');
+		
+		
 				
 		dly_tsk(1000);
 	}
@@ -487,8 +523,8 @@
 
 void Bp_hc(){
 	
-	if(Bp_G == 1){ Arret_urgence = 1;}
-	if(Bp_G == 0){ Arret_urgence = 0;}
+	if(Bp_G == 1){ Arret_urgence = 1; LED_R = 1;}
+	if(Bp_G == 0){ Arret_urgence = 0; LED_R = 0;}
 	
 }
 
@@ -515,7 +551,9 @@
 		Etat_feu=Info_circuit >> 15; 						// contient la valeur de retour du simulateur sur l'état du feu tricolore.
 		
 		if( Etat_feu == 1){ Depart_ok = 1;}					// Passe la variable permettant le départ à 1.
+		
 		dly_tsk(200);
+		
 	}
 		
 }
