Subversion Repositories svnkaklik

Compare Revisions

Ignore whitespace Rev 256 → Rev 257

/roboti/istrobot/camerus/SW/876/camerus.c
7,7 → 7,7
#USE FAST_IO (C) // Brana C je ve FAST_IO modu, aby slo rychle cist z kamery
 
// Rychlostni konstanty
#define RR_CIHLA 60 // Rozumna rychlost pro objizdeni cihly
#define RR_CIHLA 50 // Rozumna rychlost pro objizdeni cihly
#define RR_PRERUSENI 50 // Rozumna rychlost pro priblizeni se k preruseni
#define BRZDNA_DRAHA 0x20 // Jak daleko pred problemem se zacne brzdit
#define TUHOS 100 // Jak dlouho se bude couvat po narazu na naraznik
125,7 → 125,7
}
 
// Zaznam LOGu do EEPROM
void SaveLog(int8 log)
void SaveLog(int8 xlog)
{
int8 n,i;
 
137,11 → 137,11
write_eeprom(n+2,bb_l[i]);
i++;
};
write_eeprom(EEMAX,log); // Zapis poctu zaznamu na konec EEPROM
write_eeprom(EEMAX,xlog); // Zapis poctu zaznamu na konec EEPROM
}
 
// Zaznam do Logu do RAM
void LogLog(int8 flag, int16 gap)
void LogLog(int8 reason, int16 log_delay)
{
int16 timer_pom;
 
148,9 → 148,9
timer_pom=get_timer1(); // Timer se musi vycist atomicky
bb_l[log]=make8(timer_pom,0); // Zaznam
bb_h[log]=make8(timer_pom,1);
bb_f[log]=flag; // Typ zaznamu
if(log<MAXLOG) log++; // Ukazatel na dalsi zaznam
last_log_odo=timer_pom+gap; // Dalsi mereni nejdrive po ujeti def. vzdalenosti
bb_f[log]=reason; // Typ zaznamu
if(log<(MAXLOG-1)) log++; // Ukazatel na dalsi zaznam
last_log_odo=timer_pom+log_delay; // Dalsi mereni nejdrive po ujeti def. vzdalenosti
rr=rrold; // Problem skoncil, znovu jed Rozumnou Rychlosti
}
 
535,11 → 535,11
gap=0;
};
 
if(input(PROXIMITY) && ((stav==jizda)||(stav==cihla))) // Tunel
if(!input(PROXIMITY) && ((stav==jizda)||(stav==cihla))) // Tunel
{
if(last_log_odo<get_timer1()) // Aby nebyly zaznamy v logu prilis huste, musi se napred neco ujet od minuleho zaznamu
{
LogLog(0,16); // Priznak tunelu; dalsi mereni nejdrive po ujeti 48 cm
LogLog(0xDD,16); // Priznak tunelu; dalsi mereni nejdrive po ujeti 48 cm
rr=rrold; // Vjeli jsme do tunelu, znovu jed rychle
}
};
/roboti/istrobot/camerus/SW/876/diag.c
7,6 → 7,7
for(n=0;n<255;n++) write_eeprom(n,0);
bb_l[0]=0; // Zapis na pozici 0 vzdalenost 0
bb_h[0]=0;
bb_f[0]=0;
SaveLog(0); // Zapis do EEPROM pocet zaznamu 0, tedy jeden zaznam
for(n=0;n<=4;n++)
{
/roboti/istrobot/camerus/SW/876/objizdka_L.c
37,7 → 37,7
};
 
set_pwm1_duty(0);
set_pwm2_duty(220); // !!! mozna prilis maly vykon pro rozjezd pro zatuhlou prevodovku
set_pwm2_duty(200); // !!! mozna prilis maly vykon pro rozjezd pro zatuhlou prevodovku
output_high(MOT_L); // leve kolo reverz
output_low(MOT_R); // prave kolo vpred
if(get_timer1()>(odocounter+5)) // konec zatacky?
80,11 → 80,11
{
if((vzdalenost!=0)||!input(PROXIMITY)||((delta_bearing>60)&&(delta_bearing<128))) // Udrzovani konstantni vzdalenosti od cihly
{
if(cas>(CASMIN+20)) cas-=20;
if(cas>(CASMIN+30)) cas-=30;
}
else
{
if(cas<(CASMAX-20)) cas+=20;
if(cas<(CASMAX-30)) cas+=30;
};
};
// Elektronicky diferencial
147,8 → 147,8
};
disp(0xC3);
 
set_pwm1_duty(20); //!!! pred zatuhlejma prevodovkama tam bylo 20 a 200
set_pwm2_duty(250);
set_pwm1_duty(0); //!!! pred zatuhlejma prevodovkama tam bylo 20 a 200
set_pwm2_duty(240);
output_high(MOT_L);
output_low(MOT_R);
delay_us(40);