Subversion Repositories svnkaklik

Compare Revisions

Ignore whitespace Rev 197 → Rev 198

/roboti/istrobot/camerus/SW/876/camerus.c
43,9 → 43,10
#bit RBIF = INTCON.0
 
enum stavy {start,rozjezd,jizda,cihla,cil};
stavy stav; // Kde jsme na trati
int8 cas; // Cas hrany bila/cerna v radce
int8 stred; // vystredeni kolecka
stavy stav; // Kde jsme na trati
int8 cas; // Cas hrany bila/cerna v radce
int8 stred; // Vystredeni kolecka
int16 odocounter; // Zaznamenani aktualniho stavu pocitadla odometrie
 
inline void brzda()
{
95,8 → 96,6
#int_EXT
EXT_isr() // Preruseni od prekazky
{
int8 i;
 
set_pwm1_duty(0); // reverz (zabrzdi)
set_pwm2_duty(0);
output_high(MOT_L); // vzad
125,16 → 124,13
set_pwm2_duty(140);
output_low(MOT_L);
output_low(MOT_R);
i=0;
 
odocounter=get_timer1(); // Poznamenej aktualni stav odometrie
while(true)
{
while(input(ODO)) if(!input(PROXIMITY)) goto brzdi; // Je cihla blizko?
while(!input(ODO));
i++;
if(i==7) return; // nedojeli jsme k cihle, jed dal
if(!input(PROXIMITY)) break; // Je cihla blizko?
if(get_timer1()>=odocounter+7) return; // nedojeli jsme k cihle, jed dal
};
 
brzdi:
set_pwm1_duty(0); // reverz (zabrzdi)
set_pwm2_duty(0);
output_high(MOT_L);
193,6 → 189,7
}
 
 
//---------------------------------- MAIN --------------------------------------
void main()
{
int8 offset; // Promena pro ulozeni ovsetu
204,8 → 201,7
setup_adc_ports(ALL_ANALOG); // Zapnuti A/D prevodniku pro cteni kroutitek
setup_adc(ADC_CLOCK_INTERNAL);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); // Casovac pro mereni casu hrany W/B v radce
// setup_timer_1(T1_DISABLED);
setup_timer_1(T1_EXTERNAL_SYNC); // Cita pulzy z odometrie z praveho kola
setup_timer_1(T1_EXTERNAL); // Cita pulzy z odometrie z praveho kola
setup_timer_2(T2_DIV_BY_16,255,1); // Casovac PWM motoru
setup_ccp1(CCP_PWM); // RC1 // PWM pro motory
setup_ccp2(CCP_PWM); // RC2
212,7 → 208,7
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
 
set_tris_c(0b11111000); // Nastaveni vstup/vystup pro branu C, protoze se nedela automaticky
set_tris_c(0b11111001); // Nastaveni vstup/vystup pro branu C, protoze se nedela automaticky
 
set_pwm1_duty(0); // Zastav motory
set_pwm2_duty(0);
313,7 → 309,7
 
set_adc_channel(CERVENA); // --- Kroutitko pro jas ---
delay_ms(1);
offset=read_adc();
offset=read_adc();
offset &= 0b11111100; // Dva nejnizsi bity ignoruj
// offset += 0x70; // Jas nebude nikdy nizsi
disp(offset);
407,6 → 403,7
{
disp(0x80);
while(input(PROXIMITY)); // Cekej, dokud starter neda ruku pryc
set_timer1(0); // Vynuluj citac odometrie
set_pwm1_duty(255); // Rychly rozjezd !!! Zkontrolovat na oscyloskopu
set_pwm2_duty(255);
disp(0x1);