Projet

Général

Profil

« Précédent | Suivant » 

Révision 408

Ajouté par fltronel il y a plus de 6 ans

Piste rouge validé avec saut
optimisation nb message echangé

Voir les différences:

branch/tronel_florian/Emb_App/programme_principal_etud.c
unsigned char t1, t2;
unsigned char *s=&t1, *cs=&t2;
unsigned short cap=0;
unsigned char cap_H, cap_L;
int nb_tour=0;
......
int c=0;
void main()
{ ports_mcu();
{ //INITIALISATION
ports_mcu();
lcd_init();
periph_init();
periph_nom("#Flo*");
......
sta_tsk(ID_periph_rx);
//Depart au feu vert
sta_tsk(ID_task_5);//en attente du feu
while(f!=1);
......
V=1;
copV=1;
if(p>2){sta_tsk(ID_task_7);}//capteur
sta_tsk(ID_task_8);//capteur
sta_tsk(ID_task_7);//gestion
sta_tsk(ID_task_1);//vitesse
sta_tsk(ID_task_2);//tourelle
sta_tsk(ID_task_3);//dist
......
sta_cyc(ID_HC_1);
//sta_cyc(ID_HC_2);
sta_cyc(ID_HC_2);
sta_cyc(ID_HC_3);
}
......
case 0: v=0; break;
case 1: v=35; break;
case 2: v=45; break;
case 3: v=15; break;
case 3: v=5; break;
case 4: v=10; break;
case 5: v=15; break;
}
......
cons_tourelle.data.val=vit_t;
snd_dtq(CanTx,cons_tourelle.msg);
dly_tsk(4);
dly_tsk(5);
}
}
......
c++;
if(c>400){LED_J=0; c=0;}
dly_tsk(3);
dly_tsk(4);
}
}
......
cons_roue.data.val=ang_r;
snd_dtq(CanTx,cons_roue.msg);
dly_tsk(3);
dly_tsk(4);
}
}
......
snd_dtq(CanTx,req_d.msg);
r = periph[ADDR('M')].val;
p = (r & 0x00FF);
f = (r & 0x8000)>>15;
dly_tsk(5);
p = (r & 0x00FF);//num?ro de piste
f = (r & 0x8000)>>15;//couleur du feu
dly_tsk(6);
}
}
......
lcd_com(0x80);
lcd_str(s);
dly_tsk(10);
dly_tsk(11);
}
}
void task_7(){
CanFrame req_cap;
unsigned short cap_old=0;
while(1){
req_cap.data.id='C';
req_cap.data.rtr=1;
snd_dtq(CanTx,req_cap.msg);
cap = periph[ADDR('C')].val;
if(cap != cap_old){
cap_H=(cap & (0xFF00))>>8;
cap_L=cap & (0x00FF);
cap_old=cap;
}
switch(cap_H){
case 'V': if(cap_L==0x01){
nb_tour++;
......
ter_tsk(ID_task_3);
ter_tsk(ID_task_4);
stp_cyc(ID_HC_1);
stp_cyc(ID_HC_3);}
stp_cyc(ID_HC_3);
stp_cyc(ID_HC_2);
}
}
if(cap_L==0x03){
if(p>2){
if(cap_L==0x03){
V=2;
copV=2;
dly_tsk(800);
dly_tsk(2300);
sus_tsk(ID_task_3);
dist=700;
dly_tsk(500);
V=0;
copV=0;
sus_tsk(ID_task_3);
dist=700;
dly_tsk(800);
V=3;
copV=3;
rsm_tsk(ID_task_3);
dly_tsk(300);
V=4;
copV=4;
dly_tsk(400);
//dly_tsk(200);
//V=3;
//copV=3;
V=5;
copV=5;
dly_tsk(800);
V=1;
copV=1;
}
}
break;
case 'B': if(cap_L==0x03){
rsm_tsk(ID_task_3);
V=3;
copV=3;
dly_tsk(200);
/*case 'B':
if(p>2){
if(cap_L==0x03){
V=1;
copV=1;}
break;
}
break;*/
}
dly_tsk(10);
}
}
void task_8(){
CanFrame req_cap;
unsigned short cap_old=0;
while(1){
req_cap.data.id='C';
req_cap.data.rtr=1;
snd_dtq(CanTx,req_cap.msg);
cap = periph[ADDR('C')].val;
if(cap != cap_old){
cap_H=(cap & (0xFF00))>>8;
cap_L=cap & (0x00FF);
cap_old=cap;
}
dly_tsk(8);
}
}
void HC_1(){
LED_V =~ LED_V;
}
branch/tronel_florian/Emb_App/conf_noyau.cfg
initial_start = OFF;
exinf = 0x0;
};
//acquisition des messages
//gestion des messages
task[]{
entry_address = task_7();
name = ID_task_7;
......
initial_start = OFF;
exinf = 0x0;
};
//acquisition des messages
task[]{
entry_address = task_8();
name = ID_task_8;
stack_size = 256;
stack_section = stack;
priority = 2;
initial_start = OFF;
exinf = 0x0;
};
flag[]{
name = ev_bus_fin_tr;
initial_pattern = 0x0000;

Formats disponibles : Unified diff