Révision 60
Ajouté par maporte3 il y a plus de 6 ans
branch/porte/Emb_App/SessionM32C_E8a_system.ini | ||
---|---|---|
[Target]
|
||
M32C E8a SYSTEM=Renesas Communications
|
||
[USER_DATA]
|
||
RESET=ff0032
|
||
RESET=ff0038
|
branch/porte/Emb_App/programme_principal_etud.c | ||
---|---|---|
unsigned int Consigne_T=450; //Consigne de l'angle de la tourelle
|
||
unsigned int valeur=0; //valeur transmise corrig?
|
||
unsigned int Somme_Erreur=0, Erreur=0, Delta_Erreur=0, Erreur_pre=0;
|
||
int Kp=2, Kpr=1;
|
||
int Ki=7;
|
||
int Kd=2;
|
||
unsigned int Vitesse=2,Distance;
|
||
int Kp=3, Kpr=1;
|
||
int Ki=9;
|
||
int Kd=1, Kdr=1;
|
||
unsigned int Vitesse=0,Distance;
|
||
unsigned int Angle_R=0;
|
||
unsigned int ErreurRoues=0;
|
||
unsigned int ErreurRoues=0, ErreurRouesPre=0, Delta_ErreurRoues=0;
|
||
|
||
void Asserv_T(){
|
||
|
||
... | ... | |
demande.data.rtr=1;
|
||
|
||
snd_dtq (CanTx,demande.msg); // Interrogation du peripherique
|
||
rcv_dtq (CanRx,&reponse.msg); // Attente de la reponse
|
||
alpha=reponse.data.val; // contient la valeur de retour du simulateur.
|
||
alpha=periph[ADDR('R')].val; // contient la valeur de retour du simulateur.
|
||
|
||
comm.data.id='T';
|
||
comm.data.rtr=0;
|
||
... | ... | |
demande.data.rtr=1;
|
||
|
||
snd_dtq (CanTx,demande.msg); // Interrogation du peripherique
|
||
rcv_dtq (CanRx,&reponse.msg); // Attente de la reponse
|
||
Distance=reponse.data.val; // contient la valeur de retour du simulateur.
|
||
Distance=periph[ADDR('R')].val; // contient la valeur de retour du simulateur.
|
||
|
||
comm.data.id='D'; //Commande de l'angle des roues
|
||
comm.data.rtr=0;
|
||
... | ... | |
}
|
||
}
|
||
|
||
/*void Asserv_V(){
|
||
|
||
//'V'/86/0x56?: Commande en vitesse des roues motrices du vehicule (en radian /secondes).
|
||
CanFrame comm;
|
||
CanFrame demande;
|
||
CanFrame reponse;
|
||
while(1){
|
||
|
||
comm.data.id='V'; //Commande de l'angle des roues
|
||
comm.data.rtr=0;
|
||
comm.data.val=Vitesse;
|
||
snd_dtq (CanTx,comm.msg);//Envoi de la commande
|
||
|
||
dly_tsk(500);
|
||
}
|
||
}*/
|
||
|
||
void Asserv_T_hc(){
|
||
Erreur_pre=Erreur;
|
||
Erreur=Consigne_T-alpha;
|
||
... | ... | |
}
|
||
|
||
void Asserv_R_hc(){
|
||
|
||
ErreurRoues=Distance-708;
|
||
if(Distance<=680)
|
||
Angle_R=Kpr*ErreurRoues;
|
||
ErreurRouesPre=ErreurRoues;
|
||
ErreurRoues=Distance-710;
|
||
Delta_ErreurRoues=ErreurRoues-ErreurRouesPre;
|
||
if(Distance<=690)
|
||
Angle_R=Kpr*ErreurRoues+Kdr*Delta_ErreurRoues;
|
||
if(Distance>=730)
|
||
Angle_R=Kpr*ErreurRoues;
|
||
Angle_R=Kpr*ErreurRoues+Kdr*Delta_ErreurRoues;
|
||
}
|
||
|
||
void main()
|
||
... | ... | |
capture_init();
|
||
|
||
sta_cyc(ID_acqui);
|
||
// sta_tsk(ID_periph_rx);
|
||
sta_tsk(ID_periph_rx);
|
||
|
||
sta_tsk(ID_Asserv_T);
|
||
sta_cyc(ID_Asserv_T_hc);
|
||
|
||
sta_tsk(ID_Asserv_R);
|
||
sta_cyc(ID_Asserv_R_hc);
|
||
|
||
|
||
/*delay(1000);
|
||
sta_tsk(ID_Asserv_V);*/
|
||
|
||
while(1)
|
||
{
|
Formats disponibles : Unified diff
Mise en place de la gestion de la queue de message avec la fonction periph_rx()