Révision 437
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=ff0020
|
||
RESET=ff004e
|
branch/toribio/Emb_App/programme_principal_etud.c | ||
---|---|---|
short sauter=0;
|
||
short noir=0;
|
||
short i=0;
|
||
short zvert=0;
|
||
short tours=0;
|
||
short jeton=0;
|
||
int numero;
|
||
short kc=1;
|
||
|
||
void asserv0(){
|
||
while(1){
|
||
... | ... | |
|
||
void roue(){
|
||
while(1){
|
||
short k=2; //Gain du correcteur P
|
||
//short k=1;
|
||
//lecture de la position de la roue
|
||
CanFrame req,comm;
|
||
UINT flag;
|
||
... | ... | |
comm.data.id='D';
|
||
comm.data.rtr=0; //indique une ?criture
|
||
if (distance>1000);
|
||
else comm.data.val=k*(distance-700);
|
||
else comm.data.val=kc*(distance-700);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(5);
|
||
}
|
||
... | ... | |
comm.data.id='D';
|
||
comm.data.rtr=0; //indique une ?criture
|
||
if (distance>1000);
|
||
else comm.data.val=k*(distance-700);
|
||
else comm.data.val=kc*(distance-700);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(5);
|
||
}
|
||
... | ... | |
else if ((sauter==0) && (noir==2)){
|
||
comm.data.id='D';//zone de passage avant pont piste noire
|
||
comm.data.rtr=0;
|
||
k=1;
|
||
kc=1;
|
||
if (distance>2000);
|
||
else comm.data.val=k*(distance-300);
|
||
else comm.data.val=kc*(distance-300);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(5);
|
||
}
|
||
else if ((sauter==0) && (noir==3)){
|
||
comm.data.id='D';//zone de passage avant pont piste noire
|
||
comm.data.rtr=0;
|
||
k=1;
|
||
kc=1;
|
||
if (distance>2000);
|
||
else comm.data.val=k*(distance-250);
|
||
else comm.data.val=kc*(distance-250);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(5);
|
||
}
|
||
else if ((sauter==0) && (noir==4)){
|
||
comm.data.id='D';//zone de passage du pont piste noire
|
||
comm.data.rtr=0;
|
||
k=1;
|
||
kc=1;
|
||
if (distance>2000);
|
||
else comm.data.val=k*(distance-150);
|
||
else comm.data.val=kc*(distance-150);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(5);
|
||
}
|
||
else if ((sauter==0) && (noir==5)){
|
||
comm.data.id='D';//zone apr?s passage du pont piste noire
|
||
comm.data.rtr=0;
|
||
k=2;
|
||
kc=2;
|
||
if (distance>2000);
|
||
else comm.data.val=k*(distance-700);
|
||
else comm.data.val=kc*(distance-700);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(5);
|
||
}
|
||
... | ... | |
else if ((sauter==0) && (noir==7)){
|
||
comm.data.id='D';//zone apr?s passage du pont piste noire
|
||
comm.data.rtr=0;
|
||
k=2;
|
||
kc=2;
|
||
if (distance>2000);
|
||
else comm.data.val=k*(distance-700);
|
||
else comm.data.val=kc*(distance-700);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(5);
|
||
}
|
||
else if ((sauter==0) && (noir==8)){
|
||
comm.data.id='D';//zone en herbe du pont piste noire
|
||
comm.data.rtr=0;
|
||
k=2;
|
||
kc=2;
|
||
if (distance>2000);
|
||
else comm.data.val=k*(distance-700);
|
||
else comm.data.val=kc*(distance-700);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(5);
|
||
}
|
||
else if ((sauter==0) && (noir==9)){
|
||
comm.data.id='D';//dernier virage piste noire
|
||
comm.data.rtr=0;
|
||
k=2;
|
||
kc=2;
|
||
if (distance>2000);
|
||
else comm.data.val=k*(distance-700);
|
||
else comm.data.val=kc*(distance-700);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(5);
|
||
}
|
||
... | ... | |
else if ((sauter==0) && (noir==9)){
|
||
requete.data.val=12;} //dernier virage piste noir
|
||
snd_dtq(CanTx, requete.msg);
|
||
dly_tsk(5);
|
||
dly_tsk(10);
|
||
}
|
||
|
||
|
||
... | ... | |
}
|
||
}
|
||
|
||
void numpiste(){
|
||
CanFrame Numpiste;
|
||
UINT flag;
|
||
while(1){
|
||
Numpiste.data.id='M';
|
||
Numpiste.data.rtr=1;
|
||
periph[ADDR('M')].ev=0x04;
|
||
snd_dtq(CanTx, Numpiste.msg);
|
||
//Attente de la r?ponse
|
||
wai_flg (ev_periph, 0x04, TWF_ANDW, &flag);
|
||
numero=periph[ADDR('M')].val<<8;
|
||
dly_tsk(100); }
|
||
}
|
||
|
||
void saut(){
|
||
while(1){
|
||
if (numcapt==3 && virage!=16896){
|
||
... | ... | |
}
|
||
else if ((numcapt==1) && (virage==18944)){
|
||
noir=3; //zone de virage passage du pont
|
||
//LED_R=1;
|
||
|
||
}
|
||
else if ((numcapt==4) && (virage==17152)){
|
||
noir=9; // dernier virage
|
||
... | ... | |
dly_tsk(5);
|
||
}
|
||
}
|
||
void tour(){
|
||
while(1){
|
||
CanFrame vitesse;
|
||
|
||
if(numcapt==1 && virage==22016){
|
||
jeton=1;
|
||
}
|
||
if(numcapt==2 && virage==22016){
|
||
if(jeton==1){
|
||
tours++;
|
||
jeton=0;}
|
||
}
|
||
|
||
if (tours==3){
|
||
if(numcapt==1 && virage==22016){
|
||
vitesse.data.id='V';
|
||
vitesse.data.rtr=0;
|
||
vitesse.data.val=0;
|
||
|
||
snd_dtq (CanTx,vitesse.msg);
|
||
|
||
isus_tsk(ID_asserv0);
|
||
isus_tsk(ID_roue);
|
||
isus_tsk(ID_regvitesse);
|
||
isus_tsk(ID_dist);
|
||
isus_tsk(ID_zone);
|
||
isus_tsk(ID_saut);
|
||
isus_tsk(ID_pistenoire);
|
||
isus_tsk(ID_tour);
|
||
isus_tsk(ID_ecran);
|
||
isus_tsk(ID_numpiste);
|
||
}
|
||
}
|
||
dly_tsk(5);
|
||
}
|
||
}
|
||
void ecran(){
|
||
while(1){
|
||
dly_tsk(250);
|
||
lcd_init();
|
||
switch(numero){
|
||
case(256) : lcd_str("VERT|"); break;
|
||
case(512) : lcd_str("BLEU|"); break;
|
||
case(768) : lcd_str("ROUGE|"); break;
|
||
case(1024) : lcd_str("NOIR|"); break;
|
||
}
|
||
switch(virage){
|
||
case(22016) : lcd_str("VERT|"); break;
|
||
case(17152) : lcd_str("BLEU|"); break;
|
||
case(20992) : lcd_str("ROUGE|"); break;
|
||
case(18944) : lcd_str("JAUNE|"); break;
|
||
case(16896) : lcd_str("CYAN|"); break;
|
||
}
|
||
if (p0_4==0) LED_R=1;
|
||
else LED_R=0;
|
||
}
|
||
}
|
||
|
||
|
||
|
||
void main()
|
||
{
|
||
... | ... | |
sta_tsk(ID_dist);
|
||
sta_tsk(ID_roue);
|
||
sta_tsk(ID_zone);
|
||
// sta_tsk(ID_saut);
|
||
sta_tsk(ID_pistenoire);
|
||
sta_tsk(ID_tour);
|
||
sta_tsk(ID_ecran);
|
||
sta_tsk(ID_numpiste);
|
||
if(numero==768){ sta_tsk(ID_saut);
|
||
kc=2;}
|
||
if (numero==1024){ sta_tsk(ID_pistenoire);
|
||
kc=2;}
|
||
|
||
|
||
while(1)
|
||
{
|
branch/toribio/Emb_App/conf_noyau.cfg | ||
---|---|---|
exinf = 0x0;
|
||
|
||
};
|
||
|
||
task[]{
|
||
entry_address = tour();
|
||
name = ID_tour;
|
||
stack_size = 512;
|
||
stack_section = stack;
|
||
priority = 5;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
|
||
};
|
||
|
||
task[]{
|
||
entry_address = ecran();
|
||
name = ID_ecran;
|
||
stack_size = 512;
|
||
stack_section = stack;
|
||
priority = 5;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
|
||
};
|
||
|
||
task[]{
|
||
entry_address = numpiste();
|
||
name = ID_numpiste;
|
||
stack_size = 512;
|
||
stack_section = stack;
|
||
priority = 5;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
|
||
};
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
task[]{
|
||
entry_address = periph_tx();
|
||
name = ID_periph_tx;
|
Formats disponibles : Unified diff
Affiche sur lcd couleur piste et zone
Au bout de 3 tours s'arretent
Affiche led rouge avec bouton poussoire