Révision 378
Ajouté par anmaincent il y a plus de 6 ans
branch/maincent/tp_info6/Emb_App/programme_principal_etud.c | ||
---|---|---|
short piste1;
|
||
short selecpiste;
|
||
short modecourse;
|
||
short feuvert;
|
||
void piste(){ //detecte la couleur de la piste
|
||
while(1)
|
||
{
|
||
... | ... | |
wai_flg (ev_periph, 0x04, TWF_ANDW, &flag);
|
||
piste1=periph[ADDR('M')].val;
|
||
selecpiste = piste1 & 0x00FF;
|
||
modecourse = piste1 & 0xFF00;
|
||
modecourse = piste1 & 0x7F00;
|
||
feuvert = piste1 & 0x8000;
|
||
dly_tsk(25);
|
||
}
|
||
}
|
||
short even;
|
||
short tourterm;
|
||
void evenement(){ //detecte la couleur de la piste
|
||
while(1)
|
||
{
|
||
//lecture de levenement
|
||
CanFrame requet;
|
||
UINT flag;
|
||
requet.data.id='E'; //lecture des evenements
|
||
requet.data.rtr=1; //indique une lecture
|
||
periph[ADDR('E')].ev=0x05;
|
||
snd_dtq(CanTx, requet.msg);
|
||
|
||
//Attente de la reponse
|
||
wai_flg (ev_periph, 0x05, TWF_ANDW, &flag);
|
||
even=periph[ADDR('E')].val;
|
||
tourterm=even & 0x0020;
|
||
dly_tsk(25);
|
||
}
|
||
}
|
||
|
||
|
||
short capteur;
|
||
void zone(){ // vrai pour toutes les pistes
|
||
while(1)
|
||
... | ... | |
{
|
||
distance1=distance; //cas normal: si on est au milieu de la piste angle des roues ? 0
|
||
}
|
||
comm.data.val=s*(distance1-145);
|
||
comm.data.val=s*(distance1-147);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(5);
|
||
}
|
||
... | ... | |
|
||
}
|
||
|
||
|
||
short nbtour;
|
||
void vitesse(){
|
||
|
||
dly_tsk(5000);
|
||
... | ... | |
//commande vitesse vehicule
|
||
requete.data.id='V';
|
||
requete.data.rtr=0; //indique une ecriture
|
||
switch (selecpiste){
|
||
case 0x0001 : // pour piste verte
|
||
|
||
if (capteur == 0x5602 || capteur == 0x5603 || capteur == 0x5604 || capteur == 0x5605 || capteur == 0x5601 )
|
||
{
|
||
requete.data.val=70; // ligne droite
|
||
}
|
||
else
|
||
{
|
||
requete.data.val=40; //virage
|
||
}
|
||
break;
|
||
if (p0_4==1 && ( modecourse == 0x0300 || modecourse == 0x0200 || nbtour > 4 ))
|
||
{
|
||
switch (selecpiste)
|
||
{
|
||
case 0x0001 : // pour piste verte
|
||
|
||
case 0x0002 : // pour piste bleu
|
||
if (capteur == 0x5602 || capteur == 0x5603 || capteur == 0x5604 || capteur == 0x5605 )
|
||
{
|
||
requete.data.val=100; // ligne droite
|
||
}
|
||
|
||
else if (capteur == 0x5601 )
|
||
{
|
||
requete.data.val=100; // pr? virage
|
||
nbtour = nbtour +1;
|
||
}
|
||
else if (capteur == 0x6aff )
|
||
{
|
||
requete.data.val=60; // pr? virage
|
||
}
|
||
else if (capteur == 0x6a00 )
|
||
{
|
||
requete.data.val=85; // pr? virage
|
||
}
|
||
else
|
||
{
|
||
requete.data.val=40; //virage
|
||
}
|
||
break;
|
||
|
||
case 0x0002 : // pour piste bleu
|
||
|
||
if (capteur == 0x5602 || capteur == 0x5603 || capteur == 0x5605 || capteur == 0x5601 )
|
||
{
|
||
requete.data.val=60; // ligne droite
|
||
}
|
||
else if (capteur == 0x5604)
|
||
{
|
||
requete.data.val=50; //bosse
|
||
}
|
||
else
|
||
{
|
||
requete.data.val=25; //virage
|
||
}
|
||
break;
|
||
if (capteur == 0x5602 || capteur == 0x5603 || capteur == 0x5605 || capteur == 0x5601 )
|
||
{
|
||
requete.data.val=60; // ligne droite
|
||
}
|
||
else if (capteur == 0x5604)
|
||
{
|
||
requete.data.val=50; //bosse
|
||
}
|
||
else
|
||
{
|
||
requete.data.val=25; //virage
|
||
}
|
||
break;
|
||
|
||
case 0x0003 : // pour piste rouge
|
||
if (capteur == 0x5602 || capteur == 0x5603 || capteur == 0x5604 || capteur == 0x5605)
|
||
{
|
||
requete.data.val=60; // ligne droite
|
||
}
|
||
else if (capteur == 0x6aff)
|
||
{
|
||
requete.data.val=45; //bosse
|
||
}
|
||
else if (capteur == 0x5601)
|
||
{
|
||
requete.data.val=35; // petit virage entr?e
|
||
}
|
||
else if (capteur == 0x4203)
|
||
{
|
||
requete.data.val=10; // virage apr?s saut
|
||
}
|
||
else
|
||
{
|
||
requete.data.val=25; //virage
|
||
}
|
||
break;
|
||
|
||
case 0x0004 : // pour piste noir
|
||
if ( capteur == 0x5603 || capteur == 0x5605)
|
||
case 0x0003 : // pour piste rouge
|
||
if (capteur == 0x5602 || capteur == 0x5603 || capteur == 0x5604 || capteur == 0x5605)
|
||
{
|
||
requete.data.val=50; // ligne droite
|
||
requete.data.val=60; // ligne droite
|
||
}
|
||
else if (capteur == 0x6afd || capteur == 0x6afe)
|
||
else if (capteur == 0x6aff)
|
||
{
|
||
requete.data.val=20; //bosse
|
||
requete.data.val=45; //bosse
|
||
}
|
||
else if (capteur == 0x5601)
|
||
{
|
||
requete.data.val=35; // petit virage entr?e
|
||
}
|
||
else if (capteur == 0x6aff)
|
||
{
|
||
requete.data.val=43; // virage apr?s saut
|
||
}
|
||
else if (capteur == 0x4203)
|
||
{
|
||
requete.data.val=10; // virage apr?s saut
|
||
}
|
||
else
|
||
{
|
||
requete.data.val=15; //virage
|
||
requete.data.val=25; //virage
|
||
}
|
||
break;
|
||
|
||
break;
|
||
|
||
case 0x0004 : // pour piste noir
|
||
if ( capteur == 0x5603 || capteur == 0x5605)
|
||
{
|
||
requete.data.val=50; // ligne droite
|
||
}
|
||
else if (capteur == 0x6afd || capteur == 0x6afe)
|
||
{
|
||
requete.data.val=20; //bosse
|
||
}
|
||
else if (capteur == 0x5601)
|
||
{
|
||
requete.data.val=35; // petit virage entr?e
|
||
}
|
||
else if (capteur == 0x6aff)
|
||
{
|
||
requete.data.val=43; // virage apr?s saut
|
||
}
|
||
else if (capteur == 0x4203)
|
||
{
|
||
requete.data.val=10; // virage apr?s saut
|
||
}
|
||
else
|
||
{
|
||
requete.data.val=15; //virage
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
requete.data.val=0;
|
||
}
|
||
|
||
// requete.data.val=25; //vitesse constante
|
||
|
||
... | ... | |
|
||
|
||
sta_tsk(ID_piste);
|
||
sta_tsk(ID_even);
|
||
sta_tsk(ID_tourelle);
|
||
sta_tsk(ID_dist);
|
||
sta_tsk(ID_roue);
|
||
... | ... | |
while(1)
|
||
{
|
||
|
||
dly_tsk(800);
|
||
dly_tsk(800);
|
||
LED_V =1;
|
||
|
||
|
||
}
|
||
}
|
branch/maincent/tp_info6/Emb_App/conf_noyau.cfg | ||
---|---|---|
|
||
|
||
task[]{
|
||
entry_address = evenement();
|
||
name = ID_even;
|
||
stack_size = 512;
|
||
stack_section = stack;
|
||
priority = 5;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
|
||
|
||
task[]{
|
||
entry_address = tourelle();
|
||
name = ID_tourelle;
|
||
stack_size = 512;
|
Formats disponibles : Unified diff
amelioration programme et vitesse vert