Index: branch/Antourou/Emb_App.tws
===================================================================
--- branch/Antourou/Emb_App.tws	(revision 259)
+++ branch/Antourou/Emb_App.tws	(revision 260)
@@ -8,9 +8,13 @@
 [BREAKPOINTS]
 [OPEN_WORKSPACE_FILES]
 "E:\tp_info6_2016_antourou\bsp\can.c" 
+"E:\tp_info6_2016_antourou\Emb_App\conf_noyau.cfg" 
+"E:\tp_info6_2016_antourou\Emb_App\crt0mr.a30" 
 "E:\tp_info6_2016_antourou\Emb_App\programme_principal_etud.c" 
 [WORKSPACE_FILE_STATES]
-"E:\tp_info6_2016_antourou\Emb_App\programme_principal_etud.c" -8 -30 1596 539 1 1 
+"E:\tp_info6_2016_antourou\Emb_App\conf_noyau.cfg" 75 75 1380 448 0 2 
+"E:\tp_info6_2016_antourou\Emb_App\crt0mr.a30" 100 100 1380 448 0 3 
+"E:\tp_info6_2016_antourou\Emb_App\programme_principal_etud.c" -8 -30 1596 686 1 1 
 "E:\tp_info6_2016_antourou\bsp\can.c" 50 50 1430 351 0 0 
 [LOADED_PROJECTS]
 "EmbM32C87App" 
Index: branch/Antourou/Emb_App/SessionM32C_E8a_system.ini
===================================================================
--- branch/Antourou/Emb_App/SessionM32C_E8a_system.ini	(revision 259)
+++ branch/Antourou/Emb_App/SessionM32C_E8a_system.ini	(revision 260)
@@ -25,4 +25,4 @@
 [Target]
 M32C E8a SYSTEM=Renesas Communications
 [USER_DATA]
-RESET=ff0016
+RESET=ff0024
Index: branch/Antourou/Emb_App/SessionM32C_E8a_system.hsf
===================================================================
--- branch/Antourou/Emb_App/SessionM32C_E8a_system.hsf	(revision 259)
+++ branch/Antourou/Emb_App/SessionM32C_E8a_system.hsf	(revision 260)
@@ -149,12 +149,12 @@
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "0000000000000000" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "0000000000000000" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "0000000000000512" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000FF056E" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000FF0580" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000FFF800" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000000928" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "000000000000074A" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "00000000000009B8" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "00000000000007E6" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000000000" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "0000000000004004" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "0000000000004044" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000" 
@@ -173,7 +173,7 @@
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_35" "0000000000000000" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000008" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000000000" 
-"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000946" 
+"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "00000000000009E2" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000000512" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "0000000000000000" 
 "{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "0000000000000000" 
@@ -277,14 +277,14 @@
 0 
 [WINDOW_POSITION_STATE_DATA_VD1]
 "Help" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0" 
-"{WK_00000001_CmdLine}" "WINDOW" 59422 0 0 "0.14" 365 0 0 350 200 17 0 "32771|32772|32778|<<separator>>|32773|32774|<<separator>>|32820|<<separator>>|32801|32824" "0.0" 
+"{WK_00000001_CmdLine}" "WINDOW" 59422 0 2 "0.09" 365 0 0 350 200 17 0 "32771|32772|32778|<<separator>>|32773|32774|<<separator>>|32820|<<separator>>|32801|32824" "0.0" 
 "{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 -4 -30 948 486 9 0 "" "0.0" 
-"{WK_00000001_EVENT}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59422 0 0 "0.16" 365 0 0 350 200 18 0 "32774|32775|32777|<<separator>>|32780|<<separator>>" "0.0" 
+"{WK_00000001_EVENT}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59422 0 0 "0.08" 365 0 0 350 200 18 0 "32774|32775|32777|<<separator>>|32780|<<separator>>" "0.0" 
 "{WK_00000001_MEMORY}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59422 0 1 "0.23" 365 2 -1 350 200 2065 0 "42202|42203|42204|42233|<<separator>>|42206|42205|42230|42229|42207|<<separator>>|42208|42209|42210|49076|42228|42227|<<separator>>|42231|42232|42234|42235|<<separator>>|42211|<<separator>>|32796|32797" "0.0" 
