Index: branch/sotty/Emb_App.tws
===================================================================
--- branch/sotty/Emb_App.tws	(revision 241)
+++ branch/sotty/Emb_App.tws	(revision 242)
@@ -7,17 +7,11 @@
 [GENERAL_DATA]
 [BREAKPOINTS]
 [OPEN_WORKSPACE_FILES]
-"E:\tp_info6_2018_sotty\bsp\periph.c" 
-"E:\tp_info6_2018_sotty\bsp\uart0.c" 
-"E:\tp_info6_2018_sotty\Emb_App\conf_noyau.cfg" 
 "E:\tp_info6_2018_sotty\Emb_App\crt0mr.a30" 
 "E:\tp_info6_2018_sotty\Emb_App\programme_principal_etud.c" 
 [WORKSPACE_FILE_STATES]
-"E:\tp_info6_2018_sotty\Emb_App\conf_noyau.cfg" 0 0 1380 431 0 3 
-"E:\tp_info6_2018_sotty\Emb_App\crt0mr.a30" 0 0 1596 669 0 2 
+"E:\tp_info6_2018_sotty\Emb_App\crt0mr.a30" 175 175 1380 431 0 1 
 "E:\tp_info6_2018_sotty\Emb_App\programme_principal_etud.c" -8 -30 1596 669 1 0 
-"E:\tp_info6_2018_sotty\bsp\periph.c" 50 50 1430 351 0 1 
-"E:\tp_info6_2018_sotty\bsp\uart0.c" 100 100 1380 431 0 4 
 [LOADED_PROJECTS]
 "EmbM32C87App" 
 [END]
Index: branch/sotty/Emb_App/SessionM32C_FoUSB_UART.hsf
===================================================================
--- branch/sotty/Emb_App/SessionM32C_FoUSB_UART.hsf	(revision 241)
+++ branch/sotty/Emb_App/SessionM32C_FoUSB_UART.hsf	(revision 242)
@@ -1,7 +1,7 @@
 [HIMDBVersion]
 2.0
 [DATABASE_VERSION]
-"2.2" 
+"2.3" 
 [SESSION_DETAILS]
 "" 
 [INFORMATION]
@@ -226,6 +226,8 @@
 [WINDOW_POSITION_STATE_DATA_VD3]
 [WINDOW_POSITION_STATE_DATA_VD4]
 [WINDOW_Z_ORDER]
+[TARGET_NAME]
+"M32C FoUSB/UART" "" 0 
 [STATUSBAR_STATEINFO_VD1]
 "MasterShowState" 1 
 "ApplicationShowState" 1 
@@ -246,8 +248,6 @@
 [STATUSBAR_DEBUGGER_PANESTATE_VD2]
 [STATUSBAR_DEBUGGER_PANESTATE_VD3]
 [STATUSBAR_DEBUGGER_PANESTATE_VD4]
-[TARGET_NAME]
-"M32C FoUSB/UART" 
 [DEBUGGER_OPTIONS]
 "Unknown Options" 
 [DOWNLOAD_MODULES]
@@ -264,6 +264,8 @@
 "FALSE" 
 [DISABLE_MEMORY_ACCESS_DURING_EXECUTION]
 "FALSE" 
+[DEBUGGER_OPTIONS_PROPERTIES]
+"0" 
 [COMMAND_FILES]
 [DEFAULT_DEBUG_FORMAT]
 "IEEE695_RENESAS" 
Index: branch/sotty/Emb_App/SessionM32C_Simulator.hsf
===================================================================
--- branch/sotty/Emb_App/SessionM32C_Simulator.hsf	(revision 241)
+++ branch/sotty/Emb_App/SessionM32C_Simulator.hsf	(revision 242)
@@ -1,7 +1,7 @@
 [HIMDBVersion]
 2.0
 [DATABASE_VERSION]
-"2.2" 
+"2.3" 
 [SESSION_DETAILS]
 "" 
 [INFORMATION]
@@ -34,6 +34,8 @@
 [WINDOW_POSITION_STATE_DATA_VD3]
 [WINDOW_POSITION_STATE_DATA_VD4]
 [WINDOW_Z_ORDER]
