Projet

Général

Profil

« Précédent | Suivant » 

Révision 271

Ajouté par aueuphrasi il y a plus de 6 ans

Validation terrain_vert
Validation terrain_bleu
Arret avec Bp_D

Voir les différences:

branch/euphrasie_auguste/Emb_App/SessionM32C_E8a_system.ini
[RESET_RELEASE]
ENABLE=0
[CPU_SELECT]
DEVICE=M30879FL
DEVICE=M30865FJ
EMUSEL=0
MCU_GROUP=M32C__87 Group
MCU_GROUP=M32C__86 Group
[POWER_SUPPLY]
VOLTAGE_5_0=1
VOLTAGE_3_3=0
[FW_LOCATE]
FWADDRESS=f000
FWADDRESS=f800
RAMADDRESS=04
[WDT]
WDT_USE=0
branch/euphrasie_auguste/Emb_App/programme_principal_etud.c
void assser_tourelle(void);
void asser_roue_vitesse(void);
void decode_int(void);
void capteur(void);
short i;
short touche;
......
float dist_mur_droit;
float k_V = 1.0;
short commande_V_max = 40;
short commande_V_max = 100;
short commande_V;
unsigned short num_piste;
unsigned short num_piste;
unsigned short cap_touch;
void main()
{
......
switch(num_piste)
{
case 1:
terrain_vert();
break;
terrain_vert(); break;
case 2:
terrain_bleu();
break;
terrain_bleu(); break;
case 3:
terrain_rouge();
break;
terrain_rouge(); break;
case 4:
terrain_noir();
break;
terrain_noir(); break;
case 5:
terrain_vert();
break;
terrain_vert(); break;
case 6:
terrain_bleu();
break;
terrain_bleu(); break;
case 7:
terrain_rouge();
break;
terrain_rouge(); break;
case 8:
terrain_noir();
break;
terrain_noir(); break;
}
}
}
......
void terrain_vert(void){
while((num_piste == 1) || (num_piste == 5)){
for(i=0;i<50;i++){ assser_tourelle(); dly_tsk(10);}
commande_V_max = 0;
for(i=0;i<100;i++){ assser_tourelle(); dly_tsk(10);}
periph_command('T', 0);
while((periph_requete('M') >> 15) == 0 ) dly_tsk(50); // attente feux vert
periph_command('D', 0);
periph_command('V', 60);
dly_tsk(250);
while((num_piste == 1) || (num_piste == 5)){
assser_tourelle();
asser_roue_vitesse();
capteur();
switch(cap_touch)
{
case 86: //ligne droite
k_D = 1.0;
commande_V_max = 60;
distance_centre = 700; break;
case 74 :
case 82 :
case 66 :
case 67 : //virage
k_D = 1.25;
commande_V_max = 40;
distance_centre = 800; break;
default :
k_D = 1.25;
commande_V_max = 40;
distance_centre = 650; break;
}
num_piste = (periph_requete('M') << 8) >> 8;
dly_tsk(50);
}
......
void terrain_bleu(void){
while((num_piste == 2) || (num_piste == 6)){
for(i=0;i<50;i++){ assser_tourelle(); dly_tsk(10);}
for(i=0;i<100;i++){ assser_tourelle(); dly_tsk(10);}
periph_command('T', 0);
while((periph_requete('M') >> 15) == 0 ) dly_tsk(50); // attente feux vert
periph_command('D', 0);
periph_command('V', 60);
dly_tsk(250);
while((num_piste == 2) || (num_piste == 6)){
assser_tourelle();
asser_roue_vitesse();
capteur();
switch(cap_touch)
{
case 86: //ligne droite
k_D = 1.3;
commande_V_max = 50;
distance_centre = 500; break;
case 74 :
case 82 :
case 66 :
case 67 : //virage
k_D = 1.4;
commande_V_max = 25;
distance_centre = 500; break;
default :
k_D = 1.25;
commande_V_max = 50;
distance_centre = 500; break;
}
num_piste = (periph_requete('M') << 8) >> 8;
dly_tsk(50);
dly_tsk(40);
}
}
}
void terrain_rouge(void){
while((num_piste == 3) || (num_piste == 7)){
for(i=0;i<50;i++){ assser_tourelle(); dly_tsk(10);}
for(i=0;i<100;i++){ assser_tourelle(); dly_tsk(10);}
periph_command('T', 0);
while((periph_requete('M') >> 15) == 0 ) dly_tsk(50); // attente feux vert
while((num_piste == 3) || (num_piste == 7)){
assser_tourelle();
asser_roue_vitesse();
capteur();
switch(cap_touch)
{
case 86: //ligne droite
k_D = 1.0;
commande_V_max = 100;
distance_centre = 500;
break;
case 74 :
case 82 :
case 66 :
case 67 : //virage
k_D = 1.25;
commande_V_max = 15;
distance_centre = 500;
break;
default :
k_D = 1.0;
commande_V_max = 100;
distance_centre = 500; break;
}
num_piste = (periph_requete('M') << 8) >> 8;
dly_tsk(50);
}
......
void terrain_noir(void){
while((num_piste == 4) || (num_piste == 8)){
for(i=0;i<50;i++){ assser_tourelle(); dly_tsk(10);}
for(i=0;i<100;i++){ assser_tourelle(); dly_tsk(10);}
periph_command('T', 0);
while((periph_requete('M') >> 15) == 0 ) dly_tsk(50); // attente feux vert
while((num_piste == 4) || (num_piste == 8)){
......
}
void capteur(void){
cap_touch = (periph_requete('C') >> 8);
}
void decode_int(void){
//short i = 0;
//while(touche != '#'){
......
if(commande_D < 0) commande_D = commande_D * (-1);
commande_V = commande_V_max - (k_V * (commande_D/10));
//commande_V = commande_V_max - (k_V * (commande_D/10));
if(commande_V < 0) commande_V = commande_V * (-1);
//if(commande_V < 0) commande_V = commande_V * (-1);
periph_command('V', commande_V);
if(Bp_D == 1){commande_V_max = 0;}
periph_command('V', commande_V_max);
}
......
ports_mcu();
lcd_init();
periph_init();
periph_nom("#AutoTest*");
periph_nom("#Auguste*");
can_init();
clavier_init(1);
capture_init();
......
sta_tsk(ID_periph_rx);
}
void acqui()
{
LED_V=!LED_V;
//consigne_T = ad00;
commande_V_max = ad01/10;
//commande_V_max = ad01/10;
}
void assser_tourelle(void){

Formats disponibles : Unified diff