Révision 222
Ajouté par maporte3 il y a plus de 6 ans
branch/porte/Emb_App.tws | ||
---|---|---|
[GENERAL_DATA]
|
||
[BREAKPOINTS]
|
||
[OPEN_WORKSPACE_FILES]
|
||
"E:\tp_info6_2018_porte\tp_info6\bsp\periph.c"
|
||
"E:\tp_info6_2018_porte\tp_info6\Emb_App\conf_noyau.cfg"
|
||
"E:\tp_info6_2018_porte\tp_info6\Emb_App\crt0mr.a30"
|
||
"E:\tp_info6_2018_porte\tp_info6\Emb_App\Debug\mr308.inc"
|
||
"E:\tp_info6_2018_porte\tp_info6\Emb_App\programme_principal_etud.c"
|
||
[WORKSPACE_FILE_STATES]
|
||
"E:\tp_info6_2018_porte\tp_info6\Emb_App\Debug\mr308.inc" 100 100 1430 351 0 2
|
||
"E:\tp_info6_2018_porte\tp_info6\Emb_App\conf_noyau.cfg" -541 203 1426 347 0 0
|
||
"E:\tp_info6_2018_porte\tp_info6\Emb_App\conf_noyau.cfg" 0 0 1426 347 0 0
|
||
"E:\tp_info6_2018_porte\tp_info6\Emb_App\crt0mr.a30" -8 -30 1596 539 1 3
|
||
"E:\tp_info6_2018_porte\tp_info6\Emb_App\programme_principal_etud.c" 50 50 1430 351 0 1
|
||
"E:\tp_info6_2018_porte\tp_info6\bsp\periph.c" 100 100 1430 351 0 4
|
||
[LOADED_PROJECTS]
|
||
"EmbM32C87App"
|
||
[END]
|
branch/porte/Emb_App/SessionM32C_E8a_system.ini | ||
---|---|---|
[Target]
|
||
M32C E8a SYSTEM=Renesas Communications
|
||
[USER_DATA]
|
||
RESET=ff003c
|
||
RESET=ff0042
|
branch/porte/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_0" "0000000000000044"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_1" "0000000000000000"
|
||
"{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" "0000000000FF003C"
|
||
"{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" "0000000000FF054A"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000FFF800"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000000B36"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "000000000000086E"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_2" "0000000000000001"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "0000000000004044"
|
||
"{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" "0000000000000004"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "0000000000000009"
|
||
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000B6A"
|
||
"{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"
|
||
... | ... | |
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH" "c,buff,n,rx,flag,"
|
||
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000" "Distance, 2, 0, P, Col, Hex, MA"
|
||
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0000_SCOPE" "Current Scope,"
|
||
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "1"
|
||
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001" "Somme_ErreurRoues, 2, 0, P, Col, Hex, MA"
|
||
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0001_SCOPE" "Current Scope,"
|
||
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002" "Delta_Erreur, 2, 0, P, Col, Hex, MA"
|
||
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0002_SCOPE" "Current Scope,"
|
||
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "ErreurRoues, 2, 0, P, Col, Hex, MA"
|
||
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003_SCOPE" "Current Scope,"
|
||
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "Bord_defaut, 2, 0, P, Col, Hex, MA"
|
||
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004_SCOPE" "Current Scope,"
|
||
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "5"
|
||
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120"
|
||
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150"
|
||
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "200"
|
||
... | ... | |
[WINDOW_POSITION_STATE_DATA_VD4]
|
||
[WINDOW_Z_ORDER]
|
||
"E:\tp_info6_2018_porte\tp_info6\Emb_App\crt0mr.a30"
|
||
"E:\tp_info6_2018_porte\tp_info6\Emb_App\conf_noyau.cfg"
|
||
"E:\tp_info6_2018_porte\tp_info6\Emb_App\programme_principal_etud.c"
|
||
"E:\tp_info6_2018_porte\tp_info6\Emb_App\Debug\mr308.inc"
|
||
"E:\tp_info6_2018_porte\tp_info6\Emb_App\conf_noyau.cfg"
|
||
"E:\tp_info6_2018_porte\tp_info6\bsp\periph.c"
|
||
[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 90832792 1 "{00000000-0000-0000-C000-000000000046}" ""
|
||
"d:\profs\tp_info14_travail\tp_info14\emb_app\programme_principal_etud.c" 95 94889256 1 "{00000000-0000-0000-C000-000000000046}" ""
|
||
[END]
|
branch/porte/Emb_App/programme_principal_etud.c | ||
---|---|---|
unsigned int Consigne_T=500; //Consigne de l'angle de la tourelle
|
||
unsigned int valeur=0; //valeur transmise corrig?
|
||
unsigned int Somme_Erreur=0, Erreur=0, Delta_Erreur=0, Erreur_pre=0;
|
||
int Kp=1.5, Kpr=1.6; //Param?tre des PID tourelle et roues
|
||
int Ki=4, Kir=10;
|
||
unsigned int ErreurRoues=0, ErreurRouesPre=0, Delta_ErreurRoues=0,Somme_ErreurRoues=0;
|
||
int Kp=1.5, Kpr=2; //Param?tre des PID tourelle et roues
|
||
int Ki=4, Kir=30;
|
||
int Kd=1.5, Kdr=1;
|
||
unsigned int Vitesse=42,Distance;
|
||
int i;
|
||
unsigned int Vitesse_final=35, Vitesse_commande=5, Distance;
|
||
unsigned int Angle_R=0; //Angle des roues
|
||
unsigned int ErreurRoues=0, ErreurRouesPre=0, Delta_ErreurRoues=0,Somme_ErreurRoues=0;
|
||
unsigned int Info_capteur;
|
||
unsigned int Bord_defaut=0, Distance_pre=660;
|
||
|
||
|
||
void Asserv_T(){
|
||
void Asserv_T(){
|
||
|
||
|
||
//'T'/84/0x54?: Commande en vitesse de la tourelle portant le telemetre (en 1/10 de degre/secondes).
|
||
//'R'/82/0x52?: Lecture de l'angle effectif de la tourelle portant le telemetre (en 1/10 de degre).
|
||
CanFrame comm;
|
||
... | ... | |
comm.data.val=valeur;
|
||
snd_dtq (CanTx,comm.msg);//Envoi de la commande
|
||
|
||
dly_tsk(200);
|
||
dly_tsk(100);
|
||
}
|
||
}
|
||
|
||
void Asserv_T_hc(){
|
||
|
||
Erreur_pre=Erreur;
|
||
Erreur=Consigne_T-Angle_T;
|
||
Delta_Erreur=Erreur-Erreur_pre;
|
||
Somme_Erreur+=Erreur;
|
||
|
||
if(Angle_T!=Consigne_T)
|
||
valeur=Kp*Erreur+Kd*Delta_Erreur+(1/Ki)*Somme_Erreur;//correction de l'angle par handler cyclique de la tourelle
|
||
}
|
||
|
||
void Asserv_R(){
|
||
|
||
//'D'/68/0x44?: Commande de l'angle des roues directrices (en 1/10 de degre).
|
||
//'U'/85/0x55?: Distance mesuree par le telemetre (1/100 de metre).
|
||
CanFrame comm;
|
||
CanFrame demande;
|
||
CanFrame reponse;
|
||
|
||
while(1){
|
||
|
||
demande.data.id='U';
|
||
demande.data.rtr=1;
|
||
|
||
snd_dtq (CanTx,demande.msg); // Interrogation du peripherique
|
||
Distance=periph[ADDR('U')].val; // contient la valeur de retour du simulateur.
|
||
|
||
comm.data.id='D'; //Commande de l'angle des roues
|
||
comm.data.rtr=0;
|
||
comm.data.val=Angle_R;
|
||
snd_dtq (CanTx,comm.msg);//Envoi de la commande
|
||
|
||
dly_tsk(5);
|
||
dly_tsk(4);
|
||
}
|
||
}
|
||
|
||
void Asserv_R_hc(){
|
||
|
||
ErreurRouesPre=ErreurRoues;
|
||
ErreurRoues=660-Distance;
|
||
Delta_ErreurRoues=ErreurRoues-ErreurRouesPre;
|
||
Somme_ErreurRoues+=ErreurRoues;
|
||
|
||
if(Distance != 660 && Bord_defaut == 0)
|
||
Angle_R=-1*(Kpr*ErreurRoues+Kdr*Delta_Erreur+(1/Kir)*Somme_ErreurRoues);//correction de l'angle par handler cyclique des roues
|
||
}
|
||
|
||
|
||
void Asserv_V(){
|
||
|
||
//'V'/86/0x56?: Commande en vitesse des roues motrices du vehicule (en radian /secondes).
|
||
... | ... | |
CanFrame reponse;
|
||
while(1){
|
||
|
||
dly_tsk(2600);
|
||
dly_tsk(3000);
|
||
comm.data.id='V'; //Commande de l'angle des roues
|
||
comm.data.rtr=0;
|
||
comm.data.val=Vitesse;
|
||
comm.data.rtr=0;
|
||
|
||
//Rampe de vitesse au d?marrage
|
||
for(i=0;i++;Vitesse_final < Vitesse_commande){
|
||
comm.data.val=Vitesse_final-Vitesse_commande+i;
|
||
snd_dtq (CanTx,comm.msg); //Envoi de la commande de vitesse
|
||
dly_tsk(100);
|
||
}
|
||
|
||
comm.data.val=Vitesse_final;
|
||
snd_dtq (CanTx,comm.msg);//Envoi de la commande de vitesse
|
||
|
||
dly_tsk(500);
|
||
dly_tsk(200);
|
||
}
|
||
}
|
||
|
||
void Asserv_T_hc(){
|
||
/*
|
||
void Capteur(){
|
||
|
||
Erreur_pre=Erreur;
|
||
Erreur=Consigne_T-Angle_T;
|
||
Delta_Erreur=Erreur-Erreur_pre;
|
||
Somme_Erreur+=Erreur;
|
||
//'C'/67/0x43?: Informations sur le dernier capteur touche :
|
||
// 8 bits de poids faible?: numero du capteur
|
||
// 8 bits de poids fort?: couleur ('C','R','J','B' ou 'V')
|
||
CanFrame comm;
|
||
CanFrame demande;
|
||
CanFrame reponse;
|
||
|
||
if(Angle_T!=Consigne_T)
|
||
valeur=Kp*Erreur+Kd*Delta_Erreur+(1/Ki)*Somme_Erreur;//correction de l'angle par handler cyclique de la tourelle
|
||
while(1){
|
||
|
||
demande.data.id='C';
|
||
demande.data.rtr=1;
|
||
snd_dtq (CanTx,demande.msg); // Interrogation du peripherique sur les donnees du dernier capteur touch?.
|
||
Info_capteur=periph[ADDR('C')].val>>2; // contient la valeur de retour du simulateur sur le dernier capteur touch?.
|
||
}
|
||
|
||
|
||
}*/
|
||
|
||
void Asserv_R_hc(){
|
||
void Distance_bord(){
|
||
|
||
ErreurRouesPre=ErreurRoues;
|
||
ErreurRoues=660-Distance;
|
||
Delta_ErreurRoues=ErreurRoues-ErreurRouesPre;
|
||
Somme_ErreurRoues+=ErreurRoues;
|
||
//'U'/85/0x55?: Distance mesuree par le telemetre (1/100 de metre).
|
||
CanFrame comm;
|
||
CanFrame demande;
|
||
CanFrame reponse;
|
||
|
||
if(Distance!=660)
|
||
Angle_R=-Kpr*ErreurRoues+Kdr*Delta_Erreur+(1/Kir)*Somme_ErreurRoues;//correction de l'angle par handler cyclique des roues
|
||
while(1){
|
||
|
||
demande.data.id='U';
|
||
demande.data.rtr=1;
|
||
|
||
snd_dtq (CanTx,demande.msg); // Interrogation du peripherique sur la distance mesure par le telemetre.
|
||
Distance=periph[ADDR('U')].val; // contient la valeur de retour du simulateur sur la distance mesur? par le telemetre.
|
||
|
||
if(Distance > 660+300){
|
||
Bord_defaut=1;
|
||
}
|
||
else if(Distance < 660-300){
|
||
Bord_defaut=1;
|
||
}
|
||
else{
|
||
Bord_defaut=0;
|
||
}
|
||
Distance_pre=Distance;
|
||
|
||
dly_tsk(10);
|
||
}
|
||
|
||
}
|
||
|
||
void main()
|
||
{
|
||
... | ... | |
sta_tsk(ID_Asserv_R);
|
||
sta_cyc(ID_Asserv_R_hc);
|
||
|
||
sta_tsk(ID_Asserv_V);
|
||
sta_tsk(ID_Asserv_V);
|
||
|
||
sta_tsk(ID_Distance_bord);
|
||
|
||
while(1)
|
||
{
|
branch/porte/Emb_App/conf_noyau.cfg | ||
---|---|---|
name = ID_Asserv_T;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority = 4;
|
||
priority = 5;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
... | ... | |
name = ID_Asserv_V;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority = 4;
|
||
priority = 6;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
|
||
task[]{
|
||
entry_address = Distance_bord();
|
||
name = ID_Distance_bord;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority = 7;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
|
||
flag[]{
|
||
name = ev_bus_fin_tr;
|
||
initial_pattern = 0x0000;
|
||
... | ... | |
phs_counter = 0x0;
|
||
};
|
||
|
||
|
||
vdataqueue[]{
|
||
name = QdmTouche;
|
||
wait_queue = TA_TFIFO;
|
Formats disponibles : Unified diff
Ajout d'une tache qui détecte la présence d'un trou dans les barrières
La consigne des roue réagit en conséquence.
--> Piste bleu réussite