Révision 367
Ajouté par anmaincent il y a plus de 6 ans
branch/maincent/tp_info6/Emb_App/programme_principal_etud.c | ||
---|---|---|
}
|
||
}
|
||
|
||
|
||
short capteur;
|
||
void zone(){ // vrai pour toutes les pistes
|
||
while(1)
|
||
{
|
||
//lecture de la zone
|
||
CanFrame requ;
|
||
UINT flag;
|
||
requ.data.id='C'; //lecture des evenements
|
||
requ.data.rtr=1; //indique une lecture
|
||
periph[ADDR('C')].ev=0x03;
|
||
snd_dtq(CanTx, requ.msg);
|
||
|
||
//Attente de la reponse
|
||
wai_flg (ev_periph, 0x03, TWF_ANDW, &flag);
|
||
capteur=periph[ADDR('C')].val;
|
||
dly_tsk(25);
|
||
}
|
||
}
|
||
|
||
|
||
short alpha;
|
||
void tourelle(){ // vrai pour toutes les pistes
|
||
while(1)
|
||
{
|
||
|
||
|
||
|
||
short k=1; //Gain du correcteur P
|
||
//lecture de la position de la tourelle
|
||
CanFrame req,comm;
|
||
... | ... | |
//Attente de la reponse
|
||
wai_flg (ev_periph, 0x01, TWF_ANDW, &flag);
|
||
alpha=periph[ADDR('R')].val;
|
||
|
||
|
||
|
||
//Commande vitesse de la tourelle
|
||
comm.data.id='T';
|
||
comm.data.rtr=0; //indique une ?criture
|
||
comm.data.val=k*(450-alpha);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(50);
|
||
//Commande vitesse de la tourelle
|
||
comm.data.id='T';
|
||
comm.data.rtr=0; //indique une ?criture
|
||
comm.data.val=k*(450-alpha);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(50);
|
||
|
||
}
|
||
}
|
||
|
||
|
||
short capteur;
|
||
void zone(){ // vrai pour toutes les pistes
|
||
while(1)
|
||
{
|
||
//lecture de la zone
|
||
CanFrame requ;
|
||
UINT flag;
|
||
requ.data.id='C'; //lecture des evenements
|
||
requ.data.rtr=1; //indique une lecture
|
||
periph[ADDR('C')].ev=0x03;
|
||
snd_dtq(CanTx, requ.msg);
|
||
|
||
//Attente de la reponse
|
||
wai_flg (ev_periph, 0x03, TWF_ANDW, &flag);
|
||
capteur=periph[ADDR('C')].val;
|
||
dly_tsk(25);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
unsigned short distance;
|
||
unsigned short distance1;
|
||
void dist(){ // vrai pour toutes les pistes
|
||
... | ... | |
|
||
else // piste noir
|
||
{
|
||
if (distance > 2000 ) // || ) //bosse piste rouge
|
||
if (capteur == 0x6afe) // 1er tonneau
|
||
{
|
||
// si trou dans la barriere ou zonesaut
|
||
|
||
if (distance > 2000 )
|
||
{
|
||
// si trou dans la barriere ou zonesaut
|
||
}
|
||
|
||
else
|
||
{
|
||
distance1=distance; //cas normal: si on est au milieu de la piste angle des roues ? 0
|
||
}
|
||
comm.data.val=s*(distance1-450);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(5);
|
||
}
|
||
else if (capteur == 0x6aff)
|
||
else if (capteur == 0x6afd) //2eme tonneau
|
||
{
|
||
|
||
// dly_tsk(1500);
|
||
|
||
}
|
||
if (distance > 2000 )
|
||
{
|
||
// si trou dans la barriere ou zonesaut
|
||
}
|
||
|
||
else
|
||
{
|
||
distance1=distance; //cas normal: si on est au milieu de la piste angle des roues ? 0
|
||
}
|
||
comm.data.val=s*(distance1-300);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(5);
|
||
}
|
||
else if (capteur == 0x4a01) // 1er virage
|
||
{
|
||
if (distance > 2000 )
|
||
{
|
||
// si trou dans la barriere ou zonesaut
|
||
}
|
||
|
||
else
|
||
{
|
||
distance1=distance; //cas normal: si on est au milieu de la piste angle des roues ? 0
|
||
}
|
||
comm.data.val=s*(distance1-250);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(5);
|
||
}
|
||
else if (capteur == 0x5602) // bosse
|
||
{
|
||
if (distance > 2000 )
|
||
{
|
||
// si trou dans la barriere ou zonesaut
|
||
}
|
||
|
||
else
|
||
{
|
||
distance1=distance; //cas normal: si on est au milieu de la piste angle des roues ? 0
|
||
}
|
||
comm.data.val=s*(distance1-145);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(5);
|
||
}
|
||
else
|
||
{
|
||
distance1=distance; //cas normal: si on est au milieu de la piste angle des roues ? 0
|
||
}
|
||
comm.data.val=s*(distance1-706);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(20);
|
||
if (distance > 2000 || capteur == 0x6aff || capteur == 0x5601 ) //bosse piste rouge
|
||
{
|
||
// si trou dans la barriere ou zonesaut
|
||
}
|
||
|
||
else
|
||
{
|
||
distance1=distance; //cas normal: si on est au milieu de la piste angle des roues ? 0
|
||
}
|
||
comm.data.val=s*(distance1-750);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(20);
|
||
}
|
||
}
|
||
|
||
|
||
... | ... | |
break;
|
||
|
||
case 0x0004 : // pour piste noir
|
||
if (capteur == 0x5602 || capteur == 0x5603 || capteur == 0x5604 || capteur == 0x5605)
|
||
if ( capteur == 0x5603 || capteur == 0x5605)
|
||
{
|
||
requete.data.val=60; // ligne droite
|
||
requete.data.val=50; // ligne droite
|
||
}
|
||
else if (capteur == 0x6aff)
|
||
else if (capteur == 0x6afd || capteur == 0x6afe)
|
||
{
|
||
requete.data.val=45; //bosse
|
||
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=25; //virage
|
||
requete.data.val=15; //virage
|
||
}
|
||
break;
|
||
|
Formats disponibles : Unified diff
circuit noir terminé avec une facilité déconcertante