Révision 292
Ajouté par maporte3 il y a plus de 6 ans
branch/porte/Emb_App/SessionM32C_E8a_system.ini | ||
---|---|---|
[Target]
|
||
M32C E8a SYSTEM=Renesas Communications
|
||
[USER_DATA]
|
||
RESET=ff0044
|
||
RESET=ff004a
|
branch/porte/Emb_App/programme_principal_etud.c | ||
---|---|---|
//'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 '*'
|
||
|
||
/*-------------------------------------- Constante ----------------------------------------*/
|
||
const Vitesse_max=99, Vitesse_min=0;
|
||
|
||
/*-------------------------------------- Variables ----------------------------------------*/
|
||
unsigned int Angle_T=0; //prend la valeur de l'angle au temps t-1
|
||
unsigned int Consigne_T=500; //Consigne de l'angle de la tourelle
|
||
... | ... | |
int Kpt=1, Kpr=2; //Param?tre des PID tourelle et roues
|
||
int Kit=4, Kir=40;
|
||
int Kdt=1.5, Kdr=1;
|
||
int i;
|
||
unsigned int Vitesse_final=40, Vitesse_virage=25, Distance;
|
||
unsigned int Vitesse=0, vit=0, i=1, Distance;
|
||
unsigned int Angle_R=0, distance_bord=660; //Angle des roues
|
||
unsigned int Info_capteur;
|
||
unsigned int Bord_defaut=0, ecart=400;
|
||
short Touche_clavier;
|
||
|
||
|
||
void Asserv_T(){
|
||
... | ... | |
Somme_ErreurRoues+=ErreurRoues;
|
||
|
||
if(Distance != distance_bord && Bord_defaut == 0)
|
||
Angle_R=-1*(Kpr*ErreurRoues+Kdr*Delta_Erreur+(1/Kir)*Somme_ErreurRoues);//correction de l'angle par handler cyclique des roues
|
||
Angle_R=-1*(Kpr*ErreurRoues/*+Kdr*Delta_Erreur+(1/Kir)*Somme_ErreurRoues*/);//correction de l'angle par handler cyclique des roues
|
||
}
|
||
|
||
|
||
... | ... | |
}*/
|
||
|
||
if(Info_capteur == 0x560 && Bord_defaut == 0){ // Commande de vitesse pour les lignes droites (dernier capteur detecte = vert).
|
||
comm.data.val=Vitesse_final;
|
||
comm.data.val=Vitesse;
|
||
snd_dtq (CanTx,comm.msg); // Envoi de la commande de vitesse
|
||
}
|
||
else{ // Ralentissement en cas de virage (selon valeur capteur)
|
||
comm.data.val=Vitesse_virage;
|
||
else{ // Ralentissement en cas de virage par 2 (selon valeur capteur)
|
||
comm.data.val=Vitesse/2;
|
||
snd_dtq (CanTx,comm.msg);
|
||
}
|
||
|
||
//lcd_str(char &Vitesse)
|
||
|
||
dly_tsk(10);
|
||
}
|
||
... | ... | |
}
|
||
|
||
}
|
||
|
||
void Commande(){
|
||
CanFrame comm;
|
||
CanFrame demande;
|
||
CanFrame reponse;
|
||
|
||
while(1){
|
||
|
||
vrcv_dtq(QdmTouche, &Touche_clavier);
|
||
|
||
if(Touche_clavier != 0){
|
||
if(Touche_clavier != 42 && Touche_clavier != 35){
|
||
lcd_putc(Touche_clavier);
|
||
vit = vit*i+(Touche_clavier-48);
|
||
i = 10*i;
|
||
}
|
||
else if(Touche_clavier == 42 || Touche_clavier == 35){
|
||
if(vit < 100 && vit > 0){
|
||
Vitesse = vit;
|
||
}
|
||
vit = 0;
|
||
i = 1;
|
||
}
|
||
|
||
Touche_clavier=0;
|
||
dly_tsk(100);
|
||
}
|
||
dly_tsk(100);
|
||
}
|
||
|
||
|
||
}
|
||
|
||
void main()
|
||
{
|
||
... | ... | |
|
||
sta_tsk(ID_Capteur);
|
||
|
||
sta_tsk(ID_Distance_bord);
|
||
sta_tsk(ID_Distance_bord);
|
||
|
||
sta_tsk(ID_Commande);
|
||
|
||
while(1)
|
||
{
|
branch/porte/Emb_App/conf_noyau.cfg | ||
---|---|---|
exinf = 0x0;
|
||
};
|
||
|
||
task[]{
|
||
entry_address = Commande();
|
||
name = ID_Commande;
|
||
stack_size = 256;
|
||
stack_section = stack;
|
||
priority = 6;
|
||
initial_start = OFF;
|
||
exinf = 0x0;
|
||
};
|
||
|
||
flag[]{
|
||
name = ev_bus_fin_tr;
|
||
initial_pattern = 0x0000;
|
Formats disponibles : Unified diff
Ajout de la fonction commande qui permet de modifier la vitesse du véhicule à l'aide du clavier matricielle.