Projet

Général

Profil

« Précédent | Suivant » 

Révision 176

Ajouté par vidaval il y a plus de 6 ans

Implantation de la tâche avance() qui fait avancer la voiture (fonctionnelle)

Voir les différences:

branch/daval/Emb_App/programme_principal_etud.c
int k=1; //gain du correcteur
int valeur = 0 ; //valeur envoyee
CanFrame vitesse;
CanFrame requete;
void avance()
{
vitesse.data.id='V'; //Envoi d'une commande
vitesse.data.rtr=0; //Indique une ecriture
vitesse.data.val=15;
snd_dtq (CanTx,vitesse.msg);
}
void asservissement()
{
CanFrame comm;
......
requete.data.id='R'; // Demande de renvoyer l'angle en dixieme de degre
requete.data.rtr=1; // Indique une lecture
snd_dtq (CanTx,requete.msg); // Interrogation du peripherique
rcv_dtq (CanRx,&reponse.msg); // Attente de la reponse
//rcv_dtq (CanRx,&reponse.msg); // Attente de la reponse // On ne l'utilise plus car utlisation de periph_ID
angle = reponse.data.val; // Contient la valeur de retour du simulateur.
angle = periph[ADDR('R')].val; // Contient la valeur de retour du simulateur.
comm.data.id='T'; //Envoi d'une commande
......
valeur=k*(consigne-angle);
comm.data.val=valeur;
snd_dtq (CanTx,comm.msg); //Envoi modif
dly_tsk(2);
}
}
......
capture_init();
sta_cyc(ID_acqui);
// sta_tsk(ID_periph_rx); //Si on utilise cette t?che on ne doit plus utiliser canRX
sta_tsk(ID_asservissement);
sta_tsk(ID_periph_rx); //Si on utilise cette t?che on ne doit plus utiliser canRX
sta_tsk(ID_asservissement);
sta_tsk(ID_avance);
while(1);
branch/daval/Emb_App/conf_noyau.cfg
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = avance();
name = ID_avance;
stack_size = 256;
stack_section = stack;
priority = 4;
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = oriente_roue();
name = ID_oriente_roue;
stack_size = 256;
stack_section = stack;
priority = 5;
initial_start = OFF;
exinf = 0x0;
};
flag[]{
name = ev_bus_fin_tr;
initial_pattern = 0x0000;

Formats disponibles : Unified diff