Revision 366 branch/porte/Emb_App/programme_principal_etud.c
programme_principal_etud.c | ||
---|---|---|
140 | 140 |
//Variable de la fonction IHM |
141 | 141 |
short Touche_clavier; |
142 | 142 |
//Variable de la fonction Circuit |
143 |
unsigned int Info_circuit, Etat_feu, Num_circuit; |
|
143 |
unsigned int Info_circuit, Etat_feu, Num_circuit, Depart_ok=0, Arret_urgence=0;
|
|
144 | 144 |
//Variable de la fonction Evenement |
145 | 145 |
unsigned int Lecture_eve; |
146 | 146 |
FLGPTN test; |
... | ... | |
220 | 220 |
|
221 | 221 |
comm.data.id='V'; //Commande de la vitesse des roues motrices |
222 | 222 |
comm.data.rtr=0; |
223 |
|
|
224 |
|
|
225 |
if(Info_capteur == 0x560){ // Commande de vitesse pour les lignes droites (dernier capteur detecte = vert). |
|
226 |
comm.data.val=Vitesse; |
|
227 |
snd_dtq (CanTx,comm.msg); // Envoi de la commande de vitesse |
|
223 |
|
|
224 |
if(Depart_ok == 1 && Arret_urgence == 0){ |
|
225 |
if(Info_capteur == 0x560){ // Commande de vitesse pour les lignes droites (dernier capteur detecte = vert). |
|
226 |
comm.data.val=Vitesse; |
|
227 |
snd_dtq (CanTx,comm.msg); // Envoi de la commande de vitesse |
|
228 |
} |
|
229 |
else if(Info_capteur == 0x630 && Saut == 0){ //Accel?ration pour passer le saut |
|
230 |
comm.data.val=Vitesse*1.66; |
|
231 |
snd_dtq (CanTx,comm.msg); |
|
232 |
Saut=1; |
|
233 |
} |
|
234 |
else if(Info_capteur == 0x630 && Saut == 1){ //Ralentissement pour la reception du saut |
|
235 |
comm.data.val=Vitesse/2.3; |
|
236 |
snd_dtq (CanTx,comm.msg); |
|
237 |
// Saut=0; |
|
238 |
} |
|
239 |
else{ // Ralentissement en cas de virage et de d?tection de trou ou d'obstacle. |
|
240 |
comm.data.val=Vitesse/1.55; |
|
241 |
snd_dtq (CanTx,comm.msg); |
|
242 |
} |
|
228 | 243 |
} |
229 |
else if(Info_capteur == 0x630 ){ //Accel?ration pour passer le saut
|
|
230 |
comm.data.val=Vitesse*1.66;
|
|
244 |
else{
|
|
245 |
comm.data.val=0;
|
|
231 | 246 |
snd_dtq (CanTx,comm.msg); |
232 |
Saut=1; |
|
233 | 247 |
} |
234 |
else if(Info_capteur == 0x630 && Saut == 1){ //Ralentissement pour la reception du saut |
|
235 |
comm.data.val=Vitesse/2.3; |
|
236 |
snd_dtq (CanTx,comm.msg); |
|
237 |
Saut=0; |
|
238 |
} |
|
239 |
else{ // Ralentissement en cas de virage et de d?tection de trou ou d'obstacle. |
|
240 |
comm.data.val=Vitesse/1.55; |
|
241 |
snd_dtq (CanTx,comm.msg); |
|
242 |
} |
|
243 |
|
|
244 |
//lcd_str(char &Vitesse) |
|
245 | 248 |
|
246 |
dly_tsk(10); |
|
247 |
} |
|
249 |
dly_tsk(10); |
|
248 | 250 |
} |
251 |
} |
|
249 | 252 |
|
250 | 253 |
void Capteur(){ |
251 | 254 |
|
... | ... | |
297 | 300 |
|
298 | 301 |
void Commande_IHM(){ |
299 | 302 |
|
303 |
// Interface Homme Machine muni du clavier matricielle, de l'?cran LCD, |
|
304 |
// des LEDs, des potentiometre et des interrupteurs. |
|
305 |
|
|
300 | 306 |
while(1){ |
301 |
|
|
307 |
|
|
302 | 308 |
vrcv_dtq(QdmTouche, &Touche_clavier); |
303 | 309 |
|
304 | 310 |
if(Touche_clavier != 0){ |
... | ... | |
317 | 323 |
Touche_clavier=0; |
318 | 324 |
dly_tsk(100); |
319 | 325 |
} |
320 |
dly_tsk(100); |
|
321 |
} |
|
326 |
|
|
327 |
dly_tsk(100); |
|
328 |
} |
|
329 |
|
|
322 | 330 |
} |
323 | 331 |
|
332 |
void Bp_hc(){ |
|
333 |
|
|
334 |
if(Bp_G == 1){ Arret_urgence = 1;} |
|
335 |
if(Bp_G == 0){ Arret_urgence = 0;} |
|
336 |
|
|
337 |
|
|
338 |
} |
|
339 |
|
|
324 | 340 |
void Circuit(){ |
325 | 341 |
|
326 | 342 |
//'M'/77/0x7D?: Mode de course : |
... | ... | |
338 | 354 |
snd_dtq (CanTx,demande.msg); // Interrogation du peripherique sur les information du circuit. |
339 | 355 |
Info_circuit=periph[ADDR('M')].val; |
340 | 356 |
Num_circuit=Info_circuit & 0x000F; |
341 |
Etat_feu=Info_circuit >> 15; // contient la valeur de retour du simulateur sur l'?tat du feu. |
|
357 |
Etat_feu=Info_circuit >> 15; // contient la valeur de retour du simulateur sur l'?tat du feu tricolore.
|
|
342 | 358 |
|
359 |
if( Etat_feu == 1){ Depart_ok = 1;} // Passe la variable permettant le d?part ? 1. |
|
343 | 360 |
dly_tsk(200); |
344 | 361 |
} |
345 | 362 |
|
... | ... | |
356 | 373 |
|
357 | 374 |
wai_flg(event,(FLGPTN) 0x0800, TWF_ANDW,&test); |
358 | 375 |
|
359 |
dly_tsk(200);
|
|
376 |
dly_tsk(800);
|
|
360 | 377 |
} |
361 | 378 |
|
362 | 379 |
} |
... | ... | |
388 | 405 |
sta_tsk(ID_Distance_bord); |
389 | 406 |
|
390 | 407 |
sta_tsk(ID_Commande_IHM); |
408 |
sta_cyc(ID_Bp_hc); |
|
391 | 409 |
|
392 | 410 |
sta_tsk(ID_Circuit); |
393 | 411 |
|
Also available in: Unified diff