Projet

Général

Profil

« Précédent | Suivant » 

Révision 347

Ajouté par casotty il y a plus de 6 ans

Strategie passée en tache

Voir les différences:

branch/sotty/Emb_App/programme_principal_etud.c
#define PISTE_ROUGE 3
#define PISTE_NOIRE 4
void strategie(void);
void strategie(VP_INT stacd);
void couleur_piste(void);
void rotation_tourelle(unsigned int angle);
int position_tourelle(void);
......
}
couleur_piste();
sta_tsk(ID_strategie);
while(1)
{
strategie();
//strategie();
LED_J=1;
dly_tsk(100);
LED_J=0;
......
}
}
void couleur_piste(void){
//Obtention de la piste
num_piste = send_requete(MODE_COURSE) & 0x00FF;
}
void strategie(void){
void strategie(VP_INT stacd){
static int k = 0;
capteur = send_requete(INFO_CAPTEUR);//**
switch(num_piste){
case PISTE_VERTE :
break;
while(1){
capteur = send_requete(INFO_CAPTEUR);//**
switch(num_piste){
case PISTE_VERTE :
break;
case PISTE_BLEUE :
break;
case PISTE_BLEUE :
break;
case PISTE_ROUGE :
switch(capteur){
case 0x6301 : //Capteur perso avant bosse rouge
ang_roue = 0;//*****
vit_roue = 45;
break;
case PISTE_ROUGE :
switch(capteur){
case 0x6301 : //Capteur perso avant bosse rouge
ang_roue = 0;//*****
vit_roue = 45;
break;
case 0x4203 : //Capteur apres bosse rouge
vit_roue = 8;
k = 0;
break;
case 0x4203 : //Capteur apres bosse rouge
vit_roue = 8;
k = 0;
break;
case 0x6304 : // Capteur perso apres bosse rouge
if (k == 0){
k = vit_roue*3;
}
if(k < (vit_max-3)*3){
vit_roue = k/3;
k++;
}
break;
case 0x6304 : // Capteur perso apres bosse rouge
if (k == 0){
k = vit_roue*3;
}
if(k < (vit_max-3)*3){
vit_roue = k/3;
k++;
}
break;
case 0x5604 :
if(k < (vit_max-3)*3){
vit_roue = k/3;
k++;
}
break;
case 0x5604 :
if(k < (vit_max-3)*3){
vit_roue = k/3;
k++;
}
break;
case 0x4304 : // Capteur avant fin
vit_roue = vit_max;
case 0x4304 : // Capteur avant fin
vit_roue = vit_max;
break;
}
break;
case PISTE_NOIRE :
switch(capteur){
case 0x6302 :
if(distance_mur > 1000 || distance_mur < 0) { //Trou dans le mur //**
ang_roue = 0;
}
else {
ang_roue = (K_roue*(distance_mur-700));//**
}
break;
}
break;
case PISTE_NOIRE :
switch(capteur){
case 0x6302 :
if(distance_mur > 1000 || distance_mur < 0) { //Trou dans le mur //**
ang_roue = 0;
}
else {
ang_roue = (K_roue*(distance_mur-700));//**
}
break;
}
break;
}
break;
}
dly_tsk(10);
}
}
......
void couleur_piste(void){
//Obtention de la piste
num_piste = send_requete(MODE_COURSE) & 0x00FF;
}
void rotation_tourelle(unsigned int angle){
send_commande(VITESSE_TOURELLE,angle);
}
branch/sotty/Emb_App/conf_noyau.cfg
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = strategie();
name = ID_strategie;
stack_size = 256;
stack_section = stack;
priority = 7;
initial_start = OFF;
exinf = 0x0;
};
flag[]{
name = ev_bus_fin_tr;

Formats disponibles : Unified diff