Révision 323
Ajouté par vidaval il y a plus de 6 ans
branch/daval/Emb_App/SessionM32C_E8a_system.ini | ||
---|---|---|
[Target]
|
||
M32C E8a SYSTEM=Renesas Communications
|
||
[USER_DATA]
|
||
RESET=ff0028
|
||
RESET=ff0024
|
branch/daval/Emb_App/programme_principal_etud.c | ||
---|---|---|
//Asservissement de la voiture
|
||
int distance_mur=700; // Consigne qui permet d etre bien centr? sur la route
|
||
char C=1; // Gain asservissment des roues
|
||
char vitesse_rapide= 55;//Commande de vitesse que l'on envoie
|
||
char vitesse_lente=25;
|
||
char vitesse_rapide= 40;//Commande de vitesse que l'on envoie
|
||
char vitesse_lente=20;
|
||
int distance_mesure=0;
|
||
int cap;
|
||
|
||
... | ... | |
|
||
int capteur;
|
||
char couleur;
|
||
char numero;
|
||
|
||
|
||
|
||
void asservissement_tourelle()
|
||
{
|
||
CanFrame commande;
|
||
... | ... | |
vitesse.data.rtr=0; //Indique une ecritur
|
||
while(1)
|
||
{
|
||
if(cap<-30 || cap>30)
|
||
if(cap<-30 || cap>30) //Gestion vitesse dans les virages
|
||
{
|
||
vitesse.data.val=vitesse_lente;
|
||
snd_dtq (CanTx,vitesse.msg);
|
||
... | ... | |
vitesse.data.val=vitesse_rapide;
|
||
snd_dtq (CanTx,vitesse.msg);
|
||
}
|
||
if(couleur=='V' && numero == 0x03) // Gestion saut piste rouge
|
||
{
|
||
vitesse.data.val=47;
|
||
snd_dtq (CanTx,vitesse.msg);
|
||
}
|
||
if(couleur=='B' && numero ==0x03)
|
||
{
|
||
vitesse.data.val=10;
|
||
snd_dtq (CanTx,vitesse.msg);
|
||
}
|
||
|
||
dly_tsk(10);
|
||
}
|
||
|
||
... | ... | |
periph[ADDR('U')].ev= 0x02 ; //L evenement est declenche a chaque fois que la valeur du periph U et mise ? jour
|
||
snd_dtq(CanTx, requete_dist.msg);
|
||
wai_flg (ev_periph, 0x02, TWF_ANDW, &flag); //Attente lecture
|
||
//distance_mesure=periph[ADDR('U')].val; //Cas de la piste verte
|
||
|
||
if(periph[ADDR('U')].val > 2000) //Pour eviter les trou dans la barriere
|
||
{
|
||
... | ... | |
cap=C*(distance_mesure-distance_mur);
|
||
commande.data.val= cap;
|
||
snd_dtq(CanTx, commande.msg);
|
||
|
||
if(couleur=='V' && numero == 0x03)
|
||
{
|
||
cap=0;
|
||
snd_dtq (CanTx,commande.msg);
|
||
}
|
||
dly_tsk(5);
|
||
}
|
||
}
|
||
|
||
void detection_capteur(){
|
||
CanFrame requete;
|
||
UINT flag;
|
||
|
||
while(1)
|
||
{
|
||
requete.data.id = 'C';
|
||
requete.data.rtr = 1;
|
||
periph[ADDR('C')].ev = 0x03;
|
||
snd_dtq(CanTx, requete.msg);
|
||
wai_flg(ev_periph, 0x03, TWF_ANDW, &flag);
|
||
capteur = periph[ADDR('C')].val;
|
||
couleur = capteur >> 8;
|
||
dly_tsk(10);
|
||
CanFrame requete;
|
||
UINT flag;
|
||
while(1)
|
||
{
|
||
requete.data.id = 'C'; //On lit la valeur du periph C qui est l'information sur le capteur
|
||
requete.data.rtr = 1;
|
||
periph[ADDR('C')].ev = 0x03; //Mis ? jour ? chaque foir que l'on passe un capteur laser
|
||
snd_dtq(CanTx, requete.msg);
|
||
wai_flg(ev_periph, 0x03, TWF_ANDW, &flag);
|
||
capteur = periph[ADDR('C')].val;
|
||
couleur = capteur >> 8; //On decale pour avoir les 8 bits de poids forts : info sur la couleur
|
||
numero = capteur ;
|
||
dly_tsk(10);
|
||
}
|
||
}
|
||
|
||
... | ... | |
ports_mcu();
|
||
lcd_init();
|
||
periph_init();
|
||
periph_nom("#PAVALk17!!!!");
|
||
periph_nom("#PAVAL2k17");
|
||
|
||
can_init();
|
||
clavier_init(1);
|
||
... | ... | |
sta_tsk(ID_asservissement_tourelle);
|
||
sta_tsk(ID_distance_bord);
|
||
sta_tsk(ID_asserv_cap);
|
||
sta_tsk(ID_avance);
|
||
sta_tsk(ID_avance);
|
||
sta_tsk(ID_detection_capteur);
|
||
while(1);
|
||
|
||
|
||
... | ... | |
|
||
void acqui()
|
||
{
|
||
LED_V=!LED_V;
|
||
LED_V=!LED_V;
|
||
LED_R=!LED_R;
|
||
LED_J=!LED_J;
|
||
}
|
||
|
Formats disponibles : Unified diff
La piste rouge est passée en 3 tours mais un peu sur du bluff juste en utilisant les capteurs de la route