Projet

Général

Profil

« Précédent | Suivant » 

Révision 288

Ajouté par nacao il y a plus de 6 ans

Voir les différences:

branch/nan_cao/Emb_App.tws
[OPEN_WORKSPACE_FILES]
"E:\nan_cao\Emb_App\conf_noyau.cfg"
"E:\nan_cao\Emb_App\programme_principal_etud.c"
"E:\nan_cao\programme_principal_etud (1).c"
[WORKSPACE_FILE_STATES]
"E:\nan_cao\Emb_App\conf_noyau.cfg" 26 26 1345 381 0 1
"E:\nan_cao\Emb_App\programme_principal_etud.c" -8 -31 1543 602 1 0
"E:\nan_cao\programme_principal_etud (1).c" 78 78 1345 381 0 2
[LOADED_PROJECTS]
"EmbM32C87App"
[END]
branch/nan_cao/Emb_App/programme_principal_etud.c
// Peripheriques disponibles:
//'V'/86/0x56?: Commande en vitesse des roues motrices du vehicule (en radian /secondes).
//'D'/68/0x44?: Commande de l'angle des roues directrices (en 1/10 de degre).
//'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).
//'U'/85/0x55?: Distance mesuree par le telemetre (1/100 de metre)
//'N'/78/0x4E?: Numero de la voiture (en fonction de l'ordre de connexion)
//'E'/69/0x45?: Lecture des evenements,
//'H'/72/0x48?: Donne le temps de course actuel
//'S'/83/0x53?: Temps du tour precedent
//'M'/77/0x7D?: Mode de course :
// Bit 15?: Etat feu tricolore ( 1 -> Vert, 0 -> Orange ou Rouge),
// Bits 14-8?: 1 Attente, 2 course, 3 essais libres)
// Bits 7-0?: numero de la piste
//'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')
//'V'/86/0x56? Commande en vitesse des roues motrices du vehicule (en radian /secondes).
//'D'/68/0x44? Commande de l'angle des roues directrices (en 1/10 de degre).
//'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).
//'U'/85/0x55? Distance mesuree par le telemetre (1/100 de metre)
//'N'/78/0x4E? Numero de la voiture (en fonction de l'ordre de connexion)
//'E'/69/0x45? Lecture des evenements,
//'H'/72/0x48? Donne le temps de course actuel
//'S'/83/0x53? Temps du tour precedent
//'M'/77/0x7D? Mode de course :
// Bit 15? Etat feu tricolore ( 1 -> Vert, 0 -> Orange ou Rouge),
// Bits 14-8? 1 Attente, 2 course, 3 essais libres)
// Bits 7-0? numero de la piste
//'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')
//'J'/74/0x4A : Proposition d'un code de d?v?rouillage.
//'j'/106/06A : R?cup?ration du r?sultat de dernier code envoy?. 0x77 si aucun code n'a ?t? soumis. <0 si la r?ponse n'est pas
//'j'/106/06A : R?cup?ration du r?sultat de dernier code envoy? 0x77 si aucun code n'a ?t?soumis. <0 si la r?ponse n'est pas
// 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 '*'
......
short alpha;
short distance;
short vitesse, longueur;
int g=1; //gain angle de roue
int g2=1; //gain vitesse de tourelle
int g=1; //gain angle de roue
int g2=1; //gain vitesse de tourelle
void vit(){
CanFrame comm;
while(1)
{
comm.data.id='V';
comm.data.rtr=0;
comm.data.val=15;
snd_dtq(CanTx,comm.msg);
dly_tsk(100);
// if(distance < 100)
comm.data.val=15;
// else comm.data.val = 5;
snd_dtq(CanTx,comm.msg);
dly_tsk(500);
}
}
void angel_roue(){
void ang_tourelle(){
CanFrame req,reponse,comm;
UINT flag;
while(1)
{
req.data.id='U'; //lecture distance de la tourelle
req.data.id='R'; //lecture angle de la tourelle
req.data.rtr=1;
snd_dtq(CanRx, req.msg);
//Attente de la reponse
//rcv_dtq(CanRx, &reponse.msg);
periph[ADDR('U')].ev=0x01;
// snd_dtq(CanRx, req.msg);
//Attente de la reponse
//rcv_dtq(CanRx, &reponse.msg);
periph[ADDR('R')].ev=0x01;
snd_dtq(CanTx,req.msg);
wai_flg(ev_periph, 0x01, TWF_ANDW,&flag);
distance=periph[ADDR('U')].val;
//angle de roue
comm.data.id='D';
alpha=periph[ADDR('R')].val; // contient la valeur de retour du simulateur.
comm.data.id='T'; //Vitesse de la tourelle
comm.data.rtr=0;
comm.data.val=-g(450-distance);
comm.data.val=g2*(450-alpha);
snd_dtq(CanTx,comm.msg);
dly_tsk(100);
}
}
void ang_tourelle(){
void ang_roue(){
CanFrame req,reponse,comm;
UINT flag;
while(1)
{
req.data.id='R'; //lecture angle de la tourelle
req.data.id='U'; //distance mesueree par la tourelle
req.data.rtr=1;
snd_dtq(CanRx, req.msg);
//Attente de la reponse
//rcv_dtq(CanRx, &reponse.msg);
periph[ADDR('R')].ev=0x02;
// snd_dtq(CanRx, req.msg);
//Attente de la reponse
//rcv_dtq(CanRx, &reponse.msg);
periph[ADDR('U')].ev=0x02;
snd_dtq(CanTx,req.msg);
wai_flg(ev_periph, 0x02, TWF_ANDW,&flag);
alpha=periph[ADDR('R')].val;
//Vitesse de la tourelle
comm.data.id='T';
distance=periph[ADDR('U')].val; // contient la valeur de retour du simulateur.
comm.data.id='D'; //angle de roue
comm.data.rtr=0;
comm.data.val=g2(450-alpha);
comm.data.val=-g*(450-distance);
snd_dtq(CanTx,comm.msg);
dly_tsk(100);
dly_tsk(200);
}
}
void main()
{
CanFrame comm;
......
clavier_init(1);
capture_init();
sta_tsk(ID_angle_roue);
sta_tsk(ID_ang_roue);
sta_tsk(ID_ang_tourelle);
sta_tsk(ID_vitesse);
sta_cyc(ID_acqui);
branch/nan_cao/Emb_App/conf_noyau.cfg
exinf = 0x0;
};
task[]{
entry_address = angle_roue();
name = ID_angle_roue;
entry_address = ang_roue();
name = ID_ang_roue;
stack_size = 512;
stack_section = stack;
priority = 1;

Formats disponibles : Unified diff