Révision 291
Ajouté par jotoribio il y a plus de 6 ans
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
Amelioration de la piste rouge