Revision 397 branch/dupriet/Emb_App/programme_principal_etud.c

View differences:

programme_principal_etud.c
122 122

  
123 123

  
124 124

  
125
unsigned int consigne_angulaire =350;// 900;
125
unsigned int consigne_angulaire =350;// 900;		350
126 126
unsigned int alpha;
127 127
unsigned int k = 3; //gain asserv tourelle
128 128
unsigned int d;
129 129
float roue=1;
130
int celerite=50;
131
unsigned int norme= 870;//494;
130
int celerite=25;
131
unsigned int norme= 870;//494;		870
132 132
unsigned int lecturevit;
133 133
unsigned int capteur;
134 134
unsigned int compteur_tours=0;
135 135
char c[]="";
136
unsigned int piste;
136
int temps;
137 137
unsigned short STOP=0;
138 138

  
139 139
void capteur_couleur(){
......
147 147
		snd_dtq(CanTx,req.msg);
148 148
		wai_flg(ev_periph,0x01,TWF_ANDW,&flag);
149 149
		capteur=periph[ADDR('C')].val;
150
		if(compteur_tours!=0x7610
151
			&& compteur_tours!=0x7611
152
			&& compteur_tours!=0x7612
153
			&&detect_change!=capteur)		//protocole pour compter le nombre de tours
154
				{detect_change=capteur;
155
			if(compteur_tours<27){
156
				compteur_tours++;}
157
			else{STOP++;}
158
			}
150
		
151
		if(detect_change!=capteur){detect_change=capteur;
152
			if(capteur==0x5605)	//protocole pour compter le nombre de tours
153
				{//detect_change=capteur;
154
					if(compteur_tours<2){
155
						compteur_tours++;}
156
					else{STOP++;}
157
				}}
159 158
	
160 159
		switch(capteur) {
161 160
			case 0x5601:		//d?but d?tection lasers aux angles de la piste
162
				celerite=50;
161
				celerite=20;//pour passer la piste rouge
163 162
				break;
164 163
			case 0x4a01:
165 164
				celerite=25;
166 165
				break;
167 166
			case 0x5602:
168
				celerite=50;
167
				celerite=47;
169 168
				break;
170 169
			case 0x5202:
171 170
				celerite=25;
172 171
				break;
173 172
			case 0x5603:
174
				celerite=50;
173
				celerite=47;
175 174
				break;
176 175
			case 0x4203:
177 176
				celerite=25;
178 177
				break;
179 178
			case 0x5604:
180
				celerite=50;
179
				celerite=47;
181 180
				break;
182 181
			case 0x4304:
183 182
				celerite=20;
......
188 187
				break;
189 188
			
190 189
			case 0x7610:		//d?but saut piste rouge	//vert petit 16
191
				celerite=55;
190
				celerite=48;
192 191
				roue=0;
193 192
				break;
194 193
			case 0x7611:	//vert petit 17
195 194
				celerite=0;
196
				dly_tsk(1500);
197
				roue=1;
195
				
196
				roue=1;dly_tsk(1000);
198 197
				celerite=10;
199 198
				dly_tsk(800);
200 199
				celerite=20;
201 200
				break;			//fin saut piste rouge
201
			
202
			case 0x7620:
203
				norme=150;
204
				break;
202 205
		}
203 206
	dly_tsk(5);}
204 207
}
......
211 214
	CanFrame comm;
212 215
	CanFrame req;
213 216
	UINT flag;
214
	dly_tsk(1000);
217
	dly_tsk(1500);
215 218
	
216 219
	while (1){		
217 220
		req.data.id='D';
......
247 250
			comm.data.id='D';
248 251
			comm.data.rtr=0;
249 252
			comm.data.val=roue*(-norme+d);
250
			snd_dtq(CanTx,comm.msg);}
253
			snd_dtq(CanTx,comm.msg);
254
			LED_J=0;}
255
		else{
256
			LED_J=1;}
251 257
		dly_tsk(10);
252 258
	}
253 259
}
254 260

  
261
void emergency(){
262
	if(Bp_G){STOP++;}
263
}
264

  
255 265
void asserv_tourelle(){
256 266
		
257 267
		CanFrame comm;
......
275 285
		}	
276 286
}
277 287

  
278
void afficheur(){/*
288
void afficheur(){
279 289
		CanFrame req;
280 290
		UINT flag;
281 291
		while(1){
......
284 294
			periph[ADDR('H')].ev=0x01;
285 295
			snd_dtq(CanTx,req.msg);
286 296
			wai_flg(ev_periph,0x01,TWF_ANDW,&flag);
287
			piste = periph[ADDR('H')].val;
297
			temps = periph[ADDR('H')].val;
298
			sprintf(c,"%d",temps);
299
			lcd_str(c);
288 300
			dly_tsk(100);
289
			c=('%d',piste);
290
			lcd_str(c);
291
		}*/
301
			lcd_init();
302
		}
292 303
}
293 304

  
294 305
void main()
......
303 314
    clavier_init(1);
304 315
	capture_init();
305 316
	sta_tsk(ID_avancer);
306
	//sta_cyc(ID_acqui);
307
	//sta_tsk(ID_afficheur);
317
	sta_cyc(ID_acqui);
318
	sta_tsk(ID_afficheur);
308 319
	sta_tsk(ID_asserv_tourelle);
309 320
	sta_tsk(ID_asserv_direction);
310 321
	sta_tsk(ID_periph_rx);
311
	sta_tsk(ID_capteur_couleur);
322
	sta_tsk(ID_capteur_couleur);
323
	sta_tsk(ID_emergency);
312 324
    while(1)
313 325
    {
314 326
		if(STOP){
327
			celerite=0;
328
			dly_tsk(500);
315 329
			ter_tsk(ID_asserv_tourelle);
316 330
			ter_tsk(ID_asserv_direction);
317 331
			ter_tsk(ID_periph_rx);
318 332
			ter_tsk(ID_capteur_couleur);
319 333
			ter_tsk(ID_avancer);
334
			ter_tsk(ID_afficheur);
335
			stp_cyc(ID_acqui);
336
			LED_R=!LED_R;
337
			LED_J=!LED_J;
338
			LED_V=!LED_V;
320 339
			}
321 340
		/*
322 341
		dly_tsk(100);
......
330 349
}
331 350

  
332 351
void acqui()
333
{
334
	LED_V=!LED_V;
352
{	

353
	LED_R=!LED_R;
335 354
}
336 355

  

Also available in: Unified diff