Projet

Général

Profil

« Précédent | Suivant » 

Révision 370

Ajouté par jotoribio il y a plus de 6 ans

J'arrive à passer la piste noire et à faire un arret d'urgence

Voir les différences:

branch/toribio/Emb_App.tws
"E:\tp_info6_2018_toribio\tp_info6\Emb_App\Debug\mr308.inc"
"E:\tp_info6_2018_toribio\tp_info6\Emb_App\programme_principal_etud.c"
[WORKSPACE_FILE_STATES]
"E:\tp_info6_2018_toribio\tp_info6\Emb_App\Debug\mr308.inc" 50 50 1430 351 0 2
"E:\tp_info6_2018_toribio\tp_info6\Emb_App\conf_noyau.cfg" 75 75 1430 351 0 3
"E:\tp_info6_2018_toribio\tp_info6\Emb_App\crt0mr.a30" 25 25 1430 351 0 1
"E:\tp_info6_2018_toribio\tp_info6\Emb_App\Debug\mr308.inc" 50 50 1430 351 0 3
"E:\tp_info6_2018_toribio\tp_info6\Emb_App\conf_noyau.cfg" 75 75 1430 351 0 1
"E:\tp_info6_2018_toribio\tp_info6\Emb_App\crt0mr.a30" 25 25 1430 351 0 2
"E:\tp_info6_2018_toribio\tp_info6\Emb_App\programme_principal_etud.c" -8 -30 1596 539 1 0
"E:\tp_info6_2018_toribio\tp_info6\bsp\periph.c" 100 100 1430 351 0 4
"E:\tp_info6_2018_toribio\tp_info6\bsp\uart0.c" 125 125 1430 351 0 5
"E:\tp_info6_2018_toribio\tp_info6\bsp\periph.c" 100 100 1430 351 0 5
"E:\tp_info6_2018_toribio\tp_info6\bsp\uart0.c" 75 75 1430 351 0 4
[LOADED_PROJECTS]
"EmbM32C87App"
[END]
branch/toribio/Emb_App/programme_principal_etud.c
comm.data.rtr=0; //indique une ?criture
comm.data.val=k*(450/*ou ad00*/-alpha);
snd_dtq(CanTx, comm.msg);
dly_tsk(5);
dly_tsk(15);
}
}
......
//Attente de la r?ponse
wai_flg (ev_periph, 0x02, TWF_ANDW, &flag);
distance=periph[ADDR('U')].val;
dly_tsk(5);
dly_tsk(15);
}
}
......
//lecture de la position de la roue
CanFrame req,comm;
UINT flag;
if ((sauter==0) && (noir!=1)){
if ((sauter==0) && (noir==0)){
//Commande de l'angle de roue en zone normal
comm.data.id='D';
comm.data.rtr=0; //indique une ?criture
......
snd_dtq(CanTx, comm.msg);
dly_tsk(5);
}
if ((sauter==3) && (noir!=1)){
else if ((sauter==3)){
//Commande de l'angle de roue en zone normal
comm.data.id='D';
comm.data.rtr=0; //indique une ?criture
......
snd_dtq(CanTx, comm.msg);
dly_tsk(5);
}
else if ((sauter==1) || (noir==2)){
else if ((sauter==1)){
//Commande de l'angle de roue
comm.data.id='D';
comm.data.rtr=0; //indique une ?criture
......
dly_tsk(5);
}
else if ((sauter==0) && (noir==1)){
//Commande de l'angle de roue
//Zone des tonneaux
comm.data.id='D';
comm.data.rtr=0; //indique une ?criture
if (distance<600) comm.data.val=0;
else if (distance>600) {
if (distance>2000);
else comm.data.val=k*(distance-900);
}
comm.data.val=0;
snd_dtq(CanTx, comm.msg);
dly_tsk(5);
}
else if ((sauter==0) && (noir==2)){
comm.data.id='D';//zone de passage avant pont piste noire
comm.data.rtr=0;
k=1;
if (distance>2000);
else comm.data.val=k*(distance-300);
snd_dtq(CanTx, comm.msg);
dly_tsk(5);
}
else if ((sauter==0) && (noir==3)){
comm.data.id='D';//zone de passage avant pont piste noire
comm.data.rtr=0;
k=1;
if (distance>2000);
else comm.data.val=k*(distance-250);
snd_dtq(CanTx, comm.msg);
dly_tsk(5);
}
else if ((sauter==0) && (noir==4)){
comm.data.id='D';//zone de passage du pont piste noire
comm.data.rtr=0;
k=1;
if (distance>2000);
else comm.data.val=k*(distance-150);
snd_dtq(CanTx, comm.msg);
dly_tsk(5);
}
else if ((sauter==0) && (noir==5)){
comm.data.id='D';//zone apr?s passage du pont piste noire
comm.data.rtr=0;
k=2;
if (distance>2000);
else comm.data.val=k*(distance-700);
snd_dtq(CanTx, comm.msg);
dly_tsk(5);
}
else if ((sauter==0) && (noir==6)){
comm.data.id='D';//zone saut piste noire
comm.data.rtr=0;
comm.data.val=0;
snd_dtq(CanTx, comm.msg);
dly_tsk(5);
}
else if ((sauter==0) && (noir==7)){
comm.data.id='D';//zone apr?s passage du pont piste noire
comm.data.rtr=0;
k=2;
if (distance>2000);
else comm.data.val=k*(distance-700);
snd_dtq(CanTx, comm.msg);
dly_tsk(5);
}
else if ((sauter==0) && (noir==8)){
comm.data.id='D';//zone en herbe du pont piste noire
comm.data.rtr=0;
k=2;
if (distance>2000);
else comm.data.val=k*(distance-700);
snd_dtq(CanTx, comm.msg);
dly_tsk(5);
}
else if ((sauter==0) && (noir==9)){
comm.data.id='D';//dernier virage piste noire
comm.data.rtr=0;
k=2;
if (distance>2000);
else comm.data.val=k*(distance-700);
snd_dtq(CanTx, comm.msg);
dly_tsk(5);
}
snd_dtq(CanTx, comm.msg);
dly_tsk(5);
}
}
......
while(1){
requete.data.id='V';
requete.data.rtr=0;
if (sauter==1){ //augmentation de la vitesse pour sauter
if (p0_4==0){ //appuie sur bouton
requete.data.val=0;
}
else if (sauter==1){ //augmentation de la vitesse pour sauter
requete.data.val=45;
}
else if ((sauter==0) && (noir==0)){
......
else if ((sauter==3) && (noir==0)){
requete.data.val=20;} //virage
else if ((sauter==0) && (noir==1)){
requete.data.val=10;} //zone des tonneaux
requete.data.val=20; //zone des tonneaux
}
else if ((sauter==0) && (noir==2)){
requete.data.val=10;} //zone avant pont
else if ((sauter==0) && (noir==3)){
requete.data.val=10;} //zone avant pont
else if ((sauter==0) && (noir==4)){
requete.data.val=10;} //zone du pont
else if ((sauter==0) && (noir==5)){
requete.data.val=12;} //zone apr?s pont
else if ((sauter==0) && (noir==6)){
requete.data.val=43;} //zone saut noir
else if ((sauter==0) && (noir==7)){
requete.data.val=12;} //zone apres saut noir
else if ((sauter==0) && (noir==8)){
requete.data.val=12;} //zone en herbe
else if ((sauter==0) && (noir==9)){
requete.data.val=12;} //dernier virage piste noir
snd_dtq(CanTx, requete.msg);
dly_tsk(5);
}
......
virage=periph[ADDR('C')].val;
numcapt=virage & 0x00ff;
virage=virage & 0xff00;
dly_tsk(5);
dly_tsk(10);
}
}
......
while(1){
if ((numcapt==2) && (virage==22016)){
noir=2; //zone de passage
noir=4; //zone de passage du pont
}
else if (numcapt==1 && virage==22016){
else if ((numcapt==1) && (virage==18944)){
noir=3; //zone de virage passage du pont
//LED_R=1;
}
else if ((numcapt==4) && (virage==17152)){
noir=9; // dernier virage
dly_tsk(5);
}
else if ((numcapt==4) && (virage==22016)){
noir=8; // on a passe la zone en herbe
dly_tsk(5);
}
else if ((numcapt==3) && (virage==16896)){
noir=7; // on a passe le saut
dly_tsk(5);
}
else if ((numcapt==3) && (virage==22016)){
dly_tsk(5000);
noir=6; // on passe le saut
dly_tsk(2000);
noir=5;
dly_tsk(3000);
}
else if ((numcapt==2) && (virage==20992)){
noir=5; // on a pass? le pont
}
else if ((numcapt==1) && (virage==22016)){
noir=1; // on passe les toneaux
}
dly_tsk(3500);
noir=2; //on passe par la droite du dernier tonneau
dly_tsk(7500);
}
else if (numcapt!=2 && virage!=22016){
noir=0; // retour ? la regulation normal
}
}
dly_tsk(5);
}
}
}
......
sta_tsk(ID_dist);
sta_tsk(ID_roue);
sta_tsk(ID_zone);
sta_tsk(ID_saut);
// sta_tsk(ID_saut);
sta_tsk(ID_pistenoire);
while(1)
while(1)
{
/* LED_J=1;
branch/toribio/Emb_App/conf_noyau.cfg
name = ID_pistenoire;
stack_size = 512;
stack_section = stack;
priority = 6;
priority = 5;
initial_start = OFF;
exinf = 0x0;

Formats disponibles : Unified diff