Révision 267
Ajouté par sabeaussan il y a plus de 6 ans
branch/beaussant/Emb_App/SessionM32C_E8a_system.ini | ||
---|---|---|
[Target]
|
||
M32C E8a SYSTEM=Renesas Communications
|
||
[USER_DATA]
|
||
RESET=ff002a
|
||
RESET=ff002e
|
branch/beaussant/Emb_App/programme_principal_etud.c | ||
---|---|---|
|
||
int pos_obs=0;
|
||
int commandeT=500;
|
||
int commandeV=25;
|
||
int commandeV=40;
|
||
int commandeR=0;
|
||
//CanFrame touche;
|
||
short consigne=450;
|
||
int dist_obs=0;
|
||
int dist_consigne=709;
|
||
char kt=1;
|
||
float kv=1.1;
|
||
int cmpt;
|
||
char kt=3;
|
||
char kv=15;
|
||
float kr=1.5;
|
||
//char c;
|
||
int in;
|
||
int is_stable=0;
|
||
int est_stable=0;
|
||
|
||
void envoieFrame(unsigned char id, unsigned short val)
|
||
{
|
||
... | ... | |
ports_mcu();
|
||
lcd_init();
|
||
periph_init();
|
||
periph_nom("#AutoTest*");
|
||
periph_nom("#LeBolide*");
|
||
can_init();
|
||
clavier_init(1);
|
||
capture_init();
|
||
// sta_cyc(ID_acqui);
|
||
sta_tsk(ID_ctrlt);
|
||
sta_tsk(ID_asserv_v);
|
||
sta_tsk(ID_depart);
|
||
sta_tsk(ID_periph_rx);
|
||
|
||
while(1){};
|
||
... | ... | |
|
||
int intervalle(int val,int borne)
|
||
{
|
||
in=0;
|
||
//on v?rifie que la commande est quasi nulle
|
||
if(val<=borne && val>=-1*borne)
|
||
{
|
||
return 1;
|
||
in=1;
|
||
}
|
||
return(in);
|
||
}
|
||
|
||
int stable()
|
||
{
|
||
static int compt=0;
|
||
if(intervalle(commandeR,1)
|
||
is_stable=0;
|
||
if(intervalle(commandeR,2)==1)
|
||
{
|
||
cmpt++;
|
||
}
|
||
else if(cmpt==10){
|
||
return 1}
|
||
else if(cmpt>=20)
|
||
{
|
||
cmpt=0;
|
||
is_stable=1;;
|
||
}
|
||
else{
|
||
is_stable=0;
|
||
}
|
||
return(is_stable);
|
||
}
|
||
|
||
|
||
... | ... | |
}
|
||
|
||
|
||
void depart()
|
||
{
|
||
est_stable=0;
|
||
kv=0.8;
|
||
commandeV=15;
|
||
envoieFrame('V',commandeV);
|
||
dist_obs=acquiFrame('U');
|
||
while(est_stable!=1){
|
||
commandeR=-1*kr*(dist_consigne-dist_obs);
|
||
envoieFrame('D',commandeR);
|
||
dist_obs=acquiFrame('U');
|
||
dly_tsk(10);
|
||
est_stable=stable();
|
||
}
|
||
sta_tsk(ID_asserv_v);
|
||
sta_tsk(ID_asserv_r);
|
||
|
||
|
||
}
|
||
|
||
|
||
void ctrl_t()
|
||
{
|
||
envoieFrame('T',commandeT);
|
||
... | ... | |
}
|
||
}
|
||
|
||
void asserv_roue()
|
||
{
|
||
dist_obs=acquiFrame('U');
|
||
while(1){
|
||
commandeR=-1*kr*(dist_consigne-dist_obs);
|
||
envoieFrame('D',commandeR);
|
||
dist_obs=acquiFrame('U');
|
||
dly_tsk(10);
|
||
}
|
||
}
|
||
|
||
void asserv_vitesse()
|
||
{
|
||
commandeV=50;
|
||
envoieFrame('V',commandeV);
|
||
dist_obs=acquiFrame('U');
|
||
while(1){
|
||
commandeR=-1*kv*(dist_consigne-dist_obs);
|
||
commandeV=consigne+kv*commandeR;
|
||
envoieFrame('D',commandeR);
|
||
dist_obs=acquiFrame('U');
|
||
dly_tsk(10);
|
||
}
|
||
}
|
||
|
||
|
||
|
||
/*int virage()
|
||
{
|
||
if(commandeR==0 && dist_obs<dist_consigne) return 1;
|
branch/beaussant/Emb_App/conf_noyau.cfg | ||
---|---|---|
};
|
||
|
||
task[]{
|
||
entry_address = asserv_vitesse();
|
||
name = ID_asserv_v;
|
||
entry_address = asserv_roue();
|
||
name = ID_asserv_r;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority = 3;
|
||
... | ... | |
exinf = 0x0;
|
||
};
|
||
|
||
task[]{
|
||
entry_address = depart();
|
||
name = ID_depart;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority = 3;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
|
||
task[]{
|
||
entry_address = asserv_vitesse();
|
||
name = ID_asserv_v;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority = 2;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
|
||
task[]{
|
||
entry_address = periph_rx();
|
||
name = ID_periph_rx;
|
||
stack_size = 256;
|
Formats disponibles : Unified diff
ajout de la tâche permettant de gérer le départ de la course et de fonction permettant de savoir si la voiture est stable