Projet

Général

Profil

« Précédent | Suivant » 

Révision 234

Ajouté par codiagne il y a plus de 6 ans

Fin piste verte

Voir les différences:

branch/diagne/Emb_App/SessionM32C_FoUSB_UART.hsf
[HIMDBVersion]
2.0
[DATABASE_VERSION]
"2.2"
"2.3"
[SESSION_DETAILS]
""
[INFORMATION]
......
[WINDOW_POSITION_STATE_DATA_VD3]
[WINDOW_POSITION_STATE_DATA_VD4]
[WINDOW_Z_ORDER]
[TARGET_NAME]
"M32C FoUSB/UART" "" 0
[STATUSBAR_STATEINFO_VD1]
"MasterShowState" 1
"ApplicationShowState" 1
......
[STATUSBAR_DEBUGGER_PANESTATE_VD2]
[STATUSBAR_DEBUGGER_PANESTATE_VD3]
[STATUSBAR_DEBUGGER_PANESTATE_VD4]
[TARGET_NAME]
"M32C FoUSB/UART"
[DEBUGGER_OPTIONS]
"Unknown Options"
[DOWNLOAD_MODULES]
......
"FALSE"
[DISABLE_MEMORY_ACCESS_DURING_EXECUTION]
"FALSE"
[DEBUGGER_OPTIONS_PROPERTIES]
"0"
[COMMAND_FILES]
[DEFAULT_DEBUG_FORMAT]
"IEEE695_RENESAS"
branch/diagne/Emb_App/SessionM32C_Simulator.hsf
[HIMDBVersion]
2.0
[DATABASE_VERSION]
"2.2"
"2.3"
[SESSION_DETAILS]
""
[INFORMATION]
......
[WINDOW_POSITION_STATE_DATA_VD3]
[WINDOW_POSITION_STATE_DATA_VD4]
[WINDOW_Z_ORDER]
[TARGET_NAME]
"" "" 0
[STATUSBAR_STATEINFO_VD1]
"MasterShowState" 1
"ApplicationShowState" 1
......
[STATUSBAR_DEBUGGER_PANESTATE_VD2]
[STATUSBAR_DEBUGGER_PANESTATE_VD3]
[STATUSBAR_DEBUGGER_PANESTATE_VD4]
[TARGET_NAME]
""
[DEBUGGER_OPTIONS]
""
[DOWNLOAD_MODULES]
......
"FALSE"
[DISABLE_MEMORY_ACCESS_DURING_EXECUTION]
"FALSE"
[DEBUGGER_OPTIONS_PROPERTIES]
"0"
[COMMAND_FILES]
[DEFAULT_DEBUG_FORMAT]
""
branch/diagne/Emb_App/programme_principal_etud.c
short alpha;
short vitesse, longueur;
short pos;
void Asserv0(){
CanFrame req, comm;
UINT flag;
while (1)
{
req.data.id='R';
req.data.rtr=1;
//requ?te de lecture
CanFrame req,reponse,comm;
UINT flag;
while(1)
{
req.data.id='R'; //lecture angle de la tourelle
req.data.rtr=1; //requ?te de lecture
snd_dtq(CanRx, req.msg);
//Attente de la r?ponse
//rcv_dtq(CanRx, &reponse.msg);
periph[ADDR('R')].ev=0x01;
snd_dtq(CanTx, req.msg);
//Attente de la r?ponse
wai_flg (ev_periph, 0x01, TWF_ANDW, &flag);
pos=periph[ADDR('R')].val;
//Lecture de la valeur
//CanFrame demande;
//CanFrame reponse;
//CanFrame comm;
snd_dtq(CanTx,req.msg);
wai_flg(ev_periph, 0x01, TWF_ANDW,&flag);
alpha=periph[ADDR('R')].val;
//Vitesse de la tourelle
comm.data.id='T';
comm.data.rtr=0;
comm.data.val=450-pos; // Pour un gain de 1, on regule pour avoir 45degr?s
snd_dtq (CanTx,comm.msg);
}
comm.data.val=450-alpha; // Pour un gain de 1, on regule pour avoir 45degr?s
snd_dtq(CanTx,comm.msg);
dly_tsk(100);
}
}
void distance(){
CanFrame req;
UINT flag;
req.data.id='U';
req.data.rtr=1;
periph[ADDR('U')].ev=0x01;
snd_dtq(CanTx, req.msg);
//Attente de la r?ponse
wai_flg (ev_periph, 0x01, TWF_ANDW, &flag);
longueur=periph[ADDR('U')].val;
}
void regulation_roue(){
CanFrame req;
while(1){
UINT flag;
req.data.id='D';
req.data.rtr=0;
req.data.val=2*(longueur-737);
snd_dtq(CanTx, req.msg);
}
CanFrame req,reponse,comm;
UINT flag;
while(1)
{
req.data.id='U'; //lecture angle de la tourelle
req.data.rtr=1; //requ?te de lecture
snd_dtq(CanRx, req.msg);
//Attente de la r?ponse
//rcv_dtq(CanRx, &reponse.msg);
periph[ADDR('U')].ev=0x01;
snd_dtq(CanTx,req.msg);
wai_flg(ev_periph, 0x01, TWF_ANDW,&flag);
alpha=periph[ADDR('U')].val;
//Vitesse de la tourelle
comm.data.id='D';
comm.data.rtr=0;
comm.data.val=-(450-alpha); // Pour un gain de 1, on regule pour avoir 45degr?s
snd_dtq(CanTx,comm.msg);
dly_tsk(100);
}
}
void Avancer(){
CanFrame requete;
CanFrame req;
dly_tsk(6000);
req.data.id='V';
req.data.rtr=0;
req.data.val=15;
snd_dtq(CanTx,req.msg);
dly_tsk(5000);
//test avec vitesse
requete.data.id='V';
requete.data.rtr=0;
requete.data.val=48;
snd_dtq(CanTx, requete.msg);
}
}
void main()
{
CanFrame requete,reponse,comm;
CanFrame req,reponse,comm;
ports_mcu();
lcd_init();
periph_init();
......
clavier_init(1);
capture_init();
//Variables globales utlis?es par les asservissements
sta_cyc(ID_acqui);
sta_tsk(ID_periph_rx);
sta_tsk(ID_periph_rx);
sta_tsk(ID_Asserv0);
distance;
regulation_roue;
distance();
Avancer();
sta_tsk(ID_Avancer);
sta_tsk(ID_roue);
while(1)
{
......
dly_tsk(100);
LED_J=0;
dly_tsk(100);
}
}
}
void acqui()
branch/diagne/Emb_App/conf_noyau.cfg
name = ID_Asserv0;
stack_size = 256;
stack_section = stack;
priority = 9;
priority = 5;
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = Avancer();
name = ID_Avancer;
stack_size = 256;
stack_section = stack;
priority = 7;
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = regulation_roue();
name = ID_roue;
stack_size = 256;
stack_section = stack;
priority = 7;
initial_start = OFF;
exinf = 0x0;
};
flag[]{
name = ev_bus_fin_tr;
initial_pattern = 0x0000;

Formats disponibles : Unified diff