Projet

Général

Profil

« Précédent | Suivant » 

Révision 539

Ajouté par louisdupriet il y a plus de 6 ans

dernier commit

Voir les différences:

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