Projet

Général

Profil

« Précédent | Suivant » 

Révision 368

Ajouté par maporte3 il y a plus de 6 ans

Amélioration de l'IHM, le clavier matricielle affiche le circuit en cours et la zone actuel.
Le temps est prélevé par la tache mais il faut la convertir en chaîne de caractère avant de l'afficher.

Voir les différences:

branch/porte/Emb_App/SessionM32C_E8a_system.ini
[Target]
M32C E8a SYSTEM=Renesas Communications
[USER_DATA]
RESET=ff0042
RESET=ff0068
branch/porte/Emb_App/programme_principal_etud.c
unsigned int Info_capteur;
//Variable de la fonction Distance_bord
unsigned int Bord_defaut=0, ecart=400;
//Variable de la fonction IHM
short Touche_clavier;
//Variable des fonctions IHM
short Touche_clavier, Temps;
//char *Temps;
//Variable de la fonction Circuit
unsigned int Info_circuit, Etat_feu, Num_circuit, Depart_ok=0, Arret_urgence=0;
//Variable de la fonction Evenement
......
}
void Commande_IHM(){
void Commande_clavier(){
// Interface Homme Machine muni du clavier matricielle, de l'?cran LCD,
// des LEDs, des potentiometre et des interrupteurs.
......
if(Touche_clavier != 0){
if(Touche_clavier != 42 && Touche_clavier != 35){
lcd_putc(Touche_clavier);
vit = vit*i+(Touche_clavier-48);
i = 10*i;
}
......
}
void Commande_LCD(){
//'H'/72/0x48?: Donne le temps de course actuel
CanFrame comm;
CanFrame demande;
CanFrame reponse;
while(1){
demande.data.id='H';
demande.data.rtr=1;
snd_dtq (CanTx,demande.msg); // Interrogation du peripherique sur le temps de course actuel.
Temps=periph[ADDR('H')].val; // contient la valeur de retour du simulateur sur le temps de course actuel.
lcd_init();
switch(Num_circuit){
case 1: lcd_str("VERT"); break;
case 2: lcd_str("BLEU"); break;
case 3: lcd_str("ROUGE"); break;
case 4: lcd_str("NOIR"); break;
default : lcd_str("Inconnu");
}
lcd_putc('|');
switch(Info_capteur){
case 0x560: lcd_str("VERT"); break;
case 0x430: lcd_str("NOIR"); break;
case 0x520: lcd_str("ROUGE"); break;
case 0x4a0: lcd_str("JAUNE"); break;
case 0x420: lcd_str("BLEU"); break;
default : lcd_str("!!");
}
lcd_putc('|');
//lcd_str('Temps');
dly_tsk(1000);
}
}
void Bp_hc(){
if(Bp_G == 1){ Arret_urgence = 1;}
if(Bp_G == 0){ Arret_urgence = 0;}
}
void Circuit(){
......
}
void Evenement(){
void Evenement(){ // non fonctionnelle
//'E'/69/0x45?: Lecture des evenements,
CanFrame comm;
......
sta_tsk(ID_Distance_bord);
sta_tsk(ID_Commande_IHM);
sta_tsk(ID_Commande_clavier);
sta_cyc(ID_Bp_hc);
sta_tsk(ID_Commande_LCD);
sta_tsk(ID_Circuit);
sta_tsk(ID_Evenement);
branch/porte/Emb_App/conf_noyau.cfg
};
task[]{
entry_address = Commande_IHM();
name = ID_Commande_IHM;
entry_address = Commande_clavier();
name = ID_Commande_clavier;
stack_size = 256;
stack_section = stack;
priority = 6;
......
};
task[]{
entry_address = Commande_LCD();
name = ID_Commande_LCD;
stack_size = 256;
stack_section = stack;
priority = 6;
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = Circuit();
name = ID_Circuit;
stack_size = 256;

Formats disponibles : Unified diff