Projet

Général

Profil

« Précédent | Suivant » 

Révision 401

Ajouté par autchuemke il y a plus de 6 ans

piste optimisée

Voir les différences:

branch/tchuem/Emb_App/programme_principal_etud.c
float C=600;
float Dist; // distance mesur?e par la tourelle
float Vitesse=23;
float Vitesse=45; //23 //40
float Tourne;
float Trou;
int num_capt1[];
int num_capt2[];
CanFrame demande;
......
//CanFrame co3,demande4;
void asserv_tour( void);
void calcul_dist( void);
void asserv_roue(void );
void detect_trou (void);
void vit(void);
//void asserv_tour( void);
//void calcul_dist( void);
//void asserv_roue(void );
//void detect_trou (void);
//void vit(void);
void main()
{
......
sta_cyc(ID_acqui);
sta_tsk(ID_periph_rx);/*
sta_tsk(ID_periph_rx);
sta_tsk(ID_asserv_tour);
sta_tsk(ID_calcul_dist);
sta_tsk(ID_asserv_roue);
sta_tsk(ID_detect_trou);
sta_tsk(ID_vit);
sta_tsk(ID_calcul_dist);
sta_tsk(ID_detect_trou);
*/
while(1)
{
/*
asserv_tour();
asserv_roue();
calcul_dist();
detect_trou();
vit();
vit();*/
LED_J=1;
dly_tsk(5);
......
}
void asserv_tour(void)
{
CanFrame demande;
CanFrame co1;
float A;
void asserv_tour()
{
while(1)
{
CanFrame demande;
CanFrame co1;
float A;
demande.data.id='R';
demande.data.rtr=1;
snd_dtq(CanTx,demande.msg);
dly_tsk(4);
demande.data.id='R';
demande.data.rtr=1;
snd_dtq(CanTx,demande.msg);
dly_tsk(4);
A= C - periph[ADDR('R')].val;
A= C - periph[ADDR('R')].val;
co1.data.id ='T';
co1.data.rtr =0;
co1.data.val = C - periph[ADDR('R')].val;
snd_dtq(CanTx, co1.msg);
LED_R=1;
dly_tsk(5);
co1.data.id ='T';
co1.data.rtr =0;
co1.data.val = C - periph[ADDR('R')].val;
snd_dtq(CanTx, co1.msg);
dly_tsk(5);
}
}
void calcul_dist()
{
// while(1){
while(1)
{
CanFrame co4;
CanFrame demande4;
CanFrame co4;
CanFrame demande4;
demande4.data.id='U';
demande4.data.rtr=1;
snd_dtq(CanTx, demande4.msg);
dly_tsk(10);
demande4.data.id='U';
demande4.data.rtr=1;
snd_dtq(CanTx, demande4.msg);
dly_tsk(10);
Dist= periph[ADDR('U')].val;
Tourne= Dist- 580;
// }
Dist= periph[ADDR('U')].val;
Tourne= Dist- 580;
}
}
void asserv_roue()
{
//while(1){
CanFrame co2,co3;
CanFrame demande4;
while(1)
{
CanFrame co2,co3;
CanFrame demande4;
demande4.data.id='U';
demande4.data.rtr=1;
snd_dtq(CanTx, demande4.msg);
dly_tsk(20);
demande4.data.id='U';
demande4.data.rtr=1;
snd_dtq(CanTx, demande4.msg);
dly_tsk(20);
Dist= periph[ADDR('U')].val;
Tourne= Dist- 580;
/*
if (Dist >1000){
Dist= periph[ADDR('U')].val;
Tourne= Dist- 580;
if (Dist >1000){
Tourne =0;
Tourne =0;
co2.data.id ='D';
co2.data.rtr =0;
co2.data.val = Tourne;
snd_dtq(CanTx, co2.msg);
dly_tsk(25);
co3.data.id ='V';
co3.data.rtr =0;
co3.data.val = 0;
snd_dtq(CanTx, co3.msg);
}
co2.data.id ='D';
co2.data.rtr =0;
co2.data.val = Tourne;
snd_dtq(CanTx, co2.msg);
//dly_tsk(20);
co3.data.id ='V';
co3.data.rtr =0;
co3.data.val = Vitesse;
snd_dtq(CanTx, co3.msg);
dly_tsk(25);
}
*/
co2.data.id ='D';
co2.data.rtr =0;
co2.data.val = Tourne;
}
snd_dtq(CanTx, co2.msg);
dly_tsk(25);
//}
}
void vit()
{
// while(1)
//{
CanFrame co3;
while(1)
{
CanFrame co3;
CanFrame co8;
unsigned char feu;
co3.data.id ='V';
co3.data.rtr =0;
co3.data.val = Vitesse;
snd_dtq(CanTx, co3.msg);
dly_tsk(10);
// }
while (Bp_G == 1)
{
co3.data.id ='V';
co3.data.rtr =0;
co3.data.val =0;
snd_dtq(CanTx, co3.msg);
}
co8.data.id ='M';
co8.data.rtr =1;
snd_dtq(CanTx, co8.msg);
feu=(periph[ADDR('M')].val)>>8;
feu=feu&0x80;
if(feu==0x00000000)
{
co3.data.id ='V';
co3.data.rtr =0;
co3.data.val = 0;
snd_dtq(CanTx, co3.msg);
dly_tsk(10);
}
if(feu==0x10000000)
{
co3.data.id ='V';
co3.data.rtr =0;
co3.data.val = Vitesse;
snd_dtq(CanTx, co3.msg);
dly_tsk(10);
}
co3.data.id ='V';
co3.data.rtr =0;
co3.data.val = Vitesse;
snd_dtq(CanTx, co3.msg);
dly_tsk(10);
}
}
void detect_trou()
{
// while(1)
// {
CanFrame co6,co2,co3;
CanFrame demande4;
while(1)
{
CanFrame co6,co2,co3;
CanFrame demande4;
int trou;
demande4.data.id='U';
demande4.data.rtr=1;
snd_dtq(CanTx, demande4.msg);
demande4.data.id='U';
demande4.data.rtr=1;
snd_dtq(CanTx, demande4.msg);
Dist= periph[ADDR('U')].val;
Dist= periph[ADDR('U')].val;
trou=0;
if (Dist > 1000){
LED_R=1;
Trou=1;
}
else LED_R=0;
dly_tsk(20);
if (Dist > 1000){
LED_R=1;
Trou=1;
}
else LED_R=0;
}
/*
while(Dist >1000){
Tourne =0;
co2.data.id ='D';
co2.data.rtr =0;
co2.data.val = Tourne;
snd_dtq(CanTx, co2.msg);
co3.data.id ='V';
co3.data.rtr =0;
co3.data.val = Vitesse;
snd_dtq(CanTx, co3.msg);
}
*/
/*
void detect_capteur(void)
{
CanFrame demande8,demande9;
CanFrame co8,co9,co10;
co8.data.id ='C';
co8.data.rtr =1;
snd_dtq(CanTx, co8.msg);
num_capt=(periph[ADDR('C')].val)<<3;
}
*/
branch/tchuem/Emb_App/conf_noyau.cfg
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = asserv_tour();
name = ID_asserv_tour;
stack_size = 256;
stack_section = stack;
priority = 8;
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = asserv_roue();
name = ID_asserv_roue;
stack_size = 256;
stack_section = stack;
priority = 7;
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = vit();
name = ID_vit;
stack_size = 256;
stack_section = stack;
priority = 6;
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = calcul_dist();
name = ID_calcul_dist;
stack_size = 256;
stack_section = stack;
priority = 6;
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = detect_trou();
name = ID_detect_trou;
stack_size = 256;
stack_section = stack;
priority = 5;
initial_start = OFF;
exinf = 0x0;
};

Formats disponibles : Unified diff