Révision 182
Ajouté par crzemeta il y a plus de 6 ans
branch/zemeta/Emb_App/SessionM32C_E8a_system.ini | ||
---|---|---|
[Target]
|
||
M32C E8a SYSTEM=Renesas Communications
|
||
[USER_DATA]
|
||
RESET=ff0018
|
||
RESET=ff001a
|
branch/zemeta/Emb_App/programme_principal_etud.c | ||
---|---|---|
// disponible. 0xab avec a-> nombre de couleurs bien plac?es et b -> couleurs pr?sentes mais mal plac?es.
|
||
//'I'/73/Ox49 : D?finition du nom du v?hicule. Doit d?buter par le caract?re '#' et entraine le chargement de la configuration de piste
|
||
// correspondant au nom du v?hicule si le nom se termine par '*'
|
||
CanFrame comm;
|
||
CanFrame comm,comm2;
|
||
unsigned short alpha ;
|
||
unsigned short k=1, angle_reel, error ;
|
||
unsigned short consigne= 450 ;
|
||
CanFrame requete, reponse ;
|
||
unsigned short k=1, angle_reel, error,error2,vitesse_reel, distance,d_reel ;
|
||
unsigned short consigne= 450 , vitesse = 12 ;
|
||
CanFrame requete,requete2,reponse, reponse3,requete3 ;
|
||
|
||
|
||
void main()
|
||
{
|
||
|
||
//short vitesse = 120 ;
|
||
|
||
{
|
||
ports_mcu();
|
||
lcd_init();
|
||
periph_init();
|
||
... | ... | |
//sta_tsk(id_acqui_pos);
|
||
//sta_tsk(id_avance);
|
||
//sta_tsk(id_telemetre);
|
||
sta_tsk(id_ass);
|
||
// sta_tsk(ID_periph_rx);
|
||
sta_tsk(id_ass_t);
|
||
sta_tsk(id_dist);
|
||
|
||
sta_tsk(ID_periph_rx);
|
||
|
||
while(1)
|
||
{
|
||
... | ... | |
comm.data.rtr = 0 ;
|
||
comm.data.val = 120 ;
|
||
snd_dtq(CanTx, comm.msg) ;
|
||
|
||
/*dly_tsk (1000) ;
|
||
comm.data.id = 'T' ;
|
||
comm.data.rtr = 0 ;
|
||
comm.data.val = 0 ;
|
||
snd_dtq(CanTx, comm.msg) ;
|
||
dly_tsk (1000) ; */
|
||
|
||
|
||
|
||
}
|
||
}
|
||
|
||
... | ... | |
requete.data.id = 'R' ; // variable requete sert a envoyter une requete.
|
||
requete.data.rtr = 1 ;
|
||
snd_dtq(CanTx, requete.msg);
|
||
rcv_dtq(CanRx, &reponse.msg);
|
||
//if (reponse.data.val > 45 )
|
||
alpha = reponse.data.val ;
|
||
//rcv_dtq(CanRx, &reponse.msg);
|
||
dly_tsk(100) ;
|
||
alpha = periph[ADDR('R')].val; // reponse.data.val ;
|
||
|
||
}
|
||
}
|
||
|
||
... | ... | |
{
|
||
comm.data.id = 'V' ;
|
||
comm.data.rtr = 0 ;
|
||
comm.data.val = 10 ;
|
||
comm.data.val = vitesse ;
|
||
snd_dtq(CanTx, comm.msg) ;
|
||
}
|
||
}
|
||
|
||
|
||
void asservissement_voiture()
|
||
void asservissement_tourelle()
|
||
{
|
||
|
||
while(1)
|
||
{
|
||
/*// envoie commande deplacement voiture
|
||
|
||
/* //commande vitesse voiture
|
||
comm.data.id = 'V' ;
|
||
comm.data.rtr = 0 ;
|
||
comm.data.val = 20 ;
|
||
comm.data.val = vitesse ;
|
||
snd_dtq(CanTx, comm.msg) ;*/
|
||
|
||
// envoie commande tourelle
|
||
/*comm.data.id = 'T' ;
|
||
comm.data.rtr = 0 ;
|
||
comm.data.val = consigne ;
|
||
snd_dtq(CanTx, comm.msg) ;*/
|
||
|
||
//recuperation position tourelle
|
||
requete.data.id = 'R' ; // variable requete sert a envoyter une requete.
|
||
requete.data.rtr = 1 ;
|
||
snd_dtq(CanTx, requete.msg);
|
||
rcv_dtq(CanRx, &reponse.msg);
|
||
angle_reel = reponse.data.val ;
|
||
dly_tsk(500) ;
|
||
angle_reel = periph[ADDR('R')].val; // lecture donn?e avec
|
||
|
||
|
||
//asservissement position tourelle
|
||
error = consigne - angle_reel ;
|
||
// envoie nouvelle commande tourelle
|
||
comm.data.id = 'T' ;
|
||
comm.data.rtr = 0 ;
|
||
comm.data.val = k*error ;
|
||
comm.data.val = k*error ;
|
||
snd_dtq(CanTx, comm.msg) ;
|
||
dly_tsk(500) ;
|
||
|
||
|
||
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
void acquis_distance()
|
||
{
|
||
while(1)
|
||
{
|
||
//recuperation distance telemetre
|
||
requete3.data.id = 'U' ; // variable requete sert a envoyter une requete.
|
||
requete3.data.rtr = 1 ;
|
||
snd_dtq(CanTx, requete3.msg);
|
||
dly_tsk(500) ;
|
||
d_reel = periph[ADDR('R')].val;
|
||
}
|
||
}
|
branch/zemeta/Emb_App/conf_noyau.cfg | ||
---|---|---|
};
|
||
|
||
task[]{
|
||
entry_address = asservissement_voiture();
|
||
name = id_ass;
|
||
entry_address = asservissement_tourelle();
|
||
name = id_ass_t;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority = 2;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
task[]{
|
||
entry_address = acquis_distance();
|
||
name = id_dist;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority = 2;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
|
||
|
||
flag[]{
|
||
name = ev_bus_fin_tr;
|
||
initial_pattern = 0x0000;
|
Formats disponibles : Unified diff
Acquisition distance donnée par télémetre : OK