Projet

Général

Profil

« Précédent | Suivant » 

Révision 399

Ajouté par bamendiond il y a plus de 6 ans

valeurs à changer

Voir les différences:

branch/mendiondo/Emb_App/SessionM32C_E8a_system.ini
[Target]
M32C E8a SYSTEM=Renesas Communications
[USER_DATA]
RESET=ff001c
RESET=ff0020
branch/mendiondo/Emb_App/crt0mr.a30
; after reset,this program will start
;-----------------------------------------------------------------
__SYS_INITIAL:
LDC #__Sys_Sp,ISP ; set initial ISP
LDC #__Sys_Sp,ISP ; set initial ISP
MOV.B #2,0AH
MOV.B #00,PMOD ; Set Processor Mode Register
branch/mendiondo/Emb_App/programme_principal_etud.c
unsigned int alpha;
unsigned int alpha;j;
unsigned int dist;
unsigned int k=2,cpt=0;ka=1;
unsigned int numero_capt,couleur_capt,couleur,num_piste,feu;
unsigned int numero_capt,couleur_capt,couleur_piste,couleur,num_piste,feu,ok=0,tour=0;
unsigned short capteur;piste;
......
ka=1;
comm.data.val=65; // 75 pour niveaux 1 , 65 pour 2, 45 pour 3
}
else if (tour==3)comm.data.val=0;
else{
comm.data.val=30; // 30 1,2,3 20 4 vitesse virage
k=5;
comm.data.val=35; // 30 1,2,3 20 4 vitesse virage
k=6;
}
snd_dtq(CanTx,comm.msg);
// dly_tsk(100);
......
ka=1;
comm.data.val=65; // 75 pour niveaux 1 , 65 pour 2, 45 pour 3
}
else if (tour==3)comm.data.val=0;
else{
comm.data.val=30; // 30 1,2,3 20 4 vitesse virage
k=5;
k=6;
}
snd_dtq(CanTx,comm.msg);
// dly_tsk(100);
......
if ((numero_capt==1024)&&(couleur_capt==118)){ // on passe le capteur d?but saut du niveau 3
ka=1; /////////////////////////////////manque peut_?tre un cpt++
k=2;
cpt=5;
comm.data.val=45; // pas besoin si on laisse la vitesse a 45 tt le temps
}
else if (tour==3)comm.data.val=0;
else if ((numero_capt==768)&&(couleur_capt==66)){ // on passe le capteur arriv?e saut du niveau 3 donc on ralentit
k=3;
ka=1;
......
else if (cpt%2 ==1){
k=2;
ka=1;
comm.data.val=45; // 75 pour niveaux 1 , 65 pour 2, 45 pour 3
comm.data.val=50; // 75 pour niveaux 1 , 65 pour 2, 45 pour 3
}
else{
comm.data.val=30; // 30 1,2,3 20 4 vitesse virage
k=5;
k=6;
}
snd_dtq(CanTx,comm.msg);
// dly_tsk(100);
......
else if ((numero_capt==1024)&&(couleur_capt==114)){ // on passe le capteur d?but saut du niveau 4
ka=1;
k=2;
comm.data.val=41,5;
comm.data.val=43;
}
else if (tour==3)comm.data.val=0;
else if ((numero_capt==512)&&(couleur_capt==82)){ // on passe le capteur sortie virage avant SAUT
ka=1;
k=2;
......
k=3;
comm.data.val=10;
}
else if ((numero_capt==1024)&&(couleur_capt==86)){ // on passe le capteur d?but saut du niveau 4
ka=1;
k=2;
comm.data.val=10;
}
else if (cpt%2 ==1){
k=2;
ka=1;
comm.data.val=25; // 75 pour niveaux 1 , 65 pour 2, 45 pour 3
comm.data.val=20; // 75 pour niveaux 1 , 65 pour 2, 45 pour 3
}
else{
comm.data.val=20; // 30 1,2,3 20 4 vitesse virage
k=5;
comm.data.val=15; // 30 1,2,3 20 4 vitesse virage
k=2;
}
snd_dtq(CanTx,comm.msg);
// dly_tsk(100);
......
comm.data.id='T';
comm.data.rtr=0;
switch (num_piste){
case (1024):
if ((numero_capt==512)&&(couleur_capt==86)){ // on passe le capteur mont?e niveau 4
comm.data.val=k*(900-alpha);
}
else{
comm.data.val=k*(450-alpha); //commande en vitesse de la tourelle
}
snd_dtq(CanTx,comm.msg);
if ((numero_capt==512)&&(couleur_capt==86)){ // on passe le capteur mont?e niveau 4
comm.data.val=k*(900-alpha);
}
else{
comm.data.val=k*(450-alpha); //commande en vitesse de la tourelle
}
snd_dtq(CanTx,comm.msg);
break;
default :
comm.data.val=k*(450-alpha);
snd_dtq(CanTx,comm.msg);
break;
}
dly_tsk(10);
}
}
void distance(){
CanFrame req,comm;
......
while(1){
req.data.id='U';
req.data.rtr=1;
if ((numero_capt==1024)&&(couleur_capt==118)){ // on passe le capteur saut du niveau 3
dly_tsk(30);
}
else if ((numero_capt==1024)&&(couleur_capt==114)){ // on passe le capteur saut niveau 4
dly_tsk(200);
}
else{
periph[ADDR('U')].ev=0x02;
snd_dtq(CanTx, req.msg);
wai_flg(ev_periph, 0x02,TWF_ANDW, &flag);
dist=periph[ADDR('U')].val; //lecture de la distance
if((dist<1500)&&(dist>400)){
comm.data.id='D';
comm.data.rtr=0;
if ((numero_capt==2048)&&(couleur_capt==118)){ // on passe le capteur tonneau niveau 4
comm.data.val=-500 + dist;
switch(num_piste){
case(1024):
if ((numero_capt==1024)&&(couleur_capt==114)){ // on passe le capteur saut niveau 4
dly_tsk(220);
}
else if ((numero_capt==512)&&(couleur_capt==86)){ // on passe le capteur sortie virage niveau 4
if ((dist<400)||(dist>550)){
dly_tsk(2);
else{
periph[ADDR('U')].ev=0x02;
snd_dtq(CanTx, req.msg);
wai_flg(ev_periph, 0x02,TWF_ANDW, &flag);
dist=periph[ADDR('U')].val; //lecture de la distance
/* if((dist=0)||(dist>2000)){
LED_J=1;
dly_tsk(1000);
}
else{
comm.data.val=ka*( -502 +dist);
*/
if(dist<1500){
comm.data.id='D';
comm.data.rtr=0;
if ((numero_capt==2048)&&(couleur_capt==118)){ // on passe le capteur tonneau niveau 4
comm.data.val=-520 + dist;
}
else if ((numero_capt==512)&&(couleur_capt==86)){ // on passe le capteur sortie virage niveau 4
if ((dist<400)||(dist>550)){
dly_tsk(2);
}
else{
comm.data.val=ka*( -502 +dist);
}
}
else{
comm.data.val=ka*(-710 +dist);
}
}
}
else{
}
snd_dtq(CanTx, comm.msg);
break;
case (768):
if ((numero_capt==1024)&&(couleur_capt==118)){ // on passe le capteur saut du niveau 3
dly_tsk(220);
}
periph[ADDR('U')].ev=0x02;
snd_dtq(CanTx, req.msg);
wai_flg(ev_periph, 0x02,TWF_ANDW, &flag);
dist=periph[ADDR('U')].val; //lecture de la distance
if((dist<1500)&&(dist>400)){
comm.data.id='D';
comm.data.rtr=0;
comm.data.val=ka*(-710 +dist);
}
snd_dtq(CanTx, comm.msg); //commande en angle des roues
}
}
snd_dtq(CanTx, comm.msg);
break;
default:
periph[ADDR('U')].ev=0x02;
snd_dtq(CanTx, req.msg);
wai_flg(ev_periph, 0x02,TWF_ANDW, &flag);
dist=periph[ADDR('U')].val; //lecture de la distance
if((dist<1500)&&(dist>400)){
comm.data.id='D';
comm.data.rtr=0;
comm.data.val=ka*(-710 +dist);
}
snd_dtq(CanTx, comm.msg);
break;
}
dly_tsk(10);
}
}
......
numero_capt = capteur << 8;
couleur_capt = capteur >>8 ;
if(couleur!=couleur_capt)cpt++; // d?tection de changement de capteur
if(couleur!=couleur_capt){ // d?tection de changement de capteur
if ((couleur_capt == 86)&&(numero_capt ==1280)){
tour++;
}
cpt++;
}
couleur=couleur_capt;
dly_tsk(100);
......
snd_dtq(CanTx, req.msg);
wai_flg(ev_periph, 0x04, TWF_ANDW, &flag);
piste=periph[ADDR('M')].val;
num_piste=piste<<8;
couleur=piste<<15;
couleur_piste=piste<<15;
feu=piste>>15;
dly_tsk(500);
}
......
capture_init();
sta_tsk(ID_periph_rx);
sta_tsk(ID_pistes);
sta_tsk(ID_avancer);
// sta_cyc(ID_acqui);
sta_tsk(ID_asserv_tourelle);
sta_tsk(ID_distance);
sta_tsk(ID_capte);
while(1)
{
dly_tsk(100);
while(1){
dly_tsk(1000);
if (feu == 65535){
ok=1;
}
if(ok == 1){
sta_tsk(ID_avancer);
}
if(tour == 3)/*||(Bp_G==1))*/{
ter_tsk(ID_pistes);
ter_tsk(ID_avancer);
ok=0;
ter_tsk(ID_asserv_tourelle);
ter_tsk(ID_distance);
ter_tsk(ID_capte);
ter_tsk(ID_periph_rx);
}
}
}
void acqui()
branch/mendiondo/Emb_App/conf_noyau.cfg
initial_start = OFF;
exinf = 0x0;
};
flag[]{
name = ev_bus_fin_tr;
initial_pattern = 0x0000;

Formats disponibles : Unified diff