Statistics
| Revision:

root / branch / zemeta / Emb_App / programme_principal_etud.c @ 543

History | View | Annotate | Download (16.6 KB)

1
 /***********************************************************************/
2
/*                                                                     */
3
/*  FILE        :test_compil.c                                         */
4
/*  DATE        :Fri, Sep 29, 2006                                     */
5
/*  DESCRIPTION :main program file.                                    */
6
/*  CPU GROUP   :87                                                    */
7
/*                                                                     */
8
/*  This file is generated by Renesas Project Generator (Ver.4.5).     */
9
/*   m308                                                                                                                           */
10
/*   nc308lib                                                                                                                   */
11
/*   c308mr                                                                                                                           */
12
/*   nc382lib                                                                                                                   */
13
/*                                                                     */
14
/***********************************************************************/
15
#include "sfr32c87.h"
16
#include <stdio.h>
17
#include <stdlib.h>
18
#include <itron.h>
19
#include <kernel.h>
20
#include "kernel_id.h"
21
#include "lcd.h"
22
#include "clavier.h"
23
#include "periph.h"
24
#include "uart0.h"
25
#include "can.h"
26
#include "carte_io.h"
27
#include "carte_m32.h"
28
#include <math.h>
29

    
30
// Potentiometre: lire les registres ad00 et ad01, les valeurs sont sur 10 bits.
31

    
32
// Clavier: vrcv_dtq(QdmTouche,&code_touche) pour lire la derniere touche appuyee sur le clavier.
33
//                         la variable code_touche doit etre du type short.
34

    
35
// Bouton poussoir: Bp_G, Bp_M, Bp_D permettent de lire l'etat des boutons de la carte I/O
36

    
37
// Leds: LED_R=1 ou LED_R=0 Pour allumer ou eteindre les leds (LED_R, LED_J, LED_V).
38

    
39
// Pour communiquer avec le simulateur utiliser une variable de type CanFrame,
40
// Definir les differents champs en utilisant la structure (S)eparee (comm.data)
41
// Envoyer le message complet en utilisant l'union (comm.msg)
42

    
43
// Exemple:
44
//                 CanFrame comm;
45
//                        comm.data.id='T'; comm.data.rtr=0; comm.data.val=-100;
46
//                        snd_dtq (CanTx,comm.msg);
47

    
48
// Pour interroger un peripherique et recuperer les donnees brutes renvoyees simulateur:
49
//                CanFrame demande;
50
//                CanFrame reponse;
51
//
52
//                        demande.data.id='R'; demande.data.rtr=1;
53
//                        snd_dtq (CanTx,demande.msg); // Interrogation du peripherique
54
//                         rcv_dtq (CanRx,&reponse.msg); // Attente de la reponse
55
//                         reponse.data.val contient la valeur de retour du simulateur.
56
// ATTENTION: Ne pas utiliser rcv_dtq(CanRx... si la tache ID_periph_rx est active
57

    
58
// Lors de l'utilisation de la tache de reception et distribution des messages ID_periph_rx
59
// Demarrer cette tache : sta_tsk(ID_periph_rx);
60
// Pour lire la valeur d'un peripherique:
61
// Il faut envoyer une demande de lecture:
62
//         CanFrame comm;
63
//                 comm.data.id='R'; comm.data.rtr=1;
64
//                 snd_dtq (CanTx,comm.msg);
65
//
66
// Des l'arrivee de la reponse du simlateur, les variables suivantes sont mises a jour:
67
// periph[ADDR('R')].val : contient la derniere valeur renvoyee par le simulateur.
68
//
69
// Pour verifier si une nouvelle valeur a ete recue utiliser:
70
// periph[ADDR('R')].maj (incremente a chaque reception).
71

    
72
// Pour qu'un evenement soit declenche lors de la reception d'une donnee pour un peripherique:
73
// periph[ADDR('R')].ev=0x01;
74
// Pour se mettre en attente de l'evenement: wai_flg (ev_periph,0x01,TWF_ORW,&flag); // Declarer la variable flag comme : FLGPTN flag
75
// Attention l'evenement n'est pas efface apres reception, il faut donc utiliser clr_flg(ev_periph,~0x01); par example
76

    
77
// Les evenements:
78
// Si le simulateur envoi un evenement sur 16 bits il est recu grace a:
79
// par exemple:  wai_flg(event,(FLGPTN) 0x0007,TWF_ORW,&flag); // Declarer la variable flag comme : FLGPTN flag
80
// Attention l'evenement n'est pas efface apres reception, il faut donc utiliser clr_flg(event,~flag); par example
81
//Bit   Information associee            Remarque
82
//0     Capteur Vert,                   remis a zero lors de la lecture du peripherique 'C'
83
//1     Capteur Jaune,                  remis a zero lors de la lecture du peripherique 'C'
84
//2     Capteur Rouge,                  remis a zero lors de la lecture du peripherique 'C'
85
//3     Capteur Bleu,                   remis a zero lors de la lecture du peripherique 'C'
86
//4     Capteur Cyan,                   remis a zero lors de la lecture du peripherique 'C'
87
//5
88
//6     Collision avec le sol,          remise a zero au changement de piste.
89
//7     Fin de course (capteur vert),   remis a zero lors de la lecture du peripherique 'C'
90
//8     La piste a change ,             remis a zero lors de la lecture du peripherique 'M'
91
//9     Le mode de course a change ,    remis a zero lors de la lecture du peripherique 'M'
92
//10
93
//11    Le vehicule a termine un tour,   remis a zero au changement du mode de course.
94
//12    Sortie de la piste,
95
//13    Teleportation a ete utilisee,   remis a zero au changement de piste ou du mode de course.
96
//14    Faux depart                     remise a zero au changement du mode de course.
97
//15
98

    
99

    
100
// Peripheriques disponibles:
101
//'V'/86/0x56?: Commande en vitesse des roues motrices du vehicule (en radian /secondes).
102
//'D'/68/0x44?: Commande de l'angle des roues directrices (en 1/10 de degre).
103
//'T'/84/0x54?: Commande en vitesse de la tourelle portant le telemetre (en 1/10 de degre/secondes).
104
//'R'/82/0x52?: Lecture de l'angle effectif de la tourelle portant le telemetre (en 1/10 de degre).
105
//'U'/85/0x55?: Distance mesuree par le telemetre (1/100 de metre)
106
//'N'/78/0x4E?: Numero de la voiture (en fonction de l'ordre de connexion)
107
//'E'/69/0x45?: Lecture des evenements,
108
//'H'/72/0x48?: Donne le temps de course actuel
109
//'S'/83/0x53?: Temps du tour precedent
110
//'M'/77/0x7D?: Mode de course :
111
//  Bit 15?: Etat feu tricolore ( 1 -> Vert, 0 -> Orange ou Rouge),
112
//  Bits 14-8?: 1 Attente, 2 course, 3 essais libres)
113
//  Bits 7-0?: numero de la piste
114
//'J'/74/0x4A : Proposition d'un code de d?v?rouillage.
115
//'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
116
//                                disponible. 0xab avec a-> nombre de couleurs bien plac?es et b -> couleurs pr?sentes mais mal plac?es.
117
//'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
118
//                                correspondant au nom du v?hicule si le nom se termine par '*'
119
CanFrame comm,comm2,comm3;
120
unsigned short k=1,k2=1, angle_reel, error,error2,d_reel,D/*=714*/, d_max = 2000, appui_Bp = 0 ; // D = 500 pour piste verte , D = 714 pour piste verte
121
unsigned short consigne_tour/*=450*/, vitesse_roue/*=20*/, capt_detecte, comRoue, mode_course ,num_piste ,depart,temps;  // V = 30 pour piste verte , V = 38 pour piste bleu  
122
unsigned char couleur;
123
CanFrame requete,requete3,requete4 ; 
124

    
125

    
126

    
127
void main()
128
{
129
        ports_mcu();
130
    lcd_init();
131
        periph_init();
132
        periph_nom("#Flash*");
133

    
134
    can_init();
135
    clavier_init(1);
136
        capture_init();
137
        sta_tsk(ID_periph_rx);
138
//        sta_tsk(id_trou);
139
//        sta_cyc(ID_acqui);
140
        sta_tsk(id_dist);
141
        sta_tsk(id_aber);
142
        sta_tsk(id_appui);
143
        sta_tsk(id_mode);
144
        sta_tsk(id_piste);
145
        sta_tsk(id_piste_verte_bleue); // ? activer pour piste verte et bleue
146
        sta_tsk(id_noire);
147
        sta_tsk(id_temps);
148

    
149
//        sta_tsk(id_comm_v); ralentit asservissement
150
//        sta_tsk(id_arret);  ralentit asservissement
151
        comRoue=-k2*error2 ;
152
        sta_tsk(id_roue);
153
        sta_tsk(id_detec); // ? activer pour piste rouge 
154
        sta_tsk(id_capt);
155
        sta_tsk(id_angle);
156
        sta_tsk(id_ass_t);        
157
        dly_tsk(2000);
158
        sta_tsk(id_avance);
159
        
160
        switch(couleur)
161
        {
162
                case 1:        lcd_str("Verte");
163
                break ;
164
                case 2:        lcd_str("Bleue");
165
                break ;
166
                case 3:        lcd_str("Rouge");
167
                break ;
168
                case 4:        lcd_str("Noire");
169
                break ;
170
        }
171
    /*while(1) // Portion de code sans importance 
172
    {
173
                LED_J=1;
174
                dly_tsk(100);
175
                LED_J=0;
176
                dly_tsk(100);
177
    }*/
178
}
179

    
180
void acqui()
181
{
182
        //LED_V=!LED_V;        
183
        
184
}
185

    
186
void acqui_angle_t()
187
{
188
        while (1)
189
        {
190
                requete.data.id = 'R' ; 
191
                requete.data.rtr = 1 ;
192
                snd_dtq(CanTx, requete.msg);
193
                dly_tsk(5) ;
194
                angle_reel = periph[ADDR('R')].val;
195
                dly_tsk(10) ;   
196
        
197
        }
198
}
199

    
200

    
201
void mes_aber() // Led jaune s'allume pendant 1s quand le telemetre renvoie une valeur aberante
202
{
203
        while (1)
204
        {
205
                if(d_reel==0 || d_reel>2000)
206
                        {
207
                                LED_J=1;
208
                                dly_tsk(1000);
209
                                LED_J=0; 
210
                        }
211
                dly_tsk(5) ;   
212
        }
213
}
214

    
215

    
216
//Envoie commande vitesse voiture en fonction de du feu 
217

    
218
void avance_voiture()
219
{
220
        while(1) // Commande d'avance voiture
221
        {
222
                comm.data.id = 'V' ;
223
                comm.data.rtr = 0 ;
224
                comm.data.val = vitesse_roue ; 
225
                if(depart)
226
                {
227
                        snd_dtq(CanTx, comm.msg) ; 
228
                }
229
                dly_tsk(5);
230
        }
231
}
232

    
233
void asservissement_tourelle()
234
{
235
        while(1)
236
        {
237
                //asservissement position tourelle selon la consigne envoy?e
238
                error = consigne_tour - angle_reel ;
239
                comm.data.id = 'T' ;
240
                comm.data.rtr = 0 ;
241
                comm.data.val = k*error ; 
242
                snd_dtq(CanTx, comm.msg) ;
243
                dly_tsk(5) ; 
244
        }
245
}
246

    
247

    
248
void ass_roue()
249
{
250
        while(1) // solution qui evite les trous a tous les coups
251
        {
252
                while (d_reel<=d_max)
253
                {
254
                        error2 = D - d_reel ;
255
                        comm2.data.id = 'D' ;
256
                        comm2.data.rtr = 0 ;
257
                        comm2.data.val = comRoue; 
258
                        snd_dtq(CanTx, comm2.msg) ;
259
                        dly_tsk(5) ; 
260
                }
261
                dly_tsk(10) ;
262
        }
263
}
264

    
265
void acquis_distance()
266
{
267
        while(1)
268
        {
269
                //Acquisition de la distance telemetre
270
                requete3.data.id = 'U' ; 
271
                requete3.data.rtr = 1 ;
272
                snd_dtq(CanTx, requete3.msg);
273
                dly_tsk(5);
274
                d_reel = periph[ADDR('U')].val;
275
                dly_tsk(10);
276
        }
277
}
278

    
279

    
280
void trou()
281
{
282
        while(1) // Solution pour eviter les roue mais marche pas tout le temps
283
        {
284
                while(d_reel>D)
285
                {
286
                        comm2.data.id = 'D' ;
287
                        comm2.data.rtr = 0 ;
288
                        comm2.data.val = 0 ; 
289
                        snd_dtq(CanTx, comm2.msg) ;
290
                        dly_tsk(5) ;                         
291
                }
292
                dly_tsk(10) ; 
293
        }
294
}
295

    
296
void capteur() // detecteur de catpeurs des pistes
297
{
298
        while (1)
299
        {
300
                requete.data.id = 'C' ; 
301
                requete.data.rtr = 1 ;
302
                snd_dtq(CanTx, requete.msg);
303
                dly_tsk(5) ;
304
                capt_detecte = periph[ADDR('C')].val;
305
                dly_tsk(10) ;
306
        }
307
}
308

    
309
void detection() // Tache d?di?e ? la piste rouge // ? enlever pour la piste bleue 
310
{
311
        while (1)
312
        {
313
                if (num_piste==768)
314
                { 
315
                        if(capt_detecte!=30212) // course normale
316
                        {
317
                                D=705; 
318
                                consigne_tour=450;
319
                                if(appui_Bp!=1)
320
                                {
321
                                        vitesse_roue = 25;
322
                                        comRoue = -k2*error2;
323
                                }
324
                                else if (appui_Bp)
325
                                {
326
                                        vitesse_roue = 0;
327
                                         comRoue = 0;
328
                                }
329
                        }
330
                        if (capt_detecte==30212) // detection de ligne droite de saut
331
                        {
332
                                D=705; 
333
                                consigne_tour=450;
334
                                if(appui_Bp!=1)
335
                                {
336
                                        vitesse_roue = 45;
337
                                        comRoue = 0 ;
338
                                }
339
                                else if (appui_Bp)
340
                                {
341
                                        vitesse_roue = 0;
342
                                         comRoue = 0;
343
                                }
344

    
345
                        }
346
                        
347
                        if(capt_detecte==22018 || capt_detecte==22020 || capt_detecte==22017) // acceleration
348
                        {
349
                                D=705; 
350
                                consigne_tour=450;
351
                                if(appui_Bp!=1)
352
                                {
353
                                        vitesse_roue = 43;
354
                                        comRoue = -k2*error2;
355
                                }
356
                                else if (appui_Bp)
357
                                {
358
                                        vitesse_roue = 0;
359
                                         comRoue = 0;
360
                                }
361
                        }
362
                        
363
                        if (capt_detecte==30463 || capt_detecte==16899 || capt_detecte==30216 ) // Decceleration apres saut
364
                        {
365
                                D=705; 
366
                                consigne_tour=450;
367
                                if(appui_Bp!=1)
368
                                {
369
                                        vitesse_roue = 10;
370
                                        comRoue = -k2*error2 ;
371
                                }
372
                                else if (appui_Bp)
373
                                {
374
                                        vitesse_roue = 0;
375
                                         comRoue = 0;
376
                                }
377

    
378
                        }
379
                }
380
                dly_tsk(5);
381
        }
382
}
383

    
384
void piste_verte_bleue() // Tache d?di?e ? la piste rouge // ? enlever pour la piste bleue 
385
{
386
        while (1)
387
        {
388
                if(num_piste==256 || num_piste==512) // course normale
389
                {
390
                        D=705; // PARTIE QUE JAI MODIFIER POUR TEST Dinit = 705 et consigne tourelle= 450 et Vitesses_roue=35 :CODE FONCTIONNEL
391
                        consigne_tour=450;
392
                        
393
                        if(appui_Bp!=1)        
394
                        {
395
                                comRoue = -k2*error2 ;
396
                                vitesse_roue = 35;        
397
                        } 
398
                        else if (appui_Bp) 
399
                        {
400
                                        vitesse_roue = 0;
401
                                        comRoue = 0 ;
402
                        }
403
                }
404
                dly_tsk(10);
405
        }
406
}
407

    
408
void envoie_comm_v()
409
{
410
        while(1)
411
        {
412
                if(appui_Bp!=1)
413
                        {
414
                                if(num_piste==256 || num_piste==512)
415
                                {        
416
                                        comRoue = -k2*error2 ;
417
                                        vitesse_roue = 35;        
418
                                } 
419
                                
420
                                if (num_piste==768 || num_piste==1024)
421
                                {
422
                                        if(capt_detecte!=22019)
423
                                                {
424
                                                        vitesse_roue = 20;
425
                                                         comRoue = -k2*error2 ;        
426
                                                }
427
                                                else if (capt_detecte==22019)
428
                                                {
429
                                                        vitesse_roue = 45;
430
                                                         comRoue = 1 ;
431
                                                }
432
                                }
433
                        }
434
        
435
                dly_tsk(5);
436
        }
437
}
438

    
439
void arret_urgence()
440
{
441
        while(1)
442
        {
443
                 if (appui_Bp) 
444
                        {
445
                                if(num_piste==256 || num_piste==512)
446
                                {
447
                                        vitesse_roue = 0;
448
                                        comRoue = 0 ;
449
                                }
450
                                
451
                                if (num_piste==768 )
452
                                {
453
                                        if(capt_detecte!=22019)
454
                                        {
455
                                                vitesse_roue = 0;
456
                                                 comRoue = 0 ;        
457
                                        }
458
                                        else if (capt_detecte==22019)
459
                                        {
460
                                                vitesse_roue = 0;
461
                                                 comRoue = 0;
462
                                        }
463
                                }
464
                        }
465
                dly_tsk(5);
466
        }
467
}
468

    
469

    
470
void appui() // Detection de bouton poussoir droit
471
{
472
        while(1)
473
        {
474
                LED_R=0 ;
475
                if(Bp_G==1)
476
                {
477
                                LED_R=1;
478
                                if (LED_R==1) appui_Bp = 1; 
479
                }
480
                else appui_Bp = 0 ;
481
                dly_tsk(5);
482
        }
483
}
484

    
485
void mode_de_course() // detecteur de pistes
486
{
487
        while (1)
488
        {
489
                requete.data.id = 'M' ; 
490
                requete.data.rtr = 1 ;
491
                snd_dtq(CanTx, requete.msg);
492
                dly_tsk(5) ;
493
                mode_course = periph[ADDR('M')].val;
494
                num_piste = (mode_course<<8) ; // verte = 256 ; bleu = 512 ; rouge = 768 ; rouge = 1024 ; 
495
                depart = (mode_course)&0x8000 ;/*(mode_course>>15)*/;
496
                depart = depart>>15 ; 
497
                dly_tsk(5) ;
498
        }
499
}
500

    
501

    
502
void piste()
503
{
504
        while (1)
505
        {
506
                dly_tsk(1) ;
507
                switch(num_piste)
508
                {
509
                        case 256: couleur=1;
510
                        break;
511
                        case 512: couleur=2;
512
                        break;
513
                        case 768: couleur=3;
514
                        break;
515
                        case 1024: couleur=4;
516
                        break;
517
                }
518
                dly_tsk(5);
519
        }
520
}
521

    
522
void p_noire()
523
{
524
        while (1)
525
        {
526
                if (num_piste==1024)
527
                { 
528
                        LED_R=0;
529
                        if(capt_detecte!=30272 || capt_detecte!=30336  || capt_detecte!=30212 || capt_detecte!=30216 || capt_detecte!=22020 || capt_detecte!=22019 || capt_detecte!=22018 || capt_detecte!=22017 || capt_detecte!=30224 || capt_detecte!=30216 /*  || capt_detecte!=18945*/) // course normale
530
                        {
531
                                D=705; 
532
                                consigne_tour=450;
533
                                if(appui_Bp!=1)
534
                                {
535
                                        vitesse_roue = 15;
536
                                        comRoue = -k2*error2;
537
                                }
538
                                else if (appui_Bp)
539
                                {
540
                                        vitesse_roue = 0;
541
                                         comRoue = 0;
542
                                }
543
                        }
544
                        
545
                         if (capt_detecte==30272 ||capt_detecte==22017 ) // d?part piste noire sur le cot? gauche 
546
                        {
547
                                D=505; 
548
                                consigne_tour=-450;
549
                                if(appui_Bp!=1)
550
                                {
551
                                        vitesse_roue = 12;
552
                                        comRoue = k2*error2;
553
                                }
554
                                else if (appui_Bp)
555
                                {
556
                                        vitesse_roue = 0;
557
                                         comRoue = 0;
558
                                }
559
                        }
560
                        
561
                                        
562
                        if (capt_detecte==30224) // preparation au road riding ok
563
                        {
564
                                D=400; 
565
                                consigne_tour=450;
566
                                if(appui_Bp!=1)
567
                                {
568
                                        vitesse_roue = 5;
569
                                        comRoue = -k2*error2;
570
                                }
571
                                else if (appui_Bp)
572
                                {
573
                                        vitesse_roue = 0;
574
                                         comRoue = 0;
575
                                }
576

    
577
                        }
578
                        
579
                        if (capt_detecte==30216) // preparation au road riding ok 
580
                        {
581
                                D=230; 
582
                                consigne_tour=450;
583
                                if(appui_Bp!=1)
584
                                {
585
                                        vitesse_roue = 5;
586
                                        comRoue = -k2*error2;
587
                                }
588
                                else if (appui_Bp)
589
                                {
590
                                        vitesse_roue = 0;
591
                                         comRoue = 0;
592
                                }
593

    
594
                        }
595
                        
596
                        if (capt_detecte==22018) // road riding
597
                        {
598
                                D=150; 
599
                                consigne_tour=450;
600
                                if(appui_Bp!=1)
601
                                {
602
                                        vitesse_roue = 10;
603
                                        comRoue = -k2*error2;
604
                                }
605
                                else if (appui_Bp)
606
                                {
607
                                        vitesse_roue = 0;
608
                                         comRoue = 0;
609
                                }
610

    
611
                        }
612
                        
613
                        if (capt_detecte==30210) // road riding acceleree
614
                        {
615
                                D=150; 
616
                                consigne_tour=450;
617
                                if(appui_Bp!=1)
618
                                {
619
                                        vitesse_roue = 17;
620
                                        comRoue = -k2*error2;
621
                                }
622
                                else if (appui_Bp)
623
                                {
624
                                        vitesse_roue = 0;
625
                                         comRoue = 0;
626
                                }
627

    
628
                        }
629
                        if (capt_detecte==30212) // SAut piste noire
630
                        {
631
                                D=705; 
632
                                consigne_tour=450;
633
                                if(appui_Bp!=1)
634
                                {
635
                                        vitesse_roue = 42; // Vitesse saut
636
                                        comRoue = 0/* -k2*error2*/;
637
                                }
638
                                else if (appui_Bp)
639
                                {
640
                                        vitesse_roue = 0;
641
                                         comRoue = 0;
642
                                }
643

    
644
                        }
645
                        
646
                        if (capt_detecte==20994 ||capt_detecte ==22019) // SAut piste noire
647
                        {
648
                                D=705; 
649
                                consigne_tour=450;
650
                                if(appui_Bp!=1)
651
                                {
652
                                        vitesse_roue = 25; // Vitesse saut
653
                                        comRoue =  -k2*error2;
654
                                }
655
                                else if (appui_Bp)
656
                                {
657
                                        vitesse_roue = 0;
658
                                         comRoue = 0;
659
                                }
660

    
661
                        }
662
                        
663
                        if (capt_detecte==30209) // decceleration apres saut
664
                        {
665
                                D=705; 
666
                                consigne_tour=450;
667
                                if(appui_Bp!=1)
668
                                {
669
                                        vitesse_roue = 10; // Vitesse saut
670
                                        comRoue =  -k2*error2;
671
                                }
672
                                else if (appui_Bp)
673
                                {
674
                                        vitesse_roue = 0;
675
                                         comRoue = 0;
676
                                }
677

    
678
                        }
679
                        
680
                        if (capt_detecte==22020) // Zone de turbulence 
681
                        {
682
                                D=705; 
683
                                consigne_tour=450;
684
                                if(appui_Bp!=1)
685
                                {
686
                                        vitesse_roue = 10; // 
687
                                        comRoue = -k2*error2;
688
                                }
689
                                else if (appui_Bp)
690
                                {
691
                                        vitesse_roue = 0;
692
                                         comRoue = 0;
693
                                }
694

    
695
                        }
696
                        
697
                }
698
                dly_tsk(5);
699
        }
700
}
701

    
702

    
703
void temps_course() // Temps reel de course 
704

    
705
{
706
        while (1)
707
        {
708
                requete.data.id = 'H' ; 
709
                requete.data.rtr = 1 ;
710
                snd_dtq(CanTx, requete.msg);
711
                dly_tsk(5) ;
712
                temps = periph[ADDR('H')].val;
713
                
714
                dly_tsk(10) ;
715
        }
716
}