Révision 233
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=ff002a
|
||
RESET=ff003a
|
branch/bacher/Emb_App/SessionM32C_E8a_system.hsf | ||
---|---|---|
"{55384715-F881-421C-A548-D7D1ABE158E1}PDMRWndInstanceKey0" "{WK_00000001_PDMR}EmbM32C87AppSessionM32C_E8a_system"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_DENORMAL_MODE" "0"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_EVAL_ROUND_MODE" "0"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_0" "0000000000000001"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "00000000000000C0"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_10" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_11" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_12" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_13" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_14" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000FF002A"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "0000000000000700"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_15" "0000000000000512"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000FF32EF"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000FFF800"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000000A48"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "000000000000084C"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "000000000000FFFF"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "00000000000000C0"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_21" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_22" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_23" "0000000000000000"
|
||
... | ... | |
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_31" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_32" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_33" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_34" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_34" "000000000000036A"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_35" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000007"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000FE0000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000A48"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000000512"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_8" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_9" "0000000000000000"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_COUNT" "36"
|
||
... | ... | |
"E:\tp_info6_2018_bacher\tp_info6\Emb_App\programme_principal_etud.c"
|
||
"E:\tp_info6_2018_bacher\tp_info6\Emb_App\crt0mr.a30"
|
||
"E:\tp_info6_2018_bacher\tp_info6\Emb_App\conf_noyau.cfg"
|
||
"E:\tp_info6_2018_bacher\tp_info6\Emb_App\Debug\mr308.inc"
|
||
"E:\tp_info6_2018_bacher\tp_info6\bsp\uart0.c"
|
||
"E:\tp_info6_2018_bacher\tp_info6\bsp\periph.c"
|
||
"E:\tp_info6_2018_bacher\tp_info6\bsp\uart0.c"
|
||
"E:\tp_info6_2018_bacher\tp_info6\Emb_App\Debug\mr308.inc"
|
||
[TARGET_NAME]
|
||
"M32C E8a SYSTEM" "" 0
|
||
[STATUSBAR_STATEINFO_VD1]
|
||
... | ... | |
[FLASH_DETAILS]
|
||
"" 0 0 "" 0 "" 0 0 "" 0 0 0 0 0 0 0 "" "" "" "" ""
|
||
[BREAKPOINTS]
|
||
"d:\profs\tp_info14_travail\tp_info14\emb_app\programme_principal_etud.c" 95 91139432 1 "{00000000-0000-0000-C000-000000000046}" ""
|
||
"d:\profs\tp_info14_travail\tp_info14\emb_app\programme_principal_etud.c" 95 93576520 1 "{00000000-0000-0000-C000-000000000046}" ""
|
||
[END]
|
branch/bacher/Emb_App/programme_principal_etud.c | ||
---|---|---|
int retour=0; //contient la valeur retourner par le p?riph
|
||
int k=3; //contient le gain du correcteur de la boucle de r?gulation de la tourelle
|
||
int k2=1; //contient le gain du correcteur de l'angle des roues
|
||
int vitesse=80; //vitesse en ligne droite
|
||
int vitesse_virage=30; //vitesse dans les virages
|
||
int vitesse=0; //vitesse en ligne droite
|
||
int vitesse_virage=0; //vitesse dans les virages
|
||
int valeur=0; //contient la valeur ? envoyer
|
||
int distance=0; //mesure de la distance gr?ce au t?l?m?re
|
||
int cons_roue=700; //consigne du placement au milieu de la route
|
||
int ang_roue=0; //correction de l'angle ? effectuer
|
||
int numcapt=0; //num?ro du dernier capteur
|
||
int colcapt=0; //couleur du dernier capteur
|
||
int retour_C; //couleur & num?ro
|
||
int i_tremplin=0; //bool?en : 1=ligne du tremplin 0=autres lignes
|
||
int i_ralenti=0;
|
||
int i=0; //bool?en : 1=acc?l?ration avant le tremplin et d?sactivation de la rotation des roues 0= fonctionnement normal
|
||
int retour_M;
|
||
int num_piste=0;
|
||
int col_feu=0;
|
||
int mode=0;
|
||
FLGPTN flag_capt;
|
||
FLGPTN flag_pist;
|
||
|
||
CanFrame vit_roue; //canal de commande de la vitesse
|
||
CanFrame capteur;
|
||
CanFrame piste;
|
||
|
||
void demarre()
|
||
{
|
||
dly_tsk(2000);
|
||
vit_roue.data.id='V';
|
||
vit_roue.data.rtr=0;
|
||
vit_roue.data.val=vitesse;
|
||
snd_dtq (CanTx,vit_roue.msg);
|
||
dly_tsk(2000);
|
||
|
||
|
||
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 0: //piste noire
|
||
vitesse=40;
|
||
vitesse_virage=30;
|
||
sta_tsk(ID_capteur);
|
||
break;
|
||
case 1: //piste verte
|
||
vitesse=70;
|
||
vitesse_virage=30;
|
||
mode=1;
|
||
break;
|
||
case 2: //piste bleue
|
||
vitesse=50;
|
||
vitesse_virage=30;
|
||
mode=1;
|
||
sta_tsk(ID_capteur);
|
||
break;
|
||
case 3: //piste rouge
|
||
vitesse=40;
|
||
vitesse_virage=30;
|
||
mode=0;
|
||
sta_tsk(ID_capteur);
|
||
break;
|
||
}
|
||
vit_roue.data.id='V';
|
||
vit_roue.data.rtr=0;
|
||
vit_roue.data.val=vitesse;
|
||
snd_dtq (CanTx,vit_roue.msg);
|
||
}
|
||
|
||
void asserv0()
|
||
... | ... | |
comm.data.val=valeur;
|
||
snd_dtq (CanTx,comm.msg); //on envoie la modification ? effectuer
|
||
if(retour!=cons) valeur=k*(cons-retour);
|
||
dly_tsk(3);
|
||
dly_tsk(10);
|
||
}
|
||
}
|
||
|
||
int calcul_virage(int a){
|
||
if (a>-10 && a<10){
|
||
return vitesse;}
|
||
else if(a>0&&a<50)
|
||
return -a/2+80;
|
||
//return (a*a)/100-a+vitesse;
|
||
else if(a<0&&a>-50)
|
||
return a/2+80;
|
||
//return (a*a)/100+a+vitesse;
|
||
else if (a<-100||a>100){
|
||
return vitesse_virage;
|
||
if (mode==0){
|
||
if (a>-30 && a<30) return vitesse;
|
||
else return vitesse_virage;
|
||
}
|
||
else return ((-(a*a)/100)+vitesse);
|
||
|
||
/*if (a<0){
|
||
return ((a*a)/200+a+vitesse);
|
||
if (mode==1){
|
||
if (a>-10 && a<10){
|
||
return vitesse;}
|
||
else if(a>0&&a<50)
|
||
return -a/2+vitesse;
|
||
//return (a*a)/100-a+vitesse;
|
||
else if(a<0&&a>-50)
|
||
return a/2+vitesse;
|
||
//return (a*a)/100+a+vitesse;
|
||
else if (a<-100||a>100){
|
||
return vitesse_virage;
|
||
}
|
||
else return ((-(a*a)/100)+vitesse);
|
||
}
|
||
else{
|
||
return ((a*a)/200-a+vitesse);
|
||
|
||
if (a>-50 && a<50) return vitesse;
|
||
else return vitesse_virage; */
|
||
if (mode==2){
|
||
if (a>-10 && a<10){
|
||
return vitesse;}
|
||
else if(a>0&&a<50)
|
||
|
||
return (a*a)/100-a+vitesse;
|
||
else if(a<0&&a>-50)
|
||
|
||
return (a*a)/100+a+vitesse;
|
||
else if (a<-100||a>100){
|
||
return vitesse_virage;
|
||
}
|
||
else return ((-(a*a)/100)+vitesse);
|
||
}
|
||
if (mode==3){
|
||
if (a<0){
|
||
return ((a*a)/200+a+vitesse);
|
||
}
|
||
else{
|
||
return ((a*a)/200-a+vitesse);
|
||
}
|
||
}
|
||
}
|
||
|
||
void mes_dist(){
|
||
... | ... | |
else {
|
||
distance=periph[ADDR('U')].val;
|
||
}
|
||
dly_tsk(3);
|
||
dly_tsk(20);
|
||
}
|
||
}
|
||
|
||
... | ... | |
CanFrame req,comm;
|
||
UINT flag;
|
||
while (1) {
|
||
req.data.id='D';
|
||
req.data.rtr=1;
|
||
periph[ADDR('D')].ev=0x01;
|
||
snd_dtq(CanTx, req.msg);
|
||
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);
|
||
ang_roue=periph[ADDR('D')].val;
|
||
wai_flg (ev_periph, 0x01, TWF_ANDW, &flag);
|
||
ang_roue=periph[ADDR('D')].val;
|
||
|
||
comm.data.id='D';
|
||
comm.data.rtr=0;
|
||
comm.data.val=k2*(distance-cons_roue);
|
||
vit_roue.data.val=calcul_virage(k2*(distance-cons_roue));
|
||
snd_dtq (CanTx,vit_roue.msg);
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(3);
|
||
comm.data.id='D';
|
||
comm.data.rtr=0;
|
||
if(i_tremplin==1) comm.data.val=0;
|
||
if(i_tremplin==0) comm.data.val=k2*(distance-cons_roue);
|
||
if(i_tremplin==0 && i_ralenti==0) {
|
||
vit_roue.data.val=calcul_virage(k2*(distance-cons_roue));
|
||
snd_dtq (CanTx,vit_roue.msg);
|
||
|
||
}
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(20);
|
||
|
||
}
|
||
}
|
||
|
||
void detect_capteur()
|
||
{
|
||
while(1){
|
||
|
||
capteur.data.id='C';
|
||
capteur.data.rtr=1;
|
||
periph[ADDR('C')].ev=0x03;
|
||
snd_dtq(CanTx, capteur.msg);
|
||
wai_flg (ev_periph, 0x03, TWF_ANDW, &flag_capt);
|
||
|
||
retour_C=periph[ADDR('C')].val;
|
||
numcapt=retour_C & 0x00ff;
|
||
colcapt=retour_C & 0xff00;
|
||
|
||
if (retour_C==0x5603 && i==0 && num_piste==3){ //si on passe le capteur avant le tremplin
|
||
i++;
|
||
dly_tsk(1500);
|
||
i_tremplin=1;
|
||
vit_roue.data.val=45;
|
||
snd_dtq (CanTx,vit_roue.msg);
|
||
/*dly_tsk(500);
|
||
vit_roue.data.val=30;
|
||
snd_dtq (CanTx,vit_roue.msg);*/
|
||
}
|
||
if (retour_C==0x4203 & num_piste==3){ //si on passe le capteur apr?s le tremplin
|
||
i_tremplin=0;
|
||
i_ralenti=1;
|
||
vit_roue.data.val=20;
|
||
snd_dtq (CanTx,vit_roue.msg);
|
||
i=0;
|
||
}
|
||
if (retour_C==0x5604 & num_piste==3){
|
||
vit_roue.data.val=vitesse;
|
||
snd_dtq (CanTx,vit_roue.msg);
|
||
i_ralenti=0;
|
||
}
|
||
if (retour_C==0x5604 & num_piste==2){
|
||
vit_roue.data.val=15;
|
||
snd_dtq (CanTx,vit_roue.msg);
|
||
i_ralenti=1;
|
||
}
|
||
if (retour_C==0x4204 & num_piste==2)
|
||
vit_roue.data.val=vitesse;
|
||
snd_dtq (CanTx,vit_roue.msg);
|
||
i_ralenti=0;
|
||
}
|
||
dly_tsk(20);
|
||
}
|
||
|
||
|
||
void main()
|
||
{
|
||
... | ... | |
sta_tsk(ID_mes_dist);
|
||
sta_tsk(ID_angle_roue);
|
||
sta_tsk(ID_demarre);
|
||
|
||
while(1){
|
||
}
|
||
|
||
//sta_tsk(ID_capteur);
|
||
|
||
while(1){/*
|
||
*/
|
||
}
|
||
}
|
||
|
||
void acqui()
|
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/03 16:29:27
|
||
// Generated by M3T-MR308 GUI Configurator at 2018/12/12 16:22:45
|
||
//
|
||
////////////////////////////////////////////////////////////////////////////////
|
||
|
||
... | ... | |
|
||
// max definition
|
||
maxdefine{
|
||
max_task = 7;
|
||
max_task = 8;
|
||
max_flag = 3;
|
||
max_dtq = 2;
|
||
max_cyh = 1;
|
||
... | ... | |
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
task[]{
|
||
entry_address = detect_capteur();
|
||
name = ID_capteur;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority = 1;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
|
||
flag[]{
|
||
name = ev_bus_fin_tr;
|
Formats disponibles : Unified diff
Le programme affecte des vitesses et active la détection de capteur en fonction de la piste