Projet

Général

Profil

« Précédent | Suivant » 

Révision 54

Ajouté par tibacher il y a plus de 6 ans

tourelle asservie en position avec l'utilisation de ID_periph_RX

Voir les différences:

branch/bacher/Emb_App/SessionM32C_E8a_system.ini
[Target]
M32C E8a SYSTEM=Renesas Communications
[USER_DATA]
RESET=ff001e
RESET=ff0026
branch/bacher/Emb_App/programme_principal_etud.c
//'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 '*'
// correspondant au nom du v?hicule si le nom se termine par '*'
int cons=450; //contient la consigne
int retour=0; //contient la valeur retourner par le p?riph
int k=1; //contient le gain du correcteur
int valeur=0; //contient la valeur ? envoyer
int distance=0;
int cons_roue=12522;
int valeur_roue=0;
int ang_roue=0;
CanFrame vit_roue;
CanFrame requete;
CanFrame dist;
CanFrame rot_roue;
void asserv0()
{
......
demande.data.rtr=1;
snd_dtq (CanTx,demande.msg); // Interrogation du peripherique
rcv_dtq (CanRx,&reponse.msg); // Attente de la reponse
retour=reponse.data.val; // contient la valeur de retour du simulateur.
retour=periph[ADDR('R')].val; // contient la valeur de retour du simulateur.
comm.data.id='T';
comm.data.rtr=0;
comm.data.val=valeur;
snd_dtq (CanTx,comm.msg); //on envoie la modification ? effectuer
if(retour!=cons) valeur=k*(cons-retour);
}
}
}
void main()
{
ports_mcu();
lcd_init();
......
capture_init();
sta_cyc(ID_acqui);
// sta_tsk(ID_periph_rx);
sta_tsk(ID_periph_rx);
sta_tsk(ID_asserv0);
while(1)
{
//LED_J=1;
//dly_tsk(100);
//LED_J=0;
//dly_tsk(100);
{
vit_roue.data.id='V';
vit_roue.data.rtr=0;
vit_roue.data.val=10;
snd_dtq (CanTx,vit_roue.msg);
/*
requete.data.id='U';
requete.data.rtr=1;
snd_dtq(CanTx, requete.msg);
rcv_dtq(CanRx, &dist.msg);
distance=requete.data.val;
if (distance!=cons_roue){
rot_roue.data.id='D';
rot_roue.data.rtr=0;
rot_roue.data.val=ang_roue-10;
snd_dtq (CanTx,rot_roue.msg);
} */
}
}

Formats disponibles : Unified diff