Projet

Général

Profil

« Précédent | Suivant » 

Révision 356

Ajouté par naidzim1 il y a plus de 6 ans

fin de séance : fct clavier à revoir

Voir les différences:

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