Revision 366 branch/porte/Emb_App/programme_principal_etud.c

View differences:

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