Projet

Général

Profil

« Précédent | Suivant » 

Révision 192

Ajouté par rococcallo il y a plus de 6 ans

commit de fin

Voir les différences:

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