+[TARGET_NAME]
+"" "" 0 
 [STATUSBAR_STATEINFO_VD1]
 "MasterShowState" 1 
 "ApplicationShowState" 1 
@@ -54,8 +56,6 @@
 [STATUSBAR_DEBUGGER_PANESTATE_VD2]
 [STATUSBAR_DEBUGGER_PANESTATE_VD3]
 [STATUSBAR_DEBUGGER_PANESTATE_VD4]
-[TARGET_NAME]
-"" 
 [DEBUGGER_OPTIONS]
 "" 
 [DOWNLOAD_MODULES]
@@ -71,6 +71,8 @@
 "FALSE" 
 [DISABLE_MEMORY_ACCESS_DURING_EXECUTION]
 "FALSE" 
+[DEBUGGER_OPTIONS_PROPERTIES]
+"0" 
 [COMMAND_FILES]
 [DEFAULT_DEBUG_FORMAT]
 "" 
Index: branch/sotty/Emb_App/SessionM32C_E8a_system.ini
===================================================================
--- branch/sotty/Emb_App/SessionM32C_E8a_system.ini	(revision 241)
+++ branch/sotty/Emb_App/SessionM32C_E8a_system.ini	(revision 242)
@@ -25,4 +25,4 @@
 [Target]
 M32C E8a SYSTEM=Renesas Communications
 [USER_DATA]
