Révision 226
Ajouté par axfont il y a plus de 6 ans
branch/font/Emb_App/SessionM32C_E8a_system.ini | ||
---|---|---|
[Target]
|
||
M32C E8a SYSTEM=Renesas Communications
|
||
[USER_DATA]
|
||
RESET=ff0022
|
||
RESET=ff0026
|
branch/font/Emb_App/programme_principal_etud.c | ||
---|---|---|
// 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 '*'
|
||
|
||
#define green 0x0056
|
||
#define red 0x0052
|
||
#define blue 0x0043
|
||
#define cyan 0x0042
|
||
|
||
const int distance_bord = 700; //distance du bord souhait?e
|
||
const int angle_tourelle = 450; //angle tourelle souhait?
|
||
int alpha; //angle tourelle
|
||
int distance; //distance du bord mesur?e
|
||
int distance1;
|
||
int vitesse = 65; //vitesse souhait?e
|
||
int vitesse = 45; //vitesse souhait?e
|
||
int vitesse_virage = 25; //vitesse pendant un virage souhait?e
|
||
int angle_roue;
|
||
int kroue = 1;
|
||
... | ... | |
int num_piste;
|
||
int num_piste1;
|
||
int capteur;
|
||
int couleur_capteur;
|
||
int f_capt;
|
||
int s_capt;
|
||
int a = 0;
|
||
char saut = 0;
|
||
|
||
void lecture_telemetre(){
|
||
CanFrame reponsed, requeted;
|
||
... | ... | |
wai_flg(ev_periph, 0x03, TWF_ANDW, &flag); //Attente de lecture de l'angle des roues
|
||
|
||
comm.data.rtr = 0;
|
||
angle_roue = kroue * (distance - distance_bord); //Asservissement de l'angle
|
||
if(saut == 0) angle_roue = kroue * (distance - distance_bord); //Asservissement de l'angle
|
||
else angle_roue = 0;
|
||
comm.data.val = angle_roue;
|
||
snd_dtq(CanTx, comm.msg);
|
||
dly_tsk(5);
|
||
... | ... | |
snd_dtq(CanTx, requete.msg);
|
||
wai_flg(ev_periph, 0x04, TWF_ANDW, &flag); //Attente de la r?ponse
|
||
num_piste = periph[ADDR('M')].val; //acquisition num?ro piste
|
||
num_piste1 = num_piste && 0x0fff;
|
||
}
|
||
|
||
void lecture_capteur(){
|
||
... | ... | |
snd_dtq(CanTx, requete.msg);
|
||
wai_flg(ev_periph, 0x05, TWF_ANDW, &flag); //Attente de la r?ponse
|
||
capteur = periph[ADDR('C')].val; //acquisition du dernier capteur franchi
|
||
couleur_capteur = capteur >> 8;
|
||
dly_tsk(5);
|
||
}
|
||
}
|
||
|
||
void gestion_saut (){
|
||
|
||
CanFrame comm;
|
||
|
||
while(1){
|
||
if(num_piste1 == 1){ //d?tection piste rouge
|
||
if( capteur == 0x5603 ){
|
||
saut = 1;
|
||
}
|
||
else {
|
||
saut = 0;
|
||
}
|
||
}
|
||
dly_tsk(2);
|
||
}
|
||
}
|
||
|
||
|
||
... | ... | |
can_init();
|
||
clavier_init(1);
|
||
capture_init();
|
||
|
||
|
||
sta_tsk(ID_periph_rx);
|
||
sta_tsk(ID_lecture_piste);
|
||
sta_tsk(ID_lecture_capteur);
|
||
... | ... | |
sta_cyc(ID_acqui);
|
||
sta_tsk(ID_tsk_asserv1);
|
||
sta_tsk(ID_lecture_telemetre);
|
||
sta_tsk(ID_asservissement_roue);
|
||
sta_tsk(ID_asservissement_roue);
|
||
sta_tsk(ID_gestion_saut);
|
||
|
||
while(1)
|
||
{
|
branch/font/Emb_App/conf_noyau.cfg | ||
---|---|---|
name = ID_lecture_telemetre;
|
||
stack_size = 512;
|
||
stack_section = stack;
|
||
priority = 4;
|
||
priority = 3;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
... | ... | |
name = ID_asservissement_roue;
|
||
stack_size = 512;
|
||
stack_section = stack;
|
||
priority = 4;
|
||
priority = 3;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
Formats disponibles : Unified diff
saut piste rouge passé