Révision 408
Ajouté par fltronel il y a plus de 6 ans
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
Piste rouge validé avec saut
optimisation nb message echangé