Projet

Général

Profil

« Précédent | Suivant » 

Révision 156

Ajouté par anfichot1 il y a plus de 6 ans

fin de séance 1, asservissement quasi-fini

Voir les différences:

branch/fichot/Emb_App/programme_principal_etud.c
//'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 '*'
int cons=450;
int retour=0;
int k=5;
int valeur=20;
int vitesse=80;
int consigne =450;
int val_simu=0;
int k=5;
int vitesse=80;
int valeur = 0;
CanFrame vit_roue;
void ComMoteur(){
void demarrer()
{
vit_roue.data.id='V';
vit_roue.data.rtr=0;
vit_roue.data.val=vitesse;
snd_dtq (CanTx,vit_roue.msg);
vit_roue.data.rtr=0;
vit_roue.data.val=vitesse;
snd_dtq (CanTx,vit_roue.msg);
}
void asserv()
{
CanFrame comm;
CanFrame req;
CanFrame reponse;
while(1){
CanFrame comm;
CanFrame req;
CanFrame reponse;
while(1){
req.data.id='R';
req.data.rtr=1;
snd_dtq (CanTx,req.msg);
retour=periph[ADDR('R')].val;
snd_dtq (CanTx,req.msg);
val_simu=periph[ADDR('R')].val;
comm.data.id='T';
comm.data.rtr=0;
comm.data.val=valeur;
snd_dtq (CanTx,comm.msg);
if(retour!=cons) valeur=k*(cons-retour);
}
if( val_simu != consigne)
{
valeur=k*(consigne - val_simu);
}
}
}
void main()
{
ports_mcu();
lcd_init();
periph_init();
periph_nom("#AutoTest*");
can_init();
clavier_init(1);
capture_init();
sta_cyc(ID_acqui);
// sta_tsk(ID_periph_rx);
while(1)
{
LED_J=1;
dly_tsk(100);
LED_J=0;
dly_tsk(100);
asserv();
ComMoteur();
}
}
void acqui()
{
LED_V=!LED_V;
void main()
{
ports_mcu();
lcd_init();
periph_init();
periph_nom("#AutoTest*");
can_init();
clavier_init(1);
capture_init();
demarrer();
asserv();
while(1){
}
}
void acqui()
{
LED_V=!LED_V;
}

Formats disponibles : Unified diff