Révision 192
Ajouté par rococcallo il y a plus de 6 ans
branch/Coccallotto/Emb_App/programme_principal_etud.c | ||
---|---|---|
short dismur;
|
||
short trajectoire;
|
||
short vitesse;
|
||
short reception;
|
||
float kroues;
|
||
float ktourelle;
|
||
//distance mesurer par le capteur que l'on garde en constante ici
|
||
CanFrame comm;
|
||
CanFrame requete, reponse;
|
||
CanFrame req;
|
||
|
||
|
||
void acqtourelle(void);
|
||
void acqroues(void);
|
||
void directionroues(void);
|
||
void main()
|
||
{
|
||
dismur=0x02a2; //distance mesurer par le capteur que l'on garde en constante ici
|
||
kroues=0.8; //correction pour les roues de 5;
|
||
ktourelle=1; //correction pour la tourelle de 10;
|
||
|
||
dismur=0x02af; //distance mesurer par le capteur que l'on garde en constante ici
|
||
commande=450; //commande de la valeur de la tourelle
|
||
kroues=1; //correction pour les roues de 5;
|
||
ktourelle=1.2; //correction pour la tourelle de 10;
|
||
|
||
vitesse=5; //commande de la vitesse des roues
|
||
|
||
|
||
vitesse=45; //commande de la vitesse des roues
|
||
|
||
ports_mcu();
|
||
lcd_init();
|
||
periph_init();
|
||
... | ... | |
capture_init();
|
||
|
||
sta_cyc(ID_acqui);
|
||
sta_tsk(ID_periph_rx);
|
||
|
||
sta_tsk(ID_periph_rx);
|
||
acqtourelle();
|
||
dly_tsk(1000);
|
||
while(1)
|
||
{
|
||
{
|
||
int pos;
|
||
UINT flag;
|
||
|
||
requete.data.id='R'; //demande de reception de la donner du capteur tourelle
|
||
requete.data.rtr=1;
|
||
snd_dtq (CanTx,requete.msg);
|
||
//rcv_dtq (CanRx,&reponse.msg);
|
||
alpha=(ktourelle*(commande-periph[ADDR('R')].val)); //asservissement de la commande tourelle
|
||
|
||
comm.data.id='T'; //envoie de la donner du capteur tourelle
|
||
comm.data.rtr=0;
|
||
comm.data.val=alpha; //correcteur du capteur pour l'asserviseement (ici =45?)
|
||
snd_dtq (CanTx,comm.msg);
|
||
|
||
acqtourelle();
|
||
|
||
requete.data.id='U'; //distance mesurer par le t?l?metre
|
||
requete.data.rtr=1;
|
||
snd_dtq (CanTx,requete.msg);
|
||
//rcv_dtq (CanRx,&reponse.msg);
|
||
distance=(periph[ADDR('U')].val);
|
||
if (distance>0x0500){
|
||
distance=dismur;
|
||
}
|
||
else{
|
||
trajectoire=(kroues*( distance-dismur)); //asservisement pour les roues
|
||
}
|
||
acqroues();
|
||
|
||
comm.data.id='D'; //commande des roues
|
||
comm.data.rtr=0;
|
||
comm.data.val=trajectoire; //ont applique la correction des roues
|
||
snd_dtq (CanTx,comm.msg);
|
||
|
||
comm.data.id='V'; //commande de la vitesse des roues
|
||
comm.data.rtr=0;
|
||
comm.data.val=vitesse;
|
||
snd_dtq (CanTx,comm.msg);
|
||
directionroues();
|
||
|
||
dly_tsk(10);
|
||
|
||
}
|
||
... | ... | |
{
|
||
LED_V=!LED_V;
|
||
}
|
||
|
||
void acqtourelle(void)
|
||
{
|
||
requete.data.id='R'; //demande de reception de la donner du capteur tourelle
|
||
requete.data.rtr=1;
|
||
snd_dtq (CanTx,requete.msg);
|
||
//rcv_dtq (CanRx,&reponse.msg);
|
||
reception=periph[ADDR('R')].val;
|
||
alpha=(ktourelle*(commande-reception)); //asservissement de la commande tourelle
|
||
|
||
comm.data.id='T'; //envoie de la donner du capteur tourelle
|
||
comm.data.rtr=0;
|
||
comm.data.val=alpha; //correcteur du capteur pour l'asserviseement (ici =45?)
|
||
snd_dtq (CanTx,comm.msg);
|
||
|
||
|
||
}
|
||
|
||
void acqroues(void)
|
||
{
|
||
requete.data.id='U'; //distance mesurer par le t?l?metre
|
||
requete.data.rtr=1;
|
||
snd_dtq (CanTx,requete.msg);
|
||
//rcv_dtq (CanRx,&reponse.msg);
|
||
distance=(periph[ADDR('U')].val);
|
||
|
||
if (distance>0x0500){
|
||
distance=dismur;
|
||
}
|
||
else{
|
||
trajectoire=(kroues*( distance-dismur)); //asservisement pour les roues
|
||
}
|
||
}
|
||
void directionroues(void)
|
||
{
|
||
comm.data.id='D'; //commande des roues
|
||
comm.data.rtr=0;
|
||
comm.data.val=trajectoire; //ont applique la correction des roues
|
||
snd_dtq (CanTx,comm.msg);
|
||
|
||
comm.data.id='V'; //commande de la vitesse des roues
|
||
comm.data.rtr=0;
|
||
comm.data.val=vitesse;
|
||
snd_dtq (CanTx,comm.msg);
|
||
if(distance<0x0200){
|
||
vitesse=vitesse/3;
|
||
}
|
||
}
|
Formats disponibles : Unified diff
commit de fin