Révision 356
Ajouté par naidzim1 il y a plus de 6 ans
branch/najib_idzim/tp_info6/Emb_App/SessionM32C_E8a_system.ini | ||
---|---|---|
[Target]
|
||
M32C E8a SYSTEM=Renesas Communications
|
||
[USER_DATA]
|
||
RESET=ff0028
|
||
RESET=ff0026
|
branch/najib_idzim/tp_info6/Emb_App/programme_principal_etud.c | ||
---|---|---|
int lireCapt();
|
||
char typeCapteur();
|
||
int lireEvent();
|
||
short lireClavier();
|
||
|
||
unsigned short distance = 56;
|
||
|
||
int capt = 0;
|
||
int even = 0;
|
||
short code_touche = 0;
|
||
|
||
void main()
|
||
{
|
||
ports_mcu();
|
||
lcd_init();
|
||
periph_init();
|
||
periph_nom("#Ferrari");
|
||
periph_nom("#Auto");
|
||
|
||
can_init();
|
||
clavier_init(1);
|
||
capture_init();
|
||
|
||
sta_cyc(ID_acqui);
|
||
sta_tsk(ID_periph_rx); // tache de tri de reponse du simulateur
|
||
sta_tsk(ID_periph_rx); // tache de tri des reponses du simulateur
|
||
|
||
|
||
|
||
... | ... | |
|
||
while(1)
|
||
{
|
||
|
||
even = lireEvent();
|
||
capt = lireCapt();
|
||
even = lireEvent();
|
||
dly_tsk(100);
|
||
code_touche = lireClavier();
|
||
if ( (capt == 0x5202) && (even == 0x0001) )
|
||
{
|
||
vitesseVoiture(46);
|
||
cmdRoue(0);
|
||
|
||
}
|
||
|
||
}
|
||
}
|
||
... | ... | |
snd_dtq(CanTx, requete.msg);
|
||
|
||
wai_flg(ev_periph, 0x03, TWF_ANDW, &flag);
|
||
|
||
return periph[ADDR('C')].val;
|
||
}
|
||
|
||
... | ... | |
int capteur = lireCapt();
|
||
char val;
|
||
|
||
lsb &= 0b00001111;
|
||
msb &= 0b11110000;
|
||
lsb = capteur & 0x00FF;
|
||
msb = capteur & 0xFF00;
|
||
|
||
if (lsb == 6)
|
||
if (msb == 0x5600)
|
||
{
|
||
if (msb == 'C')
|
||
if (lsb == 0x03)
|
||
{
|
||
return 'C';
|
||
return 1;
|
||
}
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
// les evenements
|
||
|
||
// Si le simulateur envoi un evenement sur 16 bits il est recu grace a:
|
||
// par exemple: wai_flg(event,(FLGPTN) 0x0007,TWF_ORW,&flag); // Declarer la variable flag comme : FLGPTN flag
|
||
// Attention l'evenement n'est pas efface apres reception, il faut donc utiliser clr_flg(event,~flag); par example
|
||
//Bit Information associee Remarque
|
||
//0 Capteur Vert, remis a zero lors de la lecture du peripherique 'C'
|
||
//1 Capteur Jaune, remis a zero lors de la lecture du peripherique 'C'
|
||
//2 Capteur Rouge, remis a zero lors de la lecture du peripherique 'C'
|
||
//3 Capteur Bleu, remis a zero lors de la lecture du peripherique 'C'
|
||
//4 Capteur Cyan, remis a zero lors de la lecture du peripherique 'C'
|
||
//5
|
||
//6 Collision avec le sol, remise a zero au changement de piste.
|
||
//7 Fin de course (capteur vert), remis a zero lors de la lecture du peripherique 'C'
|
||
//8 La piste a change , remis a zero lors de la lecture du peripherique 'M'
|
||
//9 Le mode de course a change , remis a zero lors de la lecture du peripherique 'M'
|
||
//10
|
||
//11 Le vehicule a termine un tour, remis a zero au changement du mode de course.
|
||
//12 Sortie de la piste,
|
||
//13 Teleportation a ete utilisee, remis a zero au changement de piste ou du mode de course.
|
||
//14 Faux depart remise a zero au changement du mode de course.
|
||
|
||
int lireEvent()
|
||
{
|
||
... | ... | |
posSortie = posTourelle();
|
||
vit = k*( posCons - posSortie); //correcteur Prop
|
||
vitesseTourelle(vit);
|
||
|
||
dly_tsk(100);
|
||
}
|
||
|
||
... | ... | |
int angle;
|
||
|
||
|
||
k = 2.8; //gain definni experimentalement
|
||
k = 2.5; //gain definni experimentalement
|
||
distanceCons = 500;//disMur(); //Pos initiale milieu de piste
|
||
|
||
while(1)
|
||
{
|
||
distanceMesure = disMur();
|
||
|
||
if ( distanceMesure >= 1000) // detection des trous
|
||
{
|
||
cmdRoue(0);
|
||
... | ... | |
cmdRoue(angle);
|
||
|
||
}
|
||
|
||
dly_tsk(25);
|
||
}
|
||
}
|
||
|
||
//clavier
|
||
|
||
short lireClavier()
|
||
{
|
||
short touche;
|
||
vrcv_dtq(QdmTouche, &touche);
|
||
return touche;
|
||
}
|
||
|
||
//LCD
|
Formats disponibles : Unified diff
fin de séance : fct clavier à revoir