Revision 226

View differences:

branch/font/Emb_App/SessionM32C_E8a_system.ini
25 25
[Target]
26 26
M32C E8a SYSTEM=Renesas Communications
27 27
[USER_DATA]
28
RESET=ff0022
28
RESET=ff0026
branch/font/Emb_App/programme_principal_etud.c
119 119
//				disponible. 0xab avec a-> nombre de couleurs bien plac?es et b -> couleurs pr?sentes mais mal plac?es.
120 120
//'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
121 121
//				correspondant au nom du v?hicule si le nom se termine par '*'
122

  
123
#define green	0x0056
124
#define red		0x0052
125
#define blue	0x0043
126
#define cyan	0x0042
122 127

  
123 128
const int distance_bord = 700;		//distance du bord souhait?e
124 129
const int angle_tourelle = 450;		//angle tourelle souhait?
125 130
int alpha;							//angle tourelle
126 131
int distance;						//distance du bord mesur?e
127 132
int distance1;
128
int vitesse = 65;					//vitesse souhait?e
133
int vitesse = 45;					//vitesse souhait?e
129 134
int vitesse_virage = 25;			//vitesse pendant un virage souhait?e
130 135
int angle_roue;				
131 136
int kroue = 1;
......
133 138
int num_piste;
134 139
int num_piste1;
135 140
int capteur;
136
int couleur_capteur;
141
int f_capt;
142
int s_capt;
143
int a = 0;
144
char saut = 0;
137 145

  
138 146
void lecture_telemetre(){
139 147
	CanFrame reponsed, requeted;
......
168 176
		wai_flg(ev_periph, 0x03, TWF_ANDW, &flag);	//Attente de lecture de l'angle des roues
169 177
		
170 178
		comm.data.rtr = 0;
171
		angle_roue = kroue * (distance - distance_bord);	//Asservissement de l'angle
179
		if(saut == 0) angle_roue = kroue * (distance - distance_bord);	//Asservissement de l'angle
180
		else angle_roue = 0;
172 181
		comm.data.val = angle_roue;
173 182
		snd_dtq(CanTx, comm.msg);
174 183
		dly_tsk(5);		
......
208 217
	snd_dtq(CanTx, requete.msg);
209 218
	wai_flg(ev_periph, 0x04, TWF_ANDW, &flag); //Attente de la r?ponse
210 219
	num_piste = periph[ADDR('M')].val;	//acquisition num?ro piste
220
	num_piste1 = num_piste && 0x0fff;
211 221
}
212 222

  
213 223
void lecture_capteur(){
......
222 232
		snd_dtq(CanTx, requete.msg);
223 233
		wai_flg(ev_periph, 0x05, TWF_ANDW, &flag); //Attente de la r?ponse
224 234
		capteur = periph[ADDR('C')].val;	//acquisition du dernier capteur franchi
225
		couleur_capteur = capteur >> 8;
226 235
		dly_tsk(5);
227 236
	}
228 237
}
229 238

  
230 239
void gestion_saut (){
231

  
240
	CanFrame comm;
232 241
	
242
	while(1){
243
		if(num_piste1 == 1){ //d?tection piste rouge
244
			if( capteur == 0x5603 ){
245
				saut = 1;
246
			}	
247
			else {
248
				saut = 0;
249
			}
250
		}
251
		dly_tsk(2);
252
	}
233 253
}
234 254

  
235 255

  
......
271 291
    can_init();
272 292
    clavier_init(1);
273 293
	capture_init();
274

  
294
	
275 295
	sta_tsk(ID_periph_rx);
276 296
	sta_tsk(ID_lecture_piste);
277 297
	sta_tsk(ID_lecture_capteur);
......
279 299
	sta_cyc(ID_acqui);
280 300
	sta_tsk(ID_tsk_asserv1);
281 301
	sta_tsk(ID_lecture_telemetre);
282
	sta_tsk(ID_asservissement_roue);
302
	sta_tsk(ID_asservissement_roue);
303
	sta_tsk(ID_gestion_saut);
283 304
    
284 305
	while(1)
285 306
    {
branch/font/Emb_App/conf_noyau.cfg
77 77
	name	= ID_lecture_telemetre;
78 78
	stack_size	= 512;
79 79
	stack_section	= stack;
80
	priority	= 4;
80
	priority	= 3;
81 81
	initial_start	= OFF;
82 82
	exinf	= 0x0;
83 83
};
......
87 87
	name	= ID_asservissement_roue;
88 88
	stack_size	= 512;
89 89
	stack_section	= stack;
90
	priority	= 4;
90
	priority	= 3;
91 91
	initial_start	= OFF;
92 92
	exinf	= 0x0;
93 93
};

Also available in: Unified diff