-RESET=ff002c
+RESET=ff0032
Index: branch/sotty/Emb_App/programme_principal_etud.c
===================================================================
--- branch/sotty/Emb_App/programme_principal_etud.c	(revision 241)
+++ branch/sotty/Emb_App/programme_principal_etud.c	(revision 242)
@@ -1,124 +1,124 @@
-/***********************************************************************/
-/*                                                                     */
-/*  FILE        :test_compil.c                                         */
-/*  DATE        :Fri, Sep 29, 2006                                     */
-/*  DESCRIPTION :main program file.                                    */
-/*  CPU GROUP   :87                                                    */
-/*                                                                     */
-/*  This file is generated by Renesas Project Generator (Ver.4.5).     */
-/*   m308															   */
-/*   nc308lib														   */
-/*   c308mr															   */
-/*   nc382lib														   */
-/*                                                                     */
-/***********************************************************************/
-#include "sfr32c87.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <itron.h>
-#include <kernel.h>
-#include "kernel_id.h"
-#include "lcd.h"
-#include "clavier.h"
-#include "periph.h"
-#include "uart0.h"
-#include "can.h"
-#include "carte_io.h"
-#include "carte_m32.h"
-#include <math.h>
-
-// Potentiometre: lire les registres ad00 et ad01, les valeurs sont sur 10 bits.
-
-// Clavier: vrcv_dtq(QdmTouche,&code_touche) pour lire la derniere touche appuyee sur le clavier.
-// 			la variable code_touche doit etre du type short.
-
-// Bouton poussoir: Bp_G, Bp_M, Bp_D permettent de lire l'etat des boutons de la carte I/O
-
-// Leds: LED_R=1 ou LED_R=0 Pour allumer ou eteindre les leds (LED_R, LED_J, LED_V).
-
-// Pour communiquer avec le simulateur utiliser une variable de type CanFrame,
-// Definir les differents champs en utilisant la structure (S)eparee (comm.data)
-// Envoyer le message complet en utilisant l'union (comm.msg)
-
-// Exemple:
-// 		CanFrame comm;
-//			comm.data.id='T'; comm.data.rtr=0; comm.data.val=-100;
-//			snd_dtq (CanTx,comm.msg);
-
-// Pour interroger un peripherique et recuperer les donnees brutes renvoyees simulateur:
-//		CanFrame demande;
-//		CanFrame reponse;
-//
-//			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
-// 			reponse.data.val contient la valeur de retour du simulateur.
-// ATTENTION: Ne pas utiliser rcv_dtq(CanRx... si la tache ID_periph_rx est active
-
-// Lors de l'utilisation de la tache de reception et distribution des messages ID_periph_rx
-// Demarrer cette tache : sta_tsk(ID_periph_rx);
-// Pour lire la valeur d'un peripherique:
-// Il faut envoyer une demande de lecture:
-// 	CanFrame comm;
-// 		comm.data.id='R'; comm.data.rtr=1;
-// 		snd_dtq (CanTx,comm.msg);
-//
-// Des l'arrivee de la reponse du simulateur, les variables suivantes sont mises a jour:
-// periph[ADDR('R')].val : contient la derniere valeur renvoyee par le simulateur.
-//
-// Pour verifier si une nouvelle valeur a ete recue utiliser:
-// periph[ADDR('R')].maj (incremente a chaque reception).
-
-// Pour qu'un evenement soit declenche lors de la reception d'une donnee pour un peripherique:
-// periph[ADDR('R')].ev=0x01;
-// Pour se mettre en attente de l'evenement: wai_flg (ev_periph,0x01,TWF_ORW,&flag); // Declarer la variable flag comme : FLGPTN flag
-// Attention l'evenement n'est pas efface apres reception, il faut donc utiliser clr_flg(ev_periph,~0x01); par example
-
-// Les evenements:
-// Si le simulateur envoi un evenement sur 16 bits il est recu grace a:
-// par exemple:  wai_flg(event,(FLGPTN) 0x0007,TWF_ORW,&flag); // Declarer la variable flag comme : FLGPTN flag
-// Attention l'evenement n'est pas efface apres reception, il faut donc utiliser clr_flg(event,~flag); par example
-//Bit   Information associee            Remarque
-//0     Capteur Vert,                   remis a zero lors de la lecture du peripherique 'C'
-//1     Capteur Jaune,                  remis a zero lors de la lecture du peripherique 'C'
-//2     Capteur Rouge,                  remis a zero lors de la lecture du peripherique 'C'
-//3     Capteur Bleu,                   remis a zero lors de la lecture du peripherique 'C'
-//4     Capteur Cyan,                   remis a zero lors de la lecture du peripherique 'C'
-//5
-//6     Collision avec le sol,          remise a zero au changement de piste.
-//7     Fin de course (capteur vert),   remis a zero lors de la lecture du peripherique 'C'
-//8     La piste a change ,             remis a zero lors de la lecture du peripherique 'M'
-//9     Le mode de course a change ,    remis a zero lors de la lecture du peripherique 'M'
-//10
-//11    Le vehicule a termine un tour,   remis a zero au changement du mode de course.
-//12    Sortie de la piste,
-//13    Teleportation a ete utilisee,   remis a zero au changement de piste ou du mode de course.
-//14    Faux depart                     remise a zero au changement du mode de course.
-//15
-
-
-// Peripheriques disponibles:
-//'V'/86/0x56 : Commande en vitesse des roues motrices du vehicule (en radian /secondes).
-//'D'/68/0x44 : Commande de l'angle des roues directrices (en 1/10 de degre).
-//'T'/84/0x54 : Commande en vitesse de la tourelle portant le telemetre (en 1/10 de degre/secondes).
-//'R'/82/0x52 : Lecture de l'angle effectif de la tourelle portant le telemetre (en 1/10 de degre).
-//'U'/85/0x55 : Distance mesuree par le telemetre (1/100 de metre)
-//'N'/78/0x4E : Numero de la voiture (en fonction de l'ordre de connexion)
-//'E'/69/0x45 : Lecture des evenements,
-//'H'/72/0x48 : Donne le temps de course actuel
-//'S'/83/0x53 : Temps du tour precedent
-//'M'/77/0x7D : Mode de course :
-//  Bit 15 : Etat feu tricolore ( 1 -> Vert, 0 -> Orange ou Rouge),
-//  Bits 14-8 : 1 Attente, 2 course, 3 essais libres)
-//  Bits 7-0 : numero de la piste
-//'C'/67/0x43 : Informations sur le dernier capteur touche :
-//  8 bits de poids faible : numero du capteur
-//  8 bits de poids fort : couleur ('C','R','J','B' ou 'V')
+/***********************************************************************/
+/*                                                                     */
+/*  FILE        :test_compil.c                                         */
+/*  DATE        :Fri, Sep 29, 2006                                     */
+/*  DESCRIPTION :main program file.                                    */
+/*  CPU GROUP   :87                                                    */
+/*                                                                     */
+/*  This file is generated by Renesas Project Generator (Ver.4.5).     */
+/*   m308															   */
+/*   nc308lib														   */
+/*   c308mr															   */
+/*   nc382lib														   */
+/*                                                                     */
+/***********************************************************************/
+#include "sfr32c87.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <itron.h>
+#include <kernel.h>
+#include "kernel_id.h"
+#include "lcd.h"
+#include "clavier.h"
+#include "periph.h"
+#include "uart0.h"
+#include "can.h"
+#include "carte_io.h"
+#include "carte_m32.h"
+#include <math.h>
+
+// Potentiometre: lire les registres ad00 et ad01, les valeurs sont sur 10 bits.
+
+// Clavier: vrcv_dtq(QdmTouche,&code_touche) pour lire la derniere touche appuyee sur le clavier.
+// 			la variable code_touche doit etre du type short.
+
+// Bouton poussoir: Bp_G, Bp_M, Bp_D permettent de lire l'etat des boutons de la carte I/O
+
+// Leds: LED_R=1 ou LED_R=0 Pour allumer ou eteindre les leds (LED_R, LED_J, LED_V).
+
+// Pour communiquer avec le simulateur utiliser une variable de type CanFrame,
+// Definir les differents champs en utilisant la structure (S)eparee (comm.data)
+// Envoyer le message complet en utilisant l'union (comm.msg)
+
+// Exemple:
+// 		CanFrame comm;
+//			comm.data.id='T'; comm.data.rtr=0; comm.data.val=-100;
+//			snd_dtq (CanTx,comm.msg);
+
+// Pour interroger un peripherique et recuperer les donnees brutes renvoyees simulateur:
+//		CanFrame demande;
+//		CanFrame reponse;
+//
+//			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
+// 			reponse.data.val contient la valeur de retour du simulateur.
+// ATTENTION: Ne pas utiliser rcv_dtq(CanRx... si la tache ID_periph_rx est active
+
+// Lors de l'utilisation de la tache de reception et distribution des messages ID_periph_rx
+// Demarrer cette tache : sta_tsk(ID_periph_rx);
+// Pour lire la valeur d'un peripherique:
+// Il faut envoyer une demande de lecture:
+// 	CanFrame comm;
+// 		comm.data.id='R'; comm.data.rtr=1;
+// 		snd_dtq (CanTx,comm.msg);
+//
+// Des l'arrivee de la reponse du simulateur, les variables suivantes sont mises a jour:
+// periph[ADDR('R')].val : contient la derniere valeur renvoyee par le simulateur.
+//
+// Pour verifier si une nouvelle valeur a ete recue utiliser:
+// periph[ADDR('R')].maj (incremente a chaque reception).
+
+// Pour qu'un evenement soit declenche lors de la reception d'une donnee pour un peripherique:
+// periph[ADDR('R')].ev=0x01;
+// Pour se mettre en attente de l'evenement: wai_flg (ev_periph,0x01,TWF_ORW,&flag); // Declarer la variable flag comme : FLGPTN flag
+// Attention l'evenement n'est pas efface apres reception, il faut donc utiliser clr_flg(ev_periph,~0x01); par example
+
+// Les evenements:
+// Si le simulateur envoi un evenement sur 16 bits il est recu grace a:
+// par exemple:  wai_flg(event,(FLGPTN) 0x0007,TWF_ORW,&flag); // Declarer la variable flag comme : FLGPTN flag
+// Attention l'evenement n'est pas efface apres reception, il faut donc utiliser clr_flg(event,~flag); par example
+//Bit   Information associee            Remarque
+//0     Capteur Vert,                   remis a zero lors de la lecture du peripherique 'C'
+//1     Capteur Jaune,                  remis a zero lors de la lecture du peripherique 'C'
+//2     Capteur Rouge,                  remis a zero lors de la lecture du peripherique 'C'
+//3     Capteur Bleu,                   remis a zero lors de la lecture du peripherique 'C'
+//4     Capteur Cyan,                   remis a zero lors de la lecture du peripherique 'C'
+//5
+//6     Collision avec le sol,          remise a zero au changement de piste.
+//7     Fin de course (capteur vert),   remis a zero lors de la lecture du peripherique 'C'
+//8     La piste a change ,             remis a zero lors de la lecture du peripherique 'M'
+//9     Le mode de course a change ,    remis a zero lors de la lecture du peripherique 'M'
+//10
+//11    Le vehicule a termine un tour,   remis a zero au changement du mode de course.
+//12    Sortie de la piste,
+//13    Teleportation a ete utilisee,   remis a zero au changement de piste ou du mode de course.
+//14    Faux depart                     remise a zero au changement du mode de course.
+//15
+
+
+// Peripheriques disponibles:
+//'V'/86/0x56 : Commande en vitesse des roues motrices du vehicule (en radian /secondes).
+//'D'/68/0x44 : Commande de l'angle des roues directrices (en 1/10 de degre).
+//'T'/84/0x54 : Commande en vitesse de la tourelle portant le telemetre (en 1/10 de degre/secondes).
+//'R'/82/0x52 : Lecture de l'angle effectif de la tourelle portant le telemetre (en 1/10 de degre).
+//'U'/85/0x55 : Distance mesuree par le telemetre (1/100 de metre)
+//'N'/78/0x4E : Numero de la voiture (en fonction de l'ordre de connexion)
+//'E'/69/0x45 : Lecture des evenements,
+//'H'/72/0x48 : Donne le temps de course actuel
+//'S'/83/0x53 : Temps du tour precedent
+//'M'/77/0x7D : Mode de course :
+//  Bit 15 : Etat feu tricolore ( 1 -> Vert, 0 -> Orange ou Rouge),
+//  Bits 14-8 : 1 Attente, 2 course, 3 essais libres)
+//  Bits 7-0 : numero de la piste
+//'C'/67/0x43 : Informations sur le dernier capteur touche :
+//  8 bits de poids faible : numero du capteur
+//  8 bits de poids fort : couleur ('C','R','J','B' ou 'V')
 //'J'/74/0x4A : Proposition d'un code de dévérouillage.
 //'j'/106/06A : Récupération du résultat de dernier code envoyé. 0x77 si aucun code n'a été soumis. <0 si la réponse n'est pas
 //				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 '*'
