Projet

Général

Profil

« Précédent | Suivant » 

Révision 291

Ajouté par jotoribio il y a plus de 6 ans

Amelioration de la piste rouge

Voir les différences:

branch/toribio/Emb_App/SessionM32C_E8a_system.ini
[Target]
M32C E8a SYSTEM=Renesas Communications
[USER_DATA]
RESET=ff001c
RESET=ff001e
branch/toribio/Emb_App/programme_principal_etud.c
short alpha;
unsigned short distance;
short angleR;
/*short vitesse;*/
short virage=0;
short numcapt=0;
short sauter=0;
short noir=0;
void asserv0(){
while(1){
short k=1; //Gain du correcteur P
......
//lecture de la position de la roue
CanFrame req,comm;
UINT flag;
if (sauter==0){
//Commande de l'angle de roue
if ((sauter==0) && (noir==0)){
//Commande de l'angle de roue en zone normal
comm.data.id='D';
comm.data.rtr=0; //indique une ?criture
if (distance>1000);
......
snd_dtq(CanTx, comm.msg);
dly_tsk(5);
}
else if (sauter==2){
//Commande de l'angle de roue
comm.data.id='D';
comm.data.rtr=0; //indique une ?criture
if (distance>1000);
else comm.data.val=k*(distance-610);//on tourne un peu plus pour le saut
snd_dtq(CanTx, comm.msg);
dly_tsk(5);
}
else if (sauter==3 ){
//Commande de l'angle de roue
comm.data.id='D';
comm.data.rtr=0; //indique une ?criture
comm.data.rtr=0;
if (distance>1000);
else comm.data.val=k*(distance-700);
snd_dtq(CanTx, comm.msg);
dly_tsk(5);
}
else if (sauter==1 ){
else if ((sauter==1) || (noir==2)){
//Commande de l'angle de roue
comm.data.id='D';
comm.data.rtr=0; //indique une ?criture
......
requete.data.rtr=0;
if (sauter==1){ //augmentation de la vitesse pour sauter
requete.data.val=45;}
else if (sauter==2){ //diminution vitesse pour preparer saut
requete.data.val=25;}
else if (sauter==3){ //diminution vitesse pour apr?s saut
requete.data.val=10;}
else if (sauter==0){
else if ((sauter==0) && (noir==0)){
requete.data.val=35;} //pas de saut
else if ((sauter==0) && (noir==2)){
requete.data.val=10;} //pas de saut
snd_dtq(CanTx, requete.msg);
dly_tsk(5);
}
......
}
void saut(){
while(1){
if (numcapt==2 && virage==20992){
sauter=2; //pr?paration au saut
}
else if (numcapt==3 && virage!=16896){
while(1){
if (numcapt==3 && virage!=16896){
dly_tsk(400);
sauter=1; //Renvoie 1 si c'est la zone du saut
}
else if (numcapt==3 && virage==16896){
......
}
void pistenoire(){
while(1){
if ((numcapt==2) && (virage==22016)){
noir=2; //zone de passage
}
else if (numcapt==1 && virage==22016){
noir=1; // on passe les toneaux
}
else if (numcapt!=2 && virage!=22016){
noir=0; // retour ? la regulation normal
}
dly_tsk(5);
}
}
void main()
......
sta_tsk(ID_roue);
sta_tsk(ID_zone);
sta_tsk(ID_saut);
// sta_tsk(ID_pistenoire);
while(1)
{
branch/toribio/Emb_App/conf_noyau.cfg
initial_start = OFF;
exinf = 0x0;
};
};
task[]{
entry_address = pistenoire();
name = ID_pistenoire;
stack_size = 512;
stack_section = stack;
priority = 6;
initial_start = OFF;
exinf = 0x0;
};

Formats disponibles : Unified diff