Projet

Général

Profil

« Précédent | Suivant » 

Révision 466

Ajouté par nacao il y a plus de 6 ans

améliorer la vitesse pour les trois pistes,
afficher le circuit actif

Voir les différences:

branch/nan_cao/Emb_App/SessionM32C_E8a_system.ini
[Target]
M32C E8a SYSTEM=Renesas Communications
[USER_DATA]
RESET=ff0012
RESET=ff014e
branch/nan_cao/Emb_App/programme_principal_etud.c
short vitesse;
short vitourelle;
short num_piste;
short col_zone;
short m;
short cap;
short numcap;
short couleurcap;
short mod;
short angle;
short notour;
CanFrame comm_ang;
CanFrame comm_vitesse;
......
comm_ang.data.id='D'; //angle de roue
comm_ang.data.rtr=0;
comm_ang.data.val=angle;
if(distance < 1100) angle=-(700-distance);
if(distance < 2000) angle=-(700-distance);
else comm_ang.data.val=0;
snd_dtq(CanTx,comm_ang.msg);
dly_tsk(20);
......
wai_flg(ev_periph, 0x04, TWF_ANDW,&flag);
cap=periph[ADDR('C')].val; // contient la valeur de retour du simulateur.
col_zone= cap&0xFF00>>8;
req.data.id='M'; //mode de course
req.data.rtr=1;
periph[ADDR('M')].ev=0x05;
......
wai_flg(ev_periph, 0x05, TWF_ANDW,&flag);
mod=periph[ADDR('M')].val; // contient la valeur de retour du simulateur. numero de piste, tricouleur et mode
num_piste= mod&0x000F;
num_piste= mod&0x00FF;
}
......
}
*/
/* 6 seance
void vit(){
while(1)
......
dly_tsk(500);
comm_vitesse.data.id='V'; //Vitesse de la tour
comm_vitesse.data.rtr=0;
comm_vitesse.data.val=vitesse;
if(Bp_G==1 || notour==4) comm_vitesse.data.val=0;
else comm_vitesse.data.val=vitesse;
snd_dtq(CanTx,comm_vitesse.msg);
}
}
*/
void vit(){
void tour(){
CanFrame req;
while(1)
{
dly_tsk(500);
comm_vitesse.data.id='V'; //Vitesse de la tour
comm_vitesse.data.rtr=0;
if(Bp_G==1) comm_vitesse.data.val=0;
else comm_vitesse.data.val=vitesse;
snd_dtq(CanTx,comm_vitesse.msg);
comm_vitesse.data.id='E'; //nombre de tour
comm_vitesse.data.rtr=1;
snd_dtq(CanTx,req.msg);
notour=periph[ADDR('E')].val;
dly_tsk(20);
}
}
int act_time;
void timez(){
CanFrame req;
char afficher[20];
while(1)
{
comm_vitesse.data.id='H'; //nombre de tour
comm_vitesse.data.rtr=1;
snd_dtq(CanTx,req.msg);
act_time=periph[ADDR('H')].val;
sprintf(afficher, "%d", act_time);
lcd_str(afficher);
dly_tsk(20);
}
}
void affichage()
{
char str1[20];
char str2[20];
int flage=1;
while(1){
dly_tsk(10);
lcd_putc('mod');
dly_tsk(50);
if(num_piste==1 && flage)
{
lcd_str("piste vert");
flage=0;
}
if(num_piste==2)
lcd_str("piste bleu");
if(num_piste==3)
lcd_str("piste rough");
if(num_piste==4)
lcd_str("piste noire");
// if(col_zone==1)
// lcd_str("zone vert");
}
}
......
periph_init();
periph_nom("#nan*");
lcd_putc(1);
can_init();
clavier_init(1);
capture_init();
sta_tsk(ID_affichage);
sta_tsk(ID_ang_roue);
sta_tsk(ID_ang_tourelle);
sta_tsk(ID_vitesse);
sta_tsk(ID_capteur);
sta_tsk(ID_affichage);
sta_tsk(ID_capteur);
sta_tsk(ID_time);
sta_tsk(ID_tour);
sta_cyc(ID_acqui);
sta_tsk(ID_periph_rx);
......
switch(num_piste){
case 1:
vitesse=30;
if(distance < 850) vitesse=40;
else vitesse=1;
break;
break;
case 2:
vitesse=30;
if(distance < 850) vitesse=35;
else vitesse=1;
break;
case 3:
if(cap==0x7601) {
vitesse=60;
}
if (cap==0x7601) vitesse=60;
else if (cap==0x4203) vitesse=5;
else if (cap==0x5202) vitesse=40;
else if (cap==0x5603) vitesse=60;
else if (cap==0x7610) vitesse=0;
else if (cap==0x7602) vitesse=5;
else if (cap==0x7602) vitesse=10;
else if (cap==0x5604) vitesse=5;
else vitesse=30;
else if (distance < 850)vitesse=35;
else vitesse=1;
break;
}
......
}
branch/nan_cao/Emb_App/conf_noyau.cfg
name = ID_vitesse;
stack_size = 512;
stack_section = stack;
priority = 7;
priority = 2;
initial_start = OFF;
exinf = 0x0;
};
......
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = affichage();
name = ID_affichage;
stack_size = 512;
stack_section = stack;
priority = 7;
priority = 4;
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = tour();
name = ID_tour;
stack_size = 512;
stack_section = stack;
priority = 6;
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = timez();
name = ID_time;
stack_size = 512;
stack_section = stack;
priority = 6;
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = periph_tx();
name = ID_periph_tx;
stack_size = 256;
branch/nan_cao/bsp/lcd.c
{
int i;
for (i=0;i<n*60;i++);
; for (i=0;i<n*60;i++);
}

Formats disponibles : Unified diff