-"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 1 "1.00" 365 0 0 350 200 18 0 "36756|36757|36758|36759|<<separator>>|36746|36747|<<separator>>|39531|<<separator>>|39500|39534|<<separator>>|36687" "0.0" 
-"{WK_00000001_PDMR}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59422 0 3 "0.15" 365 0 0 350 200 18 0 "47300|47301|47302|47303|47304|47305|47314|47306|47307|47308|47311|47312|47313|42211|42509|42303" "0.0" 
+"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 1 "0.09" 365 0 0 350 200 18 0 "36756|36757|36758|36759|<<separator>>|36746|36747|<<separator>>|39531|<<separator>>|39500|39534|<<separator>>|36687" "0.0" 
+"{WK_00000001_PDMR}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59422 0 3 "0.54" 365 0 0 350 200 18 0 "47300|47301|47302|47303|47304|47305|47314|47306|47307|47308|47311|47312|47313|42211|42509|42303" "0.0" 
 "{WK_00000001_REGISTERS}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59421 0 0 "1.00" 236 0 0 350 200 2065 0 "" "0.0" 
-"{WK_00000001_WATCH}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59422 0 4 "0.13" 365 0 0 350 200 18 0 "32781|32783|<<separator>>|32771|32772|32773|<<separator>>|32786|<<separator>>|32810|32811" "0.0" 
+"{WK_00000001_WATCH}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59422 0 4 "0.29" 365 0 0 350 200 18 0 "32781|32783|<<separator>>|32771|32772|32773|<<separator>>|32786|<<separator>>|32810|32811" "0.0" 
 "{WK_00000002_WORKSPACE}" "WINDOW" 59420 0 0 "1.00" 308 0 0 350 200 18 0 "" "0.0" 
 "{WK_TB00000001_STANDARD}" "TOOLBAR 0" 59419 0 2 "0.00" 0 0 0 0 0 18 0 "" "0.0" 
 "{WK_TB00000002_EDITOR}" "TOOLBAR 0" 59419 0 0 "0.00" 0 0 0 0 0 18 0 "" "0.0" 
@@ -309,7 +309,9 @@
 [WINDOW_POSITION_STATE_DATA_VD3]
 [WINDOW_POSITION_STATE_DATA_VD4]
 [WINDOW_Z_ORDER]
-"E:\programmation\Travaux_Pratiques\Polytech_Ge_Travaux_Pratiques_2018\polytech-ge-info6-2018\trunk\tp_info6\Emb_App\programme_principal_etud.c" 
+"E:\tp_info6_2016_antourou\Emb_App\programme_principal_etud.c" 
+"E:\tp_info6_2016_antourou\bsp\can.c" 
+"E:\tp_info6_2016_antourou\Emb_App\crt0mr.a30" 
 [TARGET_NAME]
 "M32C E8a SYSTEM" "" 0 
 [STATUSBAR_STATEINFO_VD1]
@@ -356,5 +358,5 @@
 [FLASH_DETAILS]
 "" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" "" 
 [BREAKPOINTS]
-"d:\profs\tp_info14_travail\tp_info14\emb_app\programme_principal_etud.c" 95 0 1 "{00000000-0000-0000-C000-000000000046}" "" 
+"d:\profs\tp_info14_travail\tp_info14\emb_app\programme_principal_etud.c" 95 89335824 1 "{00000000-0000-0000-C000-000000000046}" "" 
 [END]
Index: branch/Antourou/Emb_App/crt0mr.a30
===================================================================
--- branch/Antourou/Emb_App/crt0mr.a30	(revision 259)
+++ branch/Antourou/Emb_App/crt0mr.a30	(revision 260)
@@ -97,7 +97,7 @@
 ; after reset,this program will start
 ;-----------------------------------------------------------------
 __SYS_INITIAL:
