Révision 55
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=ff002a
|
||
RESET=ff0030
|
branch/porte/Emb_App/programme_principal_etud.c | ||
---|---|---|
int Kp=2;
|
||
int Ki=7;
|
||
int Kd=2;
|
||
unsigned int Vitesse=2,Distance;
|
||
unsigned int Angle_R=0;
|
||
unsigned int ErreurRoues=0;
|
||
|
||
void Asserv_T(){
|
||
|
||
... | ... | |
}
|
||
}
|
||
|
||
void Asserv_R(){
|
||
|
||
//'D'/68/0x44?: Commande de l'angle des roues directrices (en 1/10 de degre).
|
||
//'V'/86/0x56?: Commande en vitesse des roues motrices du vehicule (en radian /secondes).
|
||
//'U'/85/0x55?: Distance mesuree par le telemetre (1/100 de metre).
|
||
CanFrame comm;
|
||
CanFrame demande;
|
||
CanFrame reponse;
|
||
while(1){
|
||
|
||
demande.data.id='U';
|
||
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.
|
||
|
||
if(Distance<=680)
|
||
Angle_R=-50;
|
||
if(Distance>=730)
|
||
Angle_R=50;
|
||
|
||
comm.data.id='D'; //Commande de l'angle des roues
|
||
comm.data.rtr=0;
|
||
comm.data.val=Angle_R;
|
||
snd_dtq (CanTx,comm.msg);//Envoi de la commande
|
||
|
||
dly_tsk(150);
|
||
}
|
||
}
|
||
|
||
void Asserv_T_hc(){
|
||
Erreur_pre=Erreur;
|
||
Erreur=Consigne_T-alpha;
|
||
... | ... | |
if(alpha!=Consigne_T)
|
||
valeur=Kp*Erreur+Kd*Delta_Erreur+(1/Ki)*Somme_Erreur;//correction de l'angle par handler cyclique
|
||
}
|
||
|
||
void Asserv_R_hc(){
|
||
|
||
if(alpha!=Consigne_T)
|
||
Angle_R=Kp*ErreurRoues;//correction de l'angle par handler cyclique
|
||
}
|
||
|
||
void main()
|
||
{
|
||
... | ... | |
sta_cyc(ID_acqui);
|
||
// sta_tsk(ID_periph_rx);
|
||
sta_tsk(ID_Asserv_T);
|
||
sta_cyc(ID_Asserv_T_hc);
|
||
sta_cyc(ID_Asserv_T_hc);
|
||
sta_tsk(ID_Asserv_R);
|
||
sta_cyc(ID_Asserv_R_hc);
|
||
|
||
|
||
while(1)
|
branch/porte/Emb_App/conf_noyau.cfg | ||
---|---|---|
exinf = 0x0;
|
||
};
|
||
|
||
task[]{
|
||
entry_address = Asserv_R();
|
||
name = ID_Asserv_R;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority = 4;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
|
||
flag[]{
|
||
name = ev_bus_fin_tr;
|
||
initial_pattern = 0x0000;
|
||
... | ... | |
phs_counter = 0x0;
|
||
};
|
||
|
||
cyclic_hand[]{
|
||
entry_address = Asserv_R_hc();
|
||
name = ID_Asserv_R_hc;
|
||
exinf = 0x0;
|
||
start = OFF;
|
||
phsatr = OFF;
|
||
interval_counter = 0x64;
|
||
phs_counter = 0x0;
|
||
};
|
||
|
||
|
||
vdataqueue[]{
|
||
name = QdmTouche;
|
||
wait_queue = TA_TFIFO;
|
Formats disponibles : Unified diff
Ajout de la tache de direction des roues géré sans correcteur