Projet

Général

Profil

« Précédent | Suivant » 

Révision 225

Ajouté par zaschiano il y a plus de 6 ans

Ajout d'une tache détectant la piste et réglant les différentes consignes en fonction de la piste avant le départ.
Modification des asservissements pour passer la piste rouge.

Voir les différences:

branch/schiano/Emb_App.tws
[GENERAL_DATA]
[BREAKPOINTS]
[OPEN_WORKSPACE_FILES]
"E:\tp_info6_2018_schiano\tp_info6\bsp\periph.c"
"E:\tp_info6_2018_schiano\tp_info6\bsp\uart0.c"
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\conf_noyau.cfg"
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\crt0mr.a30"
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\Debug\mr308.inc"
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\Debug\sys_rom.inc"
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\programme_principal_etud.c"
[WORKSPACE_FILE_STATES]
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\Debug\mr308.inc" 50 50 1430 351 0 3
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\Debug\sys_rom.inc" 0 0 1430 351 0 4
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\Debug\mr308.inc" 125 125 1430 351 0 5
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\conf_noyau.cfg" 25 25 1430 351 0 1
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\crt0mr.a30" 50 50 1430 351 0 2
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\crt0mr.a30" 0 0 1596 539 0 2
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\programme_principal_etud.c" -8 -30 1596 539 1 0
"E:\tp_info6_2018_schiano\tp_info6\bsp\periph.c" 125 125 1430 351 0 3
"E:\tp_info6_2018_schiano\tp_info6\bsp\uart0.c" 25 25 1430 351 0 4
[LOADED_PROJECTS]
"EmbM32C87App"
[END]
branch/schiano/Emb_App/SessionM32C_E8a_system.ini
[Target]
M32C E8a SYSTEM=Renesas Communications
[USER_DATA]
RESET=ff002a
RESET=ff0030
branch/schiano/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" "0000000000000001"
"{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_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" "0000000000000512"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_16" "0000000000FF311B"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_17" "0000000000FFF800"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_18" "0000000000000A20"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_19" "0000000000000824"
"{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" "00000000000000C0"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_20" "0000000000000000"
"{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" "000000000000036A"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_34" "0000000000000000"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_35" "0000000000000000"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_4" "0000000000000004"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_5" "00000000001200FF"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_6" "0000000000000A20"
"{64753FED-D387-4B8C-A91D-D3419C869C07}C_REGISTER_REG_7" "0000000000000512"
"{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_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_ITEM0002_SCOPE" "Current Scope,"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003" "distancemur, 2, 0, P, Col, Hex, MA"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0003_SCOPE" "Current Scope,"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "4"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004" "angleRoue, 2, 0, P, Col, Hex, MA"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0004_SCOPE" "Current Scope,"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0005" "CouleurCapteur, 1, 0, P, Col, Hex, MA"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0005_SCOPE" "Current Scope,"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0006" "consigneVitesse, 1, 0, P, Col, Hex, MA"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0006_SCOPE" "Global,"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0007" "pistebleue, 1, 0, P, Col, Hex, MA"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEM0007_SCOPE" "Current Scope,"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd0ECX_WATCH_ITEMCnt" "8"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth0" "120"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth1" "150"
"{B266D880-6FA1-11D5-8613-00A024591A38}WatchWnd1ColWidth12" "200"
......
0
[WINDOW_POSITION_STATE_DATA_VD1]
"Help" "TOOLBAR 0" 59419 2 4 "0.00" 0 0 0 0 0 17 0 "" "0.0"
"{WK_00000001_CmdLine}" "WINDOW" 59422 0 2 "0.09" 365 0 0 350 200 17 0 "32771|32772|32778|<<separator>>|32773|32774|<<separator>>|32820|<<separator>>|32801|32824" "0.0"
"{WK_00000001_CmdLine}" "WINDOW" 59422 0 0 "0.11" 365 0 0 350 200 17 0 "32771|32772|32778|<<separator>>|32773|32774|<<separator>>|32820|<<separator>>|32801|32824" "0.0"
"{WK_00000001_DISASSEMBLY}" "WINDOW" 0 0 0 "0.00" 0 -4 -30 948 486 9 0 "" "0.0"
"{WK_00000001_EVENT}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59422 0 0 "0.11" 365 0 0 350 200 18 0 "32774|32775|32777|<<separator>>|32780|<<separator>>" "0.0"
"{WK_00000001_MEMORY}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59422 0 1 "0.23" 365 2 -1 350 200 2065 0 "42202|42203|42204|42233|<<separator>>|42206|42205|42230|42229|42207|<<separator>>|42208|42209|42210|49076|42228|42227|<<separator>>|42231|42232|42234|42235|<<separator>>|42211|<<separator>>|32796|32797" "0.0"
"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 3 "0.55" 365 0 0 350 200 18 0 "36756|36757|36758|36759|<<separator>>|36746|36747|<<separator>>|39531|<<separator>>|39500|39534|<<separator>>|36687" "0.0"
"{WK_00000001_OUTPUT}" "WINDOW" 59422 0 1 "1.00" 365 0 0 350 200 18 0 "36756|36757|36758|36759|<<separator>>|36746|36747|<<separator>>|39531|<<separator>>|39500|39534|<<separator>>|36687" "0.0"
"{WK_00000001_PDMR}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59422 0 4 "0.16" 365 0 0 350 200 18 0 "47300|47301|47302|47303|47304|47305|47314|47306|47307|47308|47311|47312|47313|42211|42509|42303" "0.0"
"{WK_00000001_REGISTERS}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59421 0 0 "1.00" 236 0 0 350 200 2065 0 "" "0.0"
"{WK_00000001_WATCH}EmbM32C87AppSessionM32C_E8a_system" "WINDOW" 59422 0 1 "0.18" 365 0 0 350 200 18 0 "32781|32783|<<separator>>|32771|32772|32773|<<separator>>|32786|<<separator>>|32810|32811" "0.0"
......
[WINDOW_POSITION_STATE_DATA_VD4]
[WINDOW_Z_ORDER]
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\programme_principal_etud.c"
"E:\tp_info6_2018_schiano\tp_info6\bsp\uart0.c"
"E:\tp_info6_2018_schiano\tp_info6\bsp\periph.c"
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\crt0mr.a30"
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\conf_noyau.cfg"
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\Debug\sys_rom.inc"
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\crt0mr.a30"
"E:\tp_info6_2018_schiano\tp_info6\Emb_App\Debug\mr308.inc"
[TARGET_NAME]
"M32C E8a SYSTEM" "" 0
......
[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 94254904 1 "{00000000-0000-0000-C000-000000000046}" ""
"d:\profs\tp_info14_travail\tp_info14\emb_app\programme_principal_etud.c" 95 0 1 "{00000000-0000-0000-C000-000000000046}" ""
[END]
branch/schiano/Emb_App/programme_principal_etud.c
unsigned int alpha =0;
unsigned int teta =100;
unsigned int consignealpha = 450;
unsigned int consignealpha = 450; //450 >722
unsigned int angleRoue =0;
unsigned int distancemur =722;
unsigned int consignedistance = 710; //722 piste verte
int pistebleue =0;
unsigned int distancemur =725;
unsigned int consignedistance = 725; //722 piste verte 710 piste bleue 761
unsigned int vitesselignedroite =0;
unsigned int vitessevirage =0;
int h;
int go=0;
int numero;
int Couleurperso =0;
int consigneVitesse;
int CouleurCapteur ='V';
int k=2;
......
void main()
{
CanFrame go;
CanFrame start;
CanFrame Numpiste;
ports_mcu();
lcd_init();
periph_init();
periph_nom("#AutoTest*");
periph_nom("#Schiano*");
can_init();
clavier_init(1);
......
sta_cyc(ID_acqui);
sta_tsk(ID_periph_rx);
sta_cyc(ID_asserv1);
sta_cyc(ID_asserv1); //asservissement telemetre
sta_tsk(ID_asserv0);
sta_cyc(ID_asservangleroue);
sta_cyc(ID_asservangleroue); //assservissement angle roue
sta_tsk(ID_asservRoue);
Numpiste.data.id='M';
Numpiste.data.rtr=1;
snd_dtq (CanTx,Numpiste.msg);
dly_tsk(500);
numero=periph[ADDR('M')].val<<8;
sta_tsk(ID_numpiste);
while(go!=1); //attente detection de la piste
dly_tsk(500);
go.data.id='V';
go.data.rtr=0;
go.data.val=30; //consigne de vitesse de la voiture
start.data.id='V';
start.data.rtr=0;
start.data.val=vitesselignedroite; //consigne de vitesse de la voiture
snd_dtq (CanTx,go.msg);
sta_tsk(ID_AsservVitesse);
snd_dtq (CanTx,start.msg);
sta_tsk(ID_AsservVitesse); //gestion des couleurs
//sta_cyc(ID_asservVitesseCyc);
while(1)
{
{
//LED_J=1;
//dly_tsk(100);
//LED_J=0;
......
LED_V=!LED_V;
}
void numpiste()
{
while(1){
switch(numero){
case(256) : //verte
vitesselignedroite =80;
vitessevirage =35;
consignealpha = 400;
consignedistance = 880;
go =1;
break;
case(512) : //bleue
vitesselignedroite =65;
vitessevirage =25;
consignealpha = 400;
consignedistance = 775;
go =1;
break;
case(768) : //rouge
vitesselignedroite =65;
vitessevirage =25;
consignealpha = 450;
consignedistance = 700;
go=1;
break;
case(1024) : //noir
vitesselignedroite =25;
vitessevirage =25;
consignealpha = 450;
consignedistance = 760;
go=1;
break;
}
ext_tsk();
}
+
}
void asserv0()
{
CanFrame comm;
......
snd_dtq (CanTx,demandeU.msg); //Interrogation du peripherique
//rcv_dtq (CanRx,&reponseU.msg); //Attente de la reponse
if (periph[ADDR('U')].val < 1000){
if (periph[ADDR('U')].val < 1500){
distancemur = periph[ADDR('U')].val;
}
dly_tsk(6);
......
}
void asservangleroue(){
if (distancemur != consignedistance)angleRoue=kp*(consignedistance - distancemur);
//if (distancemur < 400)angleRoue = -200;
//if ((distancemur < 900)&&(distancemur > 400))angleRoue = 0;
//if (distancemur > 900)angleRoue = 200;
if(Couleurperso==0x7601);
else {
if (distancemur != consignedistance)angleRoue=kp*(consignedistance - distancemur);
}
}
void AsservVitesse(){
......
demandeCapteur.data.rtr=1;
snd_dtq (CanTx,demandeCapteur.msg); // demande couleur capteur
pistebleue = periph[ADDR('C')].val;
Couleurperso = periph[ADDR('C')].val;
CouleurCapteur = periph[ADDR('C')].val>>2;
if ((CouleurCapteur == 0x1580)||(CouleurCapteur == 0x1581)) {
consigneVitesse = 65; // 65 sur la piste verte
if ((CouleurCapteur == 0x1580)||(CouleurCapteur == 0x1581)||(CouleurCapteur == 0x1da0)) {
consigneVitesse = vitesselignedroite;
}
else {
consigneVitesse = 25; // 35 piste verte
if(Couleurperso == 0x7601){
consigneVitesse = 45;
}
else{
consigneVitesse = vitessevirage;
}
}
//if (pistebleue == 0x5604)consigneVitesse = 40; //d?c?l?ration pour le saut piste bleue
vitesse.data.id='V';
vitesse.data.rtr=0;
......
snd_dtq (CanTx,vitesse.msg);
dly_tsk(100);
dly_tsk(30);
}
}
branch/schiano/Emb_App/conf_noyau.cfg
};
task[]{
entry_address = numpiste();
name = ID_numpiste;
stack_size = 256;
stack_section = stack;
priority = 3;
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = asserv0();
name = ID_asserv0;
stack_size = 256;
stack_section = stack;
priority = 4;
priority = 5;
initial_start = OFF;
exinf = 0x0;
};
......
name = ID_asservRoue;
stack_size = 256;
stack_section = stack;
priority = 5;
priority = 3;
initial_start = OFF;
exinf = 0x0;
};
......
name = ID_AsservVitesse;
stack_size = 256;
stack_section = stack;
priority = 3;
priority = 4;
initial_start = OFF;
exinf = 0x0;
};
......
exinf = 0x0;
start = OFF;
phsatr = OFF;
interval_counter = 50;
interval_counter = 15;
phs_counter = 0x0;
};
......
//
// End of Configuration
//
//

Formats disponibles : Unified diff