+//				correspondant au nom du véhicule si le nom se termine par '*'
 
 // Definition des codes commandes et requetes
 #define VITESSE_ROUES 'V'
@@ -129,7 +129,7 @@
 #define MODE_COURSE 'M'
 #define INFO_CAPTEUR 'C'
 
-
+
 void init(void);
 void rotation_tourelle(short angle);
 int position_tourelle(void);
@@ -142,51 +142,69 @@
 void send_commande(unsigned char id_periph, short val);
 
 
-short distance_mur = 0;
+float distance_mur = 0.0;
 short angle_tourelle = 450;
+
 short vit_roue = 30;
+float K_roue = 1.5;
 short ang_roue = 0;
-
-void main()
-{
-	init();
 
+char num_piste;
+
+
+void main()
+{
+	init();
+
 	//Obtention de la couleur du feu
 	while ( (send_requete('M')>>15)==0 ){ //Attente que le feu soit vert
 		dly_tsk(50);
 	}
-
-    while(1)
-    {
-		LED_J=1;
-		dly_tsk(100);
+
+	//Obtention de la piste
+    num_piste = send_requete('M') & 0x00FF;
+
+    while(1)
+    {
+		LED_J=1;
+		dly_tsk(100);
 		LED_J=0;
-		
-		
-		asserv_roue();
-    }
-}
 
 
-void rotation_tourelle(short angle){
-	send_commande(VITESSE_TOURELLE,angle);
-}
+		asserv_roue();
+    }
+}
 
