Projet

Général

Profil

« Précédent | Suivant » 

Révision 175

Ajouté par vidaval il y a plus de 6 ans

L'asservissement de la tourelle est dans une tâche et est fonctionnel

Voir les différences:

branch/daval/Emb_App/programme_principal_etud.c
int angle=0 ; //valeur retournee
int k=1; //gain du correcteur
int valeur = 0 ; //valeur envoyee
CanFrame comm;
CanFrame requete;
CanFrame reponse;
void asservissement()
{
CanFrame comm;
CanFrame requete;
CanFrame reponse;
requete.data.id='R'; // Demande de renvoyer l'angle en dixieme de degre
requete.data.rtr=1;
snd_dtq (CanTx,requete.msg); // Interrogation du peripherique
rcv_dtq (CanRx,&reponse.msg); // Attente de la reponse
while(1)
{
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
angle=reponse.data.val; // Contient la valeur de retour du simulateur.
if (angle != consigne)
{
angle = reponse.data.val; // Contient la valeur de retour du simulateur.
comm.data.id='T'; //Envoi d'une commande
comm.data.rtr=0;
comm.data.id='T'; //Envoi d'une commande
comm.data.rtr=0; //Indique une ecriture
valeur=k*(consigne-angle);
comm.data.val=valeur;
snd_dtq (CanTx,comm.msg); //Envoi modif
snd_dtq (CanTx,comm.msg); //Envoi modif
dly_tsk(2);
}
}
......
ports_mcu();
lcd_init();
periph_init();
periph_nom("#Ausecours!!!");
periph_nom("#Aidezmoi!!!!");
can_init();
clavier_init(1);
capture_init();
sta_cyc(ID_acqui);
// sta_tsk(ID_periph_rx);
// sta_tsk(ID_periph_rx); //Si on utilise cette t?che on ne doit plus utiliser canRX
sta_tsk(ID_asservissement);
while(1);
while(1)
{
comm.data.id='V';
comm.data.rtr=0;
comm.data.val=20;
snd_dtq (CanTx,comm.msg);
/*LED_J=1;
dly_tsk(100);
LED_J=0;
dly_tsk(100);*/
asservissement();
}
}
void acqui()
branch/daval/Emb_App/conf_noyau.cfg
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = asservissement();
name = ID_asservissement;
stack_size = 256;
stack_section = stack;
priority = 3;
initial_start = OFF;
exinf = 0x0;
};
flag[]{
name = ev_bus_fin_tr;
initial_pattern = 0x0000;

Formats disponibles : Unified diff