Révision 399
Ajouté par bamendiond il y a plus de 6 ans
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
valeurs à changer