+void maj_variables(void){
+	
+}
 
-int position_tourelle(){
-//Renseigne sur la position de la tourelle (angle en dizieme de degre)
-	int angle;
+void asserv_roue(void){
+//Maintient de la voiture au centre de la piste
+	short telemetre;
 
-	angle = send_requete(ANGLE_TOURELLE);
-	return angle;
+	while(1){
+		//Angle des roues         // A enlever de la boucle d'asserv
+		distance_mur = distance_telemetre()*sin(3.1415*angle_tourelle/1800.0);
+		if(distance_mur > 1200) {	//Trou dans le mur
+			ang_roue = 0;
+		}
+		else {
+
+			ang_roue = K_roue*(distance_mur-500);
+		}
+		angle_roue(ang_roue);
+
+		vitesse_roue(vit_roue);
+	}
 }
 
-void asserv_tourelle(VP_INT stacd){	
+void asserv_tourelle(VP_INT stacd){
 //Maintient de la tourelle orientee a 45 degre
 	CanFrame comm;
 	short vitesse_tourelle;
 	char K = 2;
-	
+
 	while(1){
 		vitesse_tourelle =	K*(angle_tourelle - position_tourelle());
 		send_commande(VITESSE_TOURELLE, vitesse_tourelle);
@@ -194,11 +212,27 @@
 	}
 }
 
+
+
+
+
+void rotation_tourelle(short angle){
+	send_commande(VITESSE_TOURELLE,angle);
+}
+
+int position_tourelle(){
+//Renseigne sur la position de la tourelle (angle en dizieme de degre)
+	int angle;
+
+	angle = send_requete(ANGLE_TOURELLE);
+	return angle;
+}
+
 short distance_telemetre(void){
 //Renseigne la distance mesuree par le telemetre
 	short distance;
 
-	distance = send_requete(DISTANCE_TELEMETRE);	
+	distance = send_requete(DISTANCE_TELEMETRE);
 	return distance;
 }
 
@@ -210,36 +244,6 @@
 	send_commande(ANGLE_ROUES,angle);
 }
 
-void asserv_roue(void){
-//Maintient de la voiture au centre de la piste
-	char K = 1.5;
-	short telemetre;
-	
-	while(1){
-		//Angle des roues
-		distance_mur = distance_telemetre()*sin(3.1415*angle_tourelle/1800.0);
-		if(distance_mur > 1200) {	//Trou dans le mur
-			ang_roue = 0;
-		}
-		else {
-			
-			ang_roue = K*(distance_mur-500);
-		}
-		angle_roue(ang_roue);
-		
-		//Vitesse des roues
-		if(ang_roue < 50) { //Virages
-			vit_roue = 30;
-		}
-		else {
-			vit_roue = 20;	
-		}
-		vitesse_roue(vit_roue);
-	}
-}
-
-
-
 int send_requete(unsigned char id_periph){
 	//Envoi la requete correspondant a lidentifiant id_periph
 	CanFrame req;
@@ -259,31 +263,31 @@
 void send_commande(unsigned char id_periph, short val){
 	//Envoi la commande correspondant a lidentifiant id_periph avec la valeur val
 	CanFrame comm;
-	
+
 	comm.data.id = id_periph;
 	comm.data.rtr = 0; 				//Ecriture
-	comm.data.val =	val;	
+	comm.data.val =	val;
 	snd_dtq(CanTx, comm.msg);
 }
 
-void acqui()
-{
-	LED_V = !LED_V;
+void acqui()
+{
+	LED_V = !LED_V;
 }
 
 void init(void) {
 	//Initialise tous les peripheriques, taches et cycliques handler
-	
-	ports_mcu();
-    lcd_init();
-	periph_init();
-	periph_nom("#AutoTest*");
-
-    can_init();
-    clavier_init(1);
-	capture_init();
-
+
+	ports_mcu();
+    lcd_init();
+	periph_init();
+	periph_nom("#AutoTest*");
+
+    can_init();
+    clavier_init(1);
+	capture_init();
+
 	sta_cyc(ID_acqui);
-	sta_tsk(ID_asserv_tourelle);
+	sta_tsk(ID_asserv_tourelle);
 	sta_tsk(ID_periph_rx);
 }
\ No newline at end of file
