Index: branch/tronel_florian/Emb_App/programme_principal_etud.c
===================================================================
--- branch/tronel_florian/Emb_App/programme_principal_etud.c	(revision 186)
+++ branch/tronel_florian/Emb_App/programme_principal_etud.c	(revision 187)
@@ -1,185 +1,201 @@
-/***********************************************************************/
-/*                                                                     */
-/*  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 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 acq_pos_ang(void);
-void angle(void);
+/***********************************************************************/
+/*                                                                     */
+/*  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 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 '*'
 
-//TRAME requête lecture
-CanFrame r1;
-//TRAME reponse à requête
-CanFrame rep1;
-
-//Variable contenant l'angle obtenue
-int Ang_o;
-//Variable contenant l'angle souhaité
-int Ang_s=450;
-//Variable contenant la vitesse angulaire
-int v_a;
-//Gain de la régulation
+void depart();
+   
+//Variable contenant l'angle souhait?
+int Ang_s=-300, Ang_o, vit_s=20;
+//Variable contenant la vitesse angulaire, vitesse et angle des roues
+int v_tourelle, vit, ang_r, dist;
+//Gain de la r?gulation
 int k=10;
-
-void main()
-{	
-	ports_mcu();
-    lcd_init();
-	periph_init();
-	periph_nom("#AutoTest*");
-
-    can_init();
-    clavier_init(1);
-	capture_init();
-
-	sta_cyc(ID_acqui);
-	//sta_tsk(ID_angle);
-	//sta_tsk(ID_periph_rx);
-
-    while(1){	
-				
-				acq_pos_ang();
-				angle();
-				//periph_write('V',50);		
-			}			
-}
-
 
-void acq_pos_ang(){
+
+void main()
+{       ports_mcu();
+    	lcd_init();
+        periph_init();
+        periph_nom("#AutoTest*");
+    	can_init();
+    	clavier_init(1);
+        capture_init();
+		
+		//depart();
+		
+		//sta_tsk(ID_depart);
+		//dly_tsk(2000);
+		
+		sta_tsk(ID_tourelle);
+		sta_tsk(ID_telemetre);
+		sta_tsk(ID_angle_roue);
+		//sta_cyc(ID_acqui);
+		//sta_tsk(ID_periph_rx);       
+		while(1){periph_write('V',1);}
+}
+  
+/*
+void depart(){
+		CanFrame dep;
+		
+		dep.data.id='V'; 
+    	dep.data.rtr=0; 
+    	dep.data.val=50;
+		
+	    snd_dtq (CanTx,dep.msg);
+		//dly_tsk(2000);
+}
+*/
+
+void telemetre(){
+	CanFrame t, ret;
+	while(1){
+	t.data.id='U';
+	t.data.rtr=1;
+	snd_dtq(CanTx,t.msg);
 	
-	r1.data.id='R';
-	r1.data.rtr=1;
+	rcv_dtq(CanRx, &ret.msg);
+	
+	dist=ret.data.val;
+	dly_tsk(3);
+	}	
+}
+
+void angle_roue(){
+	while(1){
+	ang_r= 1000-dist;
+	periph_write('D',ang_r);
+	dly_tsk(3);
+	}
+}
+
+void tourelle(){
+	
+	CanFrame r, rep;
+	
+	while(1){
+		
+	r.data.id='R';
+	r.data.rtr=1;
+	
 	//on envoie une requête pour la lecture de notre angle		
-	snd_dtq(CanTx,r1.msg);
+	snd_dtq(CanTx,r.msg);
 	//on recupère cette valeur 
-	rcv_dtq(CanRx, &rep1.msg);
+	rcv_dtq(CanRx, &rep.msg);
 	//on la copie dans un "unsigned short" pour pouvoir la lire avec un point d'arrêt
-	Ang_o=rep1.data.val;
+	Ang_o=rep.data.val;
+	
+	v_tourelle=k*(Ang_s-Ang_o);
+	periph_write('T',v_tourelle);
+	dly_tsk(3);
+	}
+	
 }
 
-void angle(){
-	
-	v_a=k*(Ang_s-Ang_o);
-	periph_write('T',v_a);
-}
-
-void acqui()
-{
-	
-}
\ No newline at end of file
Index: branch/tronel_florian/Emb_App/conf_noyau.cfg
===================================================================
--- branch/tronel_florian/Emb_App/conf_noyau.cfg	(revision 186)
+++ branch/tronel_florian/Emb_App/conf_noyau.cfg	(revision 187)
@@ -39,7 +39,7 @@
 	name	= ID_main;
 	stack_size	= 512;
 	stack_section	= stack;
-	priority	= 7;
+	priority	= 8;
 	initial_start	= ON;
 	exinf	= 0x0;
 };
@@ -62,18 +62,46 @@
 	exinf	= 0x0;
 };
 
+task[]{
+	entry_address	= tourelle();
+	name	= ID_tourelle;
+	stack_size	= 256;
+	stack_section	= stack;
+	priority	= 1;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
 
+task[]{
+	entry_address	= angle_roue();
+	name	= ID_angle_roue;
+	stack_size	= 256;
+	stack_section	= stack;
+	priority	= 1;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
+
+task[]{
+	entry_address	= telemetre();
+	name	= ID_telemetre;
+	stack_size	= 256;
+	stack_section	= stack;
+	priority	= 1;
+	initial_start	= OFF;
+	exinf	= 0x0;
+};
+
 //task[]{
-//	entry_address	= angle();
-//	name	= ID_angle;
+//	entry_address	= depart();
+//	name	= ID_depart;
 //	stack_size	= 256;
 //	stack_section	= stack;
-//	priority	= 8;
+//	priority	= 1;
 //	initial_start	= OFF;
 //	exinf	= 0x0;
 //};
 
-
 flag[]{
 	name	= ev_bus_fin_tr;
 	initial_pattern	= 0x0000;
@@ -109,19 +137,16 @@
 };
 
 
+//cyclic_hand[]{
+//	entry_address	= acqui();
+//	name	= ID_acqui;
+//	exinf	= 0x0;
+//	start	= OFF;
+//	phsatr	= OFF;
+//	interval_counter	= 0x63;
+//	phs_counter	= 0x0;
+//};
 
-
-cyclic_hand[]{
-	entry_address	= acqui();
-	name	= ID_acqui;
-	exinf	= 0x0;
-	start	= OFF;
-	phsatr	= OFF;
-	interval_counter	= 0x64;
-	phs_counter	= 0x0;
-};
-
-
 vdataqueue[]{
 	name	= QdmTouche;
 	wait_queue	= TA_TFIFO;
@@ -158,4 +183,3 @@
 
 //
 // End of Configuration
-//
