Révision 175
Ajouté par vidaval il y a plus de 6 ans
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
L'asservissement de la tourelle est dans une tâche et est fonctionnel