Projet

Général

Profil

« Précédent | Suivant » 

Révision 231

Ajouté par melepogam il y a plus de 6 ans

ajout switch pour parametre en fonction de la piste

Voir les différences:

branch/lepogam/Emb_App/SessionM32C_E8a_system.ini
[Target]
M32C E8a SYSTEM=Renesas Communications
[USER_DATA]
RESET=ff0030
RESET=ff0034
branch/lepogam/Emb_App/programme_principal_etud.c
unsigned int distance=0;
unsigned int vitesse=0;
unsigned int couleur=0; // vert -> ligne droie
unsigned int npiste=0;
unsigned int distance_ref=700;
unsigned int consigne=450;
unsigned int consigne_vitesse=34;
unsigned int vitesse_min=24;
unsigned int valeur_t=0;
unsigned int valeur_r=0;
int go=0;
int k1=2;
int k2=1;
void piste(){
//'M'/77/0x7D?: Mode de course :
// Bit 15?: Etat feu tricolore ( 1 -> Vert, 0 -> Orange ou Rouge),
// Bits 14-8?: 1 Attente, 2 course, 3 essais libres)
// Bits 7-0?: numero de la piste
CanFrame comm;
CanFrame demande;
CanFrame reponse;
while(1){
demande.data.id='M';
demande.data.rtr=1;
snd_dtq (CanTx,demande.msg); // Interrogation du peripherique
dly_tsk(500);
npiste=periph[ADDR('M')].val<<8; // contient la valeur de retour du simulateur.
switch(npiste){
case(256) : //verte
consigne_vitesse =60;
vitesse_min =35;
distance_ref = 880;
go=1;
break;
case(512) : //bleue
consigne_vitesse =40;
vitesse_min =22;
distance_ref = 700;
go=1;
break;
case(768) : //rouge
consigne_vitesse =34;
vitesse_min =24;
distance_ref = 700;
go=1;
break;
case(1024) : //noir
consigne_vitesse =25;
vitesse_min =25;
distance_ref = 700;
go=1;
break;
}
ext_tsk();
}
}
void asserv_tourelle(){
......
sta_cyc(ID_acqui);
sta_tsk(ID_periph_rx);
sta_tsk(ID_piste);
sta_tsk(ID_asserv_tourelle);
sta_tsk(ID_asserv_roue);
sta_cyc(ID_asserv1);
sta_cyc(ID_asserv2);
dly_tsk(600); // attente mise en place de la tourelle
sta_tsk(ID_asserv_vitesse);
sta_cyc(ID_asserv3);
branch/lepogam/Emb_App/conf_noyau.cfg
exinf = 0x0;
};
task[]{
entry_address = piste();
name = ID_piste;
stack_size = 256;
stack_section = stack;
priority = 3;
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = asserv_tourelle();
name = ID_asserv_tourelle;
stack_size = 256;

Formats disponibles : Unified diff