Révision 435
Ajouté par tibacher il y a plus de 6 ans
branch/bacher/Emb_App/SessionM32C_E8a_system.ini | ||
---|---|---|
[Target]
|
||
M32C E8a SYSTEM=Renesas Communications
|
||
[USER_DATA]
|
||
RESET=ff005a
|
||
RESET=ff00ac
|
branch/bacher/Emb_App/programme_principal_etud.c | ||
---|---|---|
int compte_tour=0;
|
||
int i_tour=0;
|
||
int stop=0;
|
||
int i_urgence=0;
|
||
int s_urgence=0;
|
||
int cu;
|
||
int i_urgence=0; //incr?ment d'urgence
|
||
int s_urgence=0; //signal d'urgence
|
||
int cu=0;
|
||
|
||
int Temps;
|
||
int sec;
|
||
int cent_sec;
|
||
char c_Temps[6];
|
||
|
||
FLGPTN flag_capt;
|
||
FLGPTN flag_pist;
|
||
|
||
CanFrame vit_roue; //canal de commande de la vitesse
|
||
CanFrame capteur;
|
||
CanFrame piste;
|
||
CanFrame demande_temps;
|
||
|
||
void demarre()
|
||
{
|
||
... | ... | |
piste.data.id='M';
|
||
piste.data.rtr=1;
|
||
periph[ADDR('M')].ev=0x04;
|
||
snd_dtq(CanTx, piste.msg);
|
||
wai_flg (ev_periph, 0x04, TWF_ANDW, &flag_pist);
|
||
|
||
retour_M=periph[ADDR('M')].val;
|
||
num_piste=retour_M & 0x007F;
|
||
switch(num_piste){
|
||
case 4: //piste noire
|
||
vitesse=30;
|
||
vitesse_virage=30;
|
||
mode=0;
|
||
break;
|
||
case 1: //piste verte
|
||
vitesse=70;
|
||
vitesse_virage=30;
|
||
mode=0;
|
||
break;
|
||
case 2: //piste bleue
|
||
vitesse=50;
|
||
vitesse_virage=30;
|
||
mode=0;
|
||
break;
|
||
case 3: //piste rouge
|
||
vitesse=60;
|
||
vitesse_virage=30;
|
||
mode=0;
|
||
break;
|
||
while(col_feu!=-1){
|
||
snd_dtq(CanTx, piste.msg);
|
||
wai_flg (ev_periph, 0x04, TWF_ANDW, &flag_pist);
|
||
|
||
retour_M=periph[ADDR('M')].val;
|
||
num_piste=retour_M & 0x007F;
|
||
col_feu=retour_M>>15;
|
||
|
||
switch(num_piste){
|
||
case 4: //piste noire
|
||
vitesse=30;
|
||
vitesse_virage=30;
|
||
mode=0;
|
||
break;
|
||
case 1: //piste verte
|
||
vitesse=65;
|
||
vitesse_virage=30;
|
||
mode=0;
|
||
break;
|
||
case 2: //piste bleue;
|
||
vitesse=50;
|
||
vitesse_virage=30;
|
||
mode=0;
|
||
break;
|
||
case 3: //piste rouge
|
||
vitesse=60;
|
||
vitesse_virage=30;
|
||
mode=0;
|
||
break;
|
||
}
|
||
dly_tsk(200);
|
||
}
|
||
sta_tsk(ID_LCD);
|
||
vit_roue.data.id='V';
|
||
vit_roue.data.rtr=0;
|
||
vit_roue.data.val=vitesse;
|
||
... | ... | |
CanFrame req;
|
||
CanFrame reponse;
|
||
while(1){
|
||
|
||
if(s_urgence==0){
|
||
|
||
req.data.id='R';
|
||
req.data.rtr=1;
|
||
... | ... | |
comm.data.val=valeur;
|
||
if(s_urgence==0)snd_dtq (CanTx,comm.msg); //on envoie la modification ? effectuer
|
||
if(retour!=cons) valeur=k*(cons-retour);
|
||
dly_tsk(20);
|
||
|
||
}
|
||
dly_tsk(20);
|
||
}
|
||
}
|
||
|
||
... | ... | |
CanFrame req;
|
||
UINT flag;
|
||
while(1){
|
||
|
||
if(s_urgence==0){
|
||
req.data.id='U';
|
||
req.data.rtr=1;
|
||
periph[ADDR('U')].ev=0x02;
|
||
... | ... | |
else {
|
||
distance=periph[ADDR('U')].val;
|
||
}
|
||
dly_tsk(10);
|
||
|
||
}
|
||
dly_tsk(10);
|
||
}
|
||
}
|
||
|
||
... | ... | |
CanFrame req,comm;
|
||
UINT flag;
|
||
while (1) {
|
||
|
||
if(s_urgence==0){
|
||
req.data.id='D';
|
||
req.data.rtr=1;
|
||
periph[ADDR('D')].ev=0x01;
|
||
... | ... | |
|
||
}
|
||
if(s_urgence==0)snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(10);
|
||
|
||
}
|
||
dly_tsk(10);
|
||
}
|
||
}
|
||
|
||
... | ... | |
numcapt=retour_C & 0x00ff;
|
||
if ((retour_C & 0xff00)!=colcapt) {
|
||
colcapt=retour_C & 0xff00;
|
||
//AFFICHAGE DE LA COULEUR ET DU CIRCUIT
|
||
switch(colcapt){
|
||
case 0x5600:
|
||
lcd_init();
|
||
lcd_str("vert");
|
||
break;
|
||
case 0x4a00:
|
||
lcd_init();
|
||
lcd_str("jaune");
|
||
break;
|
||
case 0x5200:
|
||
lcd_init();
|
||
lcd_str("rouge");
|
||
break;
|
||
case 0x4200:
|
||
lcd_init();
|
||
lcd_str("bleu");
|
||
break;
|
||
case 0x4300:
|
||
lcd_init();
|
||
lcd_str("cyan");
|
||
break;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
//COMPTEUR DE TOUR
|
||
|
||
... | ... | |
//CAPTEURS POUR LA PISTE ROUGE
|
||
if (retour_C==0x5603 && i==0 && num_piste==3){ //si on passe le capteur avant le tremplin
|
||
i++;
|
||
vitesse_virage=50;
|
||
dly_tsk(1500);
|
||
i_tremplin=1;
|
||
vitesse=45;
|
||
... | ... | |
vitesse_virage=20;
|
||
i=0;
|
||
}
|
||
if (retour_C==0x5604 && num_piste==3){ //on reprend les param?tres de d?part
|
||
|
||
if (retour_C==0x5604 && num_piste==3){
|
||
vitesse=40;
|
||
vitesse_virage=30;
|
||
i_ralenti=0;
|
||
}
|
||
|
||
if (retour_C==0x4304 && num_piste==3){ //on reprend les param?tres de d?part
|
||
vitesse=60;
|
||
vitesse_virage=30;
|
||
i_ralenti=0;
|
||
}
|
||
|
||
|
||
/*
|
||
//CAPTEURS POUR LA PISTE BLEUE
|
||
... | ... | |
while(1){
|
||
|
||
while (p0_4==0){
|
||
s_urgence=1;
|
||
vit_roue.data.val=0;
|
||
snd_dtq (CanTx,vit_roue.msg);
|
||
cu=1;
|
||
i_urgence=0;
|
||
}
|
||
vit_roue.data.val=0;
|
||
snd_dtq (CanTx,vit_roue.msg);
|
||
cu=1;
|
||
s_urgence=1;
|
||
i_urgence=0;
|
||
}
|
||
if (p0_4==1 && i_urgence==0){
|
||
i_urgence==1;
|
||
s_urgence=0;
|
||
vit_roue.data.val=vitesse;
|
||
snd_dtq (CanTx,vit_roue.msg);
|
||
cu=1;
|
||
}
|
||
i_urgence==1;
|
||
s_urgence=0;
|
||
vit_roue.data.val=vitesse;
|
||
snd_dtq (CanTx,vit_roue.msg);
|
||
cu=0;
|
||
}
|
||
dly_tsk(20);
|
||
}
|
||
}
|
||
|
||
char decode_int(int a){
|
||
switch(a){
|
||
case 0:
|
||
return '0';
|
||
break;
|
||
case 1:
|
||
return '1';
|
||
break;
|
||
case 2:
|
||
return '2';
|
||
break;
|
||
case 3:
|
||
return '3';
|
||
break;
|
||
case 4:
|
||
return '4';
|
||
break;
|
||
case 5:
|
||
return '5';
|
||
break;
|
||
case 6:
|
||
return '6';
|
||
break;
|
||
case 7:
|
||
return '7';
|
||
break;
|
||
case 8:
|
||
return '8';
|
||
break;
|
||
case 9:
|
||
return '9';
|
||
break;
|
||
}
|
||
}
|
||
|
||
void aff_LCD()
|
||
{
|
||
while(1){
|
||
//AFFICHAGE DE LA COULEUR ET DU CIRCUIT
|
||
switch(colcapt){
|
||
case 0x5600:
|
||
lcd_init();
|
||
lcd_str("vert_");
|
||
break;
|
||
case 0x4a00:
|
||
lcd_init();
|
||
lcd_str("jaun_");
|
||
break;
|
||
case 0x5200:
|
||
lcd_init();
|
||
lcd_str("roug_");
|
||
break;
|
||
case 0x4200:
|
||
lcd_init();
|
||
lcd_str("bleu_");
|
||
break;
|
||
case 0x4300:
|
||
lcd_init();
|
||
lcd_str("cyan_");
|
||
break;
|
||
}
|
||
switch(num_piste){
|
||
case 1:
|
||
lcd_str("verte Temps: ");
|
||
break;
|
||
case 2:
|
||
lcd_str("bleue Temps: ");
|
||
break;
|
||
case 3:
|
||
lcd_str("rouge Temps: ");
|
||
break;
|
||
case 4:
|
||
lcd_str("noire Temps: ");
|
||
break;
|
||
}
|
||
//AFFICHAGE DU TEMPS
|
||
demande_temps.data.id='H';
|
||
demande_temps.data.rtr=1;
|
||
snd_dtq (CanTx,demande_temps.msg); // Interrogation du peripherique sur le temps de course actuel.
|
||
Temps=periph[ADDR('H')].val;
|
||
c_Temps[0]=decode_int(Temps/1000);
|
||
c_Temps[1]=decode_int((Temps%1000)/100);
|
||
c_Temps[2]=':';
|
||
c_Temps[3]=decode_int(((Temps%1000)%100)/10);
|
||
c_Temps[4]=decode_int(((Temps%1000)%100)%10);
|
||
c_Temps[5]=' ';
|
||
dly_tsk(150);
|
||
lcd_str(c_Temps);
|
||
dly_tsk(20);
|
||
}
|
||
}
|
||
void main()
|
||
{
|
||
ports_mcu();
|
||
... | ... | |
sta_tsk(ID_demarre);
|
||
sta_tsk(ID_capteur);
|
||
sta_tsk(ID_urgence);
|
||
|
||
|
||
while(1){
|
||
/*
|
||
while (p0_4==0){
|
||
s_urgence=1;
|
||
vit_roue.data.val=0;
|
||
snd_dtq (CanTx,vit_roue.msg);
|
||
i_urgence=0;
|
||
}
|
||
if (p0_4==1 && i_urgence==0){
|
||
i_urgence==1;
|
||
s_urgence=0;
|
||
}*/
|
||
|
||
}
|
||
}
|
||
|
branch/bacher/Emb_App/conf_noyau.cfg | ||
---|---|---|
//
|
||
// kernel.cfg : building file for MR308 Ver.4.00
|
||
//
|
||
// Generated by M3T-MR308 GUI Configurator at 2018/12/20 16:21:00
|
||
// Generated by M3T-MR308 GUI Configurator at 2019/01/09 9:29:45
|
||
//
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
|
||
... | ... | |
|
||
// max definition
|
||
maxdefine{
|
||
max_task = 9;
|
||
max_task = 10;
|
||
max_flag = 3;
|
||
max_dtq = 2;
|
||
max_cyh = 1;
|
||
... | ... | |
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
task[]{
|
||
entry_address = aff_LCD();
|
||
name = ID_LCD;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority = 3;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
|
||
flag[]{
|
||
name = ev_bus_fin_tr;
|
Formats disponibles : Unified diff
affichage du circuit et du temps de course