Révision 539
Ajouté par louisdupriet il y a plus de 6 ans
branch/dupriet/Emb_App/SessionM32C_E8a_system.ini | ||
---|---|---|
[Target]
|
||
M32C E8a SYSTEM=Renesas Communications
|
||
[USER_DATA]
|
||
RESET=ff0132
|
||
RESET=ff016e
|
branch/dupriet/Emb_App/programme_principal_etud.c | ||
---|---|---|
int temps;
|
||
unsigned short STOP=0;
|
||
|
||
unsigned int piste;
|
||
unsigned int num_piste=0;
|
||
unsigned int couleur_feu=0;
|
||
unsigned int feu_vert=0;
|
||
|
||
unsigned int ultra=0;
|
||
|
||
|
||
|
||
void capteur_couleur(){
|
||
CanFrame req;
|
||
unsigned int detect_change=0;
|
||
... | ... | |
break;
|
||
|
||
case 0x7610: //d?but saut piste rouge //vert petit 16
|
||
celerite=48;
|
||
roue=0;
|
||
if(num_piste==1024){
|
||
celerite=47;
|
||
roue=0;}
|
||
break;
|
||
case 0x7611: //vert petit 17
|
||
if(num_piste==1024){
|
||
celerite=0;
|
||
|
||
roue=1;dly_tsk(1000);
|
||
celerite=10;
|
||
dly_tsk(800);
|
||
celerite=20;
|
||
celerite=20;}
|
||
break; //fin saut piste rouge
|
||
|
||
case 0x7620:
|
||
norme=150;
|
||
break;
|
||
//piste noire
|
||
case 0x7613: //vert 19 petit
|
||
roue=0;
|
||
break;
|
||
case 0x7614: //vert 20 petit
|
||
roue=1;celerite=10;
|
||
norme=400;
|
||
break;
|
||
case 0x7615: //vert 21 petit
|
||
roue=1;celerite=10;
|
||
norme=250;
|
||
break;
|
||
case 0x7616: //vert 22 petit
|
||
roue=1;celerite=10;
|
||
norme=190;
|
||
break;
|
||
case 0x7617: //v23
|
||
norme=150;
|
||
break;
|
||
case 0x7618: //v24
|
||
norme=130;
|
||
break;
|
||
|
||
}
|
||
dly_tsk(5);}
|
||
}
|
||
... | ... | |
}
|
||
|
||
void emergency(){
|
||
if(Bp_G){STOP++;}
|
||
while(1){
|
||
if(Bp_G){STOP++;}
|
||
dly_tsk(20);
|
||
}
|
||
}
|
||
|
||
void asserv_tourelle(){
|
||
... | ... | |
}
|
||
}
|
||
|
||
void lecteur_M(){
|
||
CanFrame req;
|
||
UINT flag;
|
||
|
||
while(1){
|
||
req.data.id='M';
|
||
req.data.rtr=1;
|
||
periph[ADDR('M')].ev=0x04;
|
||
snd_dtq(CanTx, req.msg);
|
||
wai_flg(ev_periph, 0x04, TWF_ANDW, &flag);
|
||
piste=periph[ADDR('M')].val;
|
||
|
||
num_piste=piste<<8;
|
||
couleur_feu=piste>>15;
|
||
dly_tsk(100);
|
||
}
|
||
}
|
||
|
||
void afficheur(){
|
||
CanFrame req;
|
||
UINT flag;
|
||
... | ... | |
temps = periph[ADDR('H')].val;
|
||
sprintf(c,"%d",temps);
|
||
lcd_str(c);
|
||
lcd_str(" cs");
|
||
lcd_com(0xC0);
|
||
if(num_piste==256){lcd_str("piste verte");}
|
||
if(num_piste==512){lcd_str("piste bleue");}
|
||
if(num_piste==1024){lcd_str("piste rouge");}
|
||
if(num_piste==2048){lcd_str("piste noire");}
|
||
dly_tsk(100);
|
||
lcd_init();
|
||
}
|
||
}
|
||
|
||
void fonction_STOP(){
|
||
unsigned int z;
|
||
CanFrame comm;
|
||
CanFrame req;
|
||
UINT flag;
|
||
|
||
while (1){
|
||
req.data.id='D';
|
||
req.data.rtr=1;
|
||
periph[ADDR('D')].ev=0x01;
|
||
snd_dtq(CanTx,req.msg);
|
||
wai_flg(ev_periph,0x01,TWF_ANDW,&flag);
|
||
z=periph[ADDR('D')].val;
|
||
|
||
comm.data.id='V';
|
||
comm.data.rtr=0;
|
||
comm.data.val=0;
|
||
snd_dtq(CanTx,comm.msg);
|
||
dly_tsk(1000); //libere le processeur
|
||
}
|
||
}
|
||
|
||
void main()
|
||
{
|
||
... | ... | |
clavier_init(1);
|
||
capture_init();
|
||
sta_tsk(ID_avancer);
|
||
sta_cyc(ID_acqui);
|
||
//sta_cyc(ID_acqui);
|
||
sta_tsk(ID_lecteur_M);
|
||
sta_tsk(ID_afficheur);
|
||
sta_tsk(ID_asserv_tourelle);
|
||
sta_tsk(ID_asserv_direction);
|
||
... | ... | |
sta_tsk(ID_emergency);
|
||
while(1)
|
||
{
|
||
if(couleur_feu==65535){feu_vert++;}
|
||
if(feu_vert==1){sta_tsk(ID_avancer);}
|
||
if(STOP){
|
||
celerite=0;
|
||
dly_tsk(500);
|
||
ter_tsk(ID_asserv_tourelle);
|
||
ter_tsk(ID_asserv_direction);
|
||
ter_tsk(ID_periph_rx);
|
||
ter_tsk(ID_capteur_couleur);
|
||
ter_tsk(ID_avancer);
|
||
if(ultra==0){ultra++;
|
||
sta_tsk(ID_fonction_STOP);}
|
||
ter_tsk(ID_afficheur);
|
||
stp_cyc(ID_acqui);
|
||
ter_tsk(ID_emergency);
|
||
ter_tsk(ID_lecteur_M);
|
||
LED_R=!LED_R;
|
||
LED_J=!LED_J;
|
||
LED_V=!LED_V;
|
||
ter_tsk(ID_fonction_STOP);
|
||
}
|
||
/*
|
||
dly_tsk(100);
|
branch/dupriet/Emb_App/conf_noyau.cfg | ||
---|---|---|
name = ID_emergency;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority = 4;
|
||
priority = 1;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
... | ... | |
};
|
||
|
||
task[]{
|
||
entry_address = fonction_STOP();
|
||
name = ID_fonction_STOP;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority = 3;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
|
||
task[]{
|
||
entry_address = lecteur_M();
|
||
name = ID_lecteur_M;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority = 4;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
|
||
task[]{
|
||
entry_address = asserv_direction();
|
||
name = ID_asserv_direction;
|
||
stack_size = 256;
|
||
... | ... | |
name = ID_capteur_couleur;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority = 1;
|
||
priority = 4;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
Formats disponibles : Unified diff
dernier commit