Projet

Général

Profil

« Précédent | Suivant » 

Révision 182

Ajouté par crzemeta il y a plus de 6 ans

Acquisition distance donnée par télémetre : OK

Voir les différences:

branch/zemeta/Emb_App/SessionM32C_E8a_system.ini
[Target]
M32C E8a SYSTEM=Renesas Communications
[USER_DATA]
RESET=ff0018
RESET=ff001a
branch/zemeta/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 '*'
CanFrame comm;
CanFrame comm,comm2;
unsigned short alpha ;
unsigned short k=1, angle_reel, error ;
unsigned short consigne= 450 ;
CanFrame requete, reponse ;
unsigned short k=1, angle_reel, error,error2,vitesse_reel, distance,d_reel ;
unsigned short consigne= 450 , vitesse = 12 ;
CanFrame requete,requete2,reponse, reponse3,requete3 ;
void main()
{
//short vitesse = 120 ;
{
ports_mcu();
lcd_init();
periph_init();
......
//sta_tsk(id_acqui_pos);
//sta_tsk(id_avance);
//sta_tsk(id_telemetre);
sta_tsk(id_ass);
// sta_tsk(ID_periph_rx);
sta_tsk(id_ass_t);
sta_tsk(id_dist);
sta_tsk(ID_periph_rx);
while(1)
{
......
comm.data.rtr = 0 ;
comm.data.val = 120 ;
snd_dtq(CanTx, comm.msg) ;
/*dly_tsk (1000) ;
comm.data.id = 'T' ;
comm.data.rtr = 0 ;
comm.data.val = 0 ;
snd_dtq(CanTx, comm.msg) ;
dly_tsk (1000) ; */
}
}
......
requete.data.id = 'R' ; // variable requete sert a envoyter une requete.
requete.data.rtr = 1 ;
snd_dtq(CanTx, requete.msg);
rcv_dtq(CanRx, &reponse.msg);
//if (reponse.data.val > 45 )
alpha = reponse.data.val ;
//rcv_dtq(CanRx, &reponse.msg);
dly_tsk(100) ;
alpha = periph[ADDR('R')].val; // reponse.data.val ;
}
}
......
{
comm.data.id = 'V' ;
comm.data.rtr = 0 ;
comm.data.val = 10 ;
comm.data.val = vitesse ;
snd_dtq(CanTx, comm.msg) ;
}
}
void asservissement_voiture()
void asservissement_tourelle()
{
while(1)
{
/*// envoie commande deplacement voiture
/* //commande vitesse voiture
comm.data.id = 'V' ;
comm.data.rtr = 0 ;
comm.data.val = 20 ;
comm.data.val = vitesse ;
snd_dtq(CanTx, comm.msg) ;*/
// envoie commande tourelle
/*comm.data.id = 'T' ;
comm.data.rtr = 0 ;
comm.data.val = consigne ;
snd_dtq(CanTx, comm.msg) ;*/
//recuperation position tourelle
requete.data.id = 'R' ; // variable requete sert a envoyter une requete.
requete.data.rtr = 1 ;
snd_dtq(CanTx, requete.msg);
rcv_dtq(CanRx, &reponse.msg);
angle_reel = reponse.data.val ;
dly_tsk(500) ;
angle_reel = periph[ADDR('R')].val; // lecture donn?e avec
//asservissement position tourelle
error = consigne - angle_reel ;
// envoie nouvelle commande tourelle
comm.data.id = 'T' ;
comm.data.rtr = 0 ;
comm.data.val = k*error ;
comm.data.val = k*error ;
snd_dtq(CanTx, comm.msg) ;
dly_tsk(500) ;
}
}
}
void acquis_distance()
{
while(1)
{
//recuperation distance telemetre
requete3.data.id = 'U' ; // variable requete sert a envoyter une requete.
requete3.data.rtr = 1 ;
snd_dtq(CanTx, requete3.msg);
dly_tsk(500) ;
d_reel = periph[ADDR('R')].val;
}
}
branch/zemeta/Emb_App/conf_noyau.cfg
};
task[]{
entry_address = asservissement_voiture();
name = id_ass;
entry_address = asservissement_tourelle();
name = id_ass_t;
stack_size = 256;
stack_section = stack;
priority = 2;
initial_start = OFF;
exinf = 0x0;
};
task[]{
entry_address = acquis_distance();
name = id_dist;
stack_size = 256;
stack_section = stack;
priority = 2;
initial_start = OFF;
exinf = 0x0;
};
flag[]{
name = ev_bus_fin_tr;
initial_pattern = 0x0000;

Formats disponibles : Unified diff