Révision 299
Ajouté par codiagne il y a plus de 6 ans
branch/diagne/Emb_App/programme_principal_etud.c | ||
---|---|---|
|
||
short alpha;
|
||
short vitesse, longueur;
|
||
short distance, new_distance;
|
||
short distance, new_distance, capt;
|
||
|
||
void Asserv0(){
|
||
|
||
... | ... | |
|
||
}
|
||
|
||
//Pour lire les valeurs des capteurs
|
||
|
||
void Capteur(){
|
||
CanFrame req;
|
||
UINT flag;
|
||
while(1)
|
||
{
|
||
req.data.id='C';
|
||
req.data.rtr=1; //Lecture de la valeur du capteur
|
||
periph[ADDR('C')].ev=0x03;
|
||
snd_dtq(CanTx,req.msg);
|
||
wai_flg(ev_periph, 0x03, TWF_ANDW,&flag);
|
||
capt=periph[ADDR('C')].val;
|
||
dly_tsk(100);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
|
||
void regulation_roue(){
|
||
CanFrame req,reponse,comm;
|
||
UINT flag;
|
||
... | ... | |
{
|
||
req.data.id='U'; //lecture distance mesur?e par le t?l?metre
|
||
req.data.rtr=1; //requ?te de lecture
|
||
snd_dtq(CanRx, req.msg);
|
||
snd_dtq(CanTx, req.msg);
|
||
|
||
//Attente de la r?ponse
|
||
|
||
... | ... | |
comm.data.rtr=0;
|
||
//Pour la piste verte: comm.data.val= -(450-distance)
|
||
|
||
//Pour eviter les trous de la piste bleue et garder le vehicule au milieu de la piste
|
||
//Pour eviter les trous de la piste bleue et garder le vehicule au milieu de la piste
|
||
|
||
if (distance >1000){ //On compare la distance mesur?e par le telemtetre
|
||
new_distance=715;
|
||
}
|
||
else {
|
||
new_distance=distance;
|
||
}
|
||
comm.data.val=1*(new_distance-715); // On la garde bien au milieu de la piste
|
||
if (capt=0x5603) //valeur du 3eme capteur vert
|
||
{
|
||
new_distance=715;
|
||
|
||
}
|
||
|
||
snd_dtq(CanTx,comm.msg);
|
||
dly_tsk(100);
|
||
else
|
||
{
|
||
if (distance >1000)//On compare la distance mesur?e par le telemtetre
|
||
|
||
{
|
||
new_distance=715;
|
||
}
|
||
|
||
else {
|
||
|
||
new_distance=distance;
|
||
|
||
}
|
||
}
|
||
|
||
comm.data.val=1*(new_distance-715); // On la garde bien au milieu de la piste
|
||
|
||
snd_dtq(CanTx,comm.msg);
|
||
dly_tsk(100);
|
||
}
|
||
}
|
||
|
||
|
||
void roue_piste_rouge()
|
||
{
|
||
|
||
}
|
||
void Avancer(){
|
||
CanFrame req;
|
||
dly_tsk(6000);
|
||
req.data.id='V';
|
||
req.data.rtr=0;
|
||
req.data.val=15;
|
||
snd_dtq(CanTx,req.msg);
|
||
|
||
while(1)
|
||
{
|
||
CanFrame req;
|
||
req.data.id='V';
|
||
req.data.rtr=0;
|
||
if (capt=0x5603)
|
||
{
|
||
req.data.val=45;
|
||
}
|
||
else
|
||
{
|
||
req.data.val=15;
|
||
}
|
||
snd_dtq(CanTx,req.msg);
|
||
}
|
||
}
|
||
|
||
|
||
... | ... | |
sta_tsk(ID_periph_rx);
|
||
sta_tsk(ID_Asserv0);
|
||
sta_tsk(ID_Avancer);
|
||
sta_tsk(ID_roue);
|
||
|
||
sta_tsk(ID_roue);
|
||
sta_tsk(ID_capteur);
|
||
// sta_tsk(ID_roue_rouge);
|
||
|
||
while(1)
|
||
{
|
||
|
||
{
|
||
LED_J=1;
|
||
dly_tsk(100);
|
||
LED_J=0;
|
||
dly_tsk(100);
|
||
}
|
||
}
|
||
|
||
}
|
||
|
branch/diagne/Emb_App/conf_noyau.cfg | ||
---|---|---|
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
|
||
task[]{
|
||
entry_address = Avancer();
|
||
name = ID_Avancer;
|
||
... | ... | |
exinf = 0x0;
|
||
};
|
||
|
||
task[]{
|
||
entry_address = Capteur();
|
||
name = ID_capteur;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority =8;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
|
||
task[]{
|
||
entry_address = roue_piste_rouge();
|
||
name = ID_roue_rouge;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority =8;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
|
||
flag[]{
|
||
name = ev_bus_fin_tr;
|
||
initial_pattern = 0x0000;
|
Formats disponibles : Unified diff
Piste rouge entammée, reste à etre achevée