-t	LDC	#__Sys_Sp,ISP	; set initial ISP
+	LDC	#__Sys_Sp,ISP	; set initial ISP
 
 	MOV.B	#2,0AH
 	MOV.B	#00,PMOD		; Set Processor Mode Register
Index: branch/Antourou/Emb_App/programme_principal_etud.c
===================================================================
--- branch/Antourou/Emb_App/programme_principal_etud.c	(revision 259)
+++ branch/Antourou/Emb_App/programme_principal_etud.c	(revision 260)
@@ -1,190 +1,293 @@
-/***********************************************************************/
-/*                                                                     */
-/*  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"
+/***********************************************************************/
+/*                                                                     */
+/*  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>
-unsigned int vf;
+//unsigned int vf;
 //	CanFrame comm;
 //	CanFrame requete;
 //	UINT flag;//FLGPTN flag
 //	short position, distance; // valeur de l'angle renvoyée par le simulateur
-////////////
-
-// 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 simlateur, 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')
+//
+
+// 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 simlateur, 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 '*'
-
-
-void main()
-{
+//				correspondant au nom du véhicule si le nom se termine par '*'
 
-	
-	
-	ports_mcu();
-    lcd_init();
-	periph_init();
-	periph_nom("#AutoTest*");
-
-    can_init();
-    clavier_init(1);
-	capture_init();
-
-	sta_cyc(ID_acqui);
-	sta_tsk(ID_periph_rx);
-
-    while(1)
-    {
-		LED_J=1;
-		dly_tsk(100);
-		LED_J=0;
-		dly_tsk(100);
-	
-		
-		
-		
-    }
-}
-
-void acqui()
-{
-	LED_V=!LED_V;
-}
-void vitessedelatourelle(  int vit)
-{// commander la vitesse de rotation de la tourelle
+/* passage piste verte :
+1: asserv_tourelle dans le while(1) du main
+2: mettre asserv_tourelle dans une tache 
+3: commande en vitesse'V'
+4: changer asserv_tourelle: enlever les //rcv_dtq(CanRx, &repon.msg);
+5: dupliquer la tâche 'R' en 'V' 
+et 'T' en 'D'
+
+
+
+/*short alpha;
+void vitessedelatourelle(  int vit)
+{
+		// commander la vitesse de rotation de la tourelle
 		comm.data.id='T'; 
 		comm.data.rtr=0;
-		comm.data.val= vit;
+		comm.data.val= vit;
 		snd_dtq (CanTx,comm.msg);
+		dly_tsk(100);
 }
-void position de la tourelle( position)// a revoir		
-{		
-		//Lecture de la position de la tourelle 
-		requete.data.id='R';
-		// Lecture de la requête
-		requete.data.rtr=1;
-		periph[ADDR('R')].ev=0x01;
-		snd_dtq(CanTx,requete.msg);
-		wai_flg (ev_periph, 0x01, TWF_ANDW, &flag);
-     	position=periph[ADDR('R')].val;
-}		
-		// fonction pour calculer de la distance
-		req.data.id='U';// U distance mesurée par le télemètre
-        req.data.rtr=1;
-        periph[ADDR('U')].ev=0x01;
-        snd_dtq(CanTx, req.msg);
-        wai_flg (ev_periph, 0x01, TWF_ANDpW, &flag);//Attente de la r?ponse
-        distance=periph[ADDR('U')].val;
-		 
-		
\ No newline at end of file
+*/
+
+void asserv_tourelle();
+void regul_roue();
+void Avancementvoit();
+void acqui();
+
+unsigned short distance, longtourn, alpha,angleroue;
+void main()
+{
+        CanFrame req,reponse,comm;
+        ports_mcu();
+   		lcd_init();
+        periph_init();
+        periph_nom("#TEST001*");
+    	can_init();
+    	clavier_init(1);
+        capture_init(); 
+        
+        
+        sta_cyc(ID_acqui);// //Var g utlisées par les asservissements
+        sta_tsk(ID_periph_rx);
+        sta_tsk(ID_asserv_tourelle);
+ 		Avancementvoit();
+	 	sta_tsk(ID_regul_roue);
+		
+        
+        
+    while(1)
+    {
+                
+                LED_J=1;
+                dly_tsk(100);
+                LED_J=0;
+                dly_tsk(100);
+    }
+        
+}
+void acqui()
+{
+        LED_V=!LED_V;
+}	
+
+void asserv_tourelle()
+{		// asservissement de la tourelle vérifié  (ne pas toucher)      
+        
+                CanFrame req,repon,comm;
+                UINT flag;        
+                while(1)
+                {       //acquisition de l'angle mesurée par la tourelle  
+                        req.data.id='R'; //angle de la tourelle
+                        req.data.rtr=1; //req de lecture
+                        snd_dtq(CanRx, req.msg);
+        
+                        //rcv_dtq(CanRx, &repon.msg);
+                        periph[ADDR('R')].ev=0x01;
+                        snd_dtq(CanTx,req.msg);
+                        wai_flg(ev_periph, 0x01, TWF_ANDW,&flag);
+                        alpha=periph[ADDR('R')].val;
+                        
+                        //asservissement de  la tourelle
+                        comm.data.id='T'; // vitesse de la tournelle
+                        comm.data.rtr=0;
+                        comm.data.val=450-alpha; 
+                        snd_dtq(CanTx,comm.msg);
+                        dly_tsk(100);
+                }        
+                
+}
+unsigned short longeurtourelle()// acquisition de la distance mesuré par le télemètre
+{ 				
+				CanFrame req, repon ;
+				int distancecons,k;
+                UINT flag;
+				
+                req.data.id='U'; 
+                req.data.rtr=1; //requ de lecture
+                snd_dtq(CanRx, req.msg);
+                //rcv_dtq(CanRx, &repon.msg);
+              	periph[ADDR('U')].ev=0x02;
+             	snd_dtq(CanTx,req.msg);
+              	wai_flg(ev_periph, 0x02, TWF_ANDW,&flag);
+            	longtourn=periph[ADDR('U')].val; 
+				return longtourn;
+}
+unsigned short mesuredistance()
+{
+				unsigned short distance;
+				distance=longtourn * sin( 3,14 * (alpha/10) * 180 );
+				return distance;
+}
+void rouedirectrices(unsigned short angleroue)
+{
+        		CanFrame comm;
+				comm.data.id = 'D';
+        		comm.data.rtr = 0; //ecriture
+        		comm.data.val = angleroue;
+        		snd_dtq (CanTx,comm.msg);
+				
+}
+void regul_roue()
+{// asservissment véh
+				int distancecons,k,distancemesure;
+           		distancecons=mesuredistance();
+				k=1;// gain        
+                while(1)
+                {     
+                 	distancemesure=mesuredistance();
+					angleroue=-k*(distancecons-distancemesure);
+					rouedirectrices(angleroue);       
+                }
+}
+      
+void Avancementvoit() // voiture avance avec la vitesse voulue  (ne pas toucher)
+{
+        CanFrame requete;
+		 dly_tsk(5000);
+        requete.data.id='V';
+        requete.data.rtr=0;
+        requete.data.val=30;// valeur de la vitesse
+        snd_dtq(CanTx,requete.msg);
+        
+}
+        
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+	
+	
\ No newline at end of file
Index: branch/Antourou/Emb_App/conf_noyau.cfg
===================================================================
--- branch/Antourou/Emb_App/conf_noyau.cfg	(revision 259)
+++ branch/Antourou/Emb_App/conf_noyau.cfg	(revision 260)
@@ -61,7 +61,25 @@
 	initial_start	= OFF;
 	exinf	= 0x0;
 };
+task[]{
+	entry_address	= asserv_tourelle();
+	name	= ID_asserv_tourelle;
+	stack_size	= 256;
+	stack_section	= stack;
+	priority	= 6;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
 
+task[]{
+	entry_address	= regul_roue();
+	name	= ID_regul_roue;
+	stack_size	= 1024;
+	stack_section	= stack;
+	priority	= 7;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
 flag[]{
 	name	= ev_bus_fin_tr;
 	initial_pattern	= 0x0000;
