Subversion Repositories svnkaklik

Rev

Rev 256 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 256 Rev 257
Line 1... Line 1...
1
//********* Robot Camerus pro IstRobot 2007 ************
1
//********* Robot Camerus pro IstRobot 2007 ************
2
//"$Id: camerus.c 256 2007-04-27 13:21:45Z kakl $"
2
//"$Id: camerus.c 257 2007-04-27 13:22:54Z kakl $"
3
//*****************************************************
3
//*****************************************************
4
 
4
 
5
#include ".\camerus.h"
5
#include ".\camerus.h"
6
 
6
 
7
#USE FAST_IO (C)     // Brana C je ve FAST_IO modu, aby slo rychle cist z kamery
7
#USE FAST_IO (C)     // Brana C je ve FAST_IO modu, aby slo rychle cist z kamery
8
 
8
 
9
// Rychlostni konstanty
9
// Rychlostni konstanty
10
#define RR_CIHLA     60       // Rozumna rychlost pro objizdeni cihly
10
#define RR_CIHLA     50       // Rozumna rychlost pro objizdeni cihly
11
#define RR_PRERUSENI 50       // Rozumna rychlost pro priblizeni se k preruseni
11
#define RR_PRERUSENI 50       // Rozumna rychlost pro priblizeni se k preruseni
12
#define BRZDNA_DRAHA 0x20     // Jak daleko pred problemem se zacne brzdit
12
#define BRZDNA_DRAHA 0x20     // Jak daleko pred problemem se zacne brzdit
13
#define TUHOS        100      // Jak dlouho se bude couvat po narazu na naraznik
13
#define TUHOS        100      // Jak dlouho se bude couvat po narazu na naraznik
14
#define ODODO_CIHLA       0xFFF
14
#define ODODO_CIHLA       0xFFF
15
#define ODODO_TUNEL       0xFFF
15
#define ODODO_TUNEL       0xFFF
Line 123... Line 123...
123
   i=0;
123
   i=0;
124
   disp(i);
124
   disp(i);
125
}
125
}
126
 
126
 
127
// Zaznam LOGu do EEPROM
127
// Zaznam LOGu do EEPROM
128
void SaveLog(int8 log)
128
void SaveLog(int8 xlog)
129
{
129
{
130
   int8 n,i;
130
   int8 n,i;
131
 
131
 
132
   i=0;
132
   i=0;
133
   for(n=0;n<=(log*3);n+=3)   // Ulozeni Black Boxu do EEPROM
133
   for(n=0;n<=(log*3);n+=3)   // Ulozeni Black Boxu do EEPROM
Line 135... Line 135...
135
      write_eeprom(n,bb_f[i]);
135
      write_eeprom(n,bb_f[i]);
136
      write_eeprom(n+1,bb_h[i]);
136
      write_eeprom(n+1,bb_h[i]);
137
      write_eeprom(n+2,bb_l[i]);
137
      write_eeprom(n+2,bb_l[i]);
138
      i++;
138
      i++;
139
   };
139
   };
140
   write_eeprom(EEMAX,log);  // Zapis poctu zaznamu na konec EEPROM
140
   write_eeprom(EEMAX,xlog);  // Zapis poctu zaznamu na konec EEPROM
141
}
141
}
142
 
142
 
143
// Zaznam do Logu do RAM
143
// Zaznam do Logu do RAM
144
void LogLog(int8 flag, int16 gap)
144
void LogLog(int8 reason, int16 log_delay)
145
{
145
{
146
   int16 timer_pom;
146
   int16 timer_pom;
147
 
147
 
148
   timer_pom=get_timer1();          // Timer se musi vycist atomicky
148
   timer_pom=get_timer1();          // Timer se musi vycist atomicky
149
   bb_l[log]=make8(timer_pom,0); // Zaznam
149
   bb_l[log]=make8(timer_pom,0); // Zaznam
150
   bb_h[log]=make8(timer_pom,1);
150
   bb_h[log]=make8(timer_pom,1);
151
   bb_f[log]=flag;   // Typ zaznamu
151
   bb_f[log]=reason;   // Typ zaznamu
152
   if(log<MAXLOG) log++;         // Ukazatel na dalsi zaznam
152
   if(log<(MAXLOG-1)) log++;         // Ukazatel na dalsi zaznam
153
   last_log_odo=timer_pom+gap;     // Dalsi mereni nejdrive po ujeti def. vzdalenosti
153
   last_log_odo=timer_pom+log_delay;     // Dalsi mereni nejdrive po ujeti def. vzdalenosti
154
   rr=rrold;      // Problem skoncil, znovu jed Rozumnou Rychlosti
154
   rr=rrold;      // Problem skoncil, znovu jed Rozumnou Rychlosti
155
}
155
}
156
 
156
 
157
void ReadBlackBox()
157
void ReadBlackBox()
158
{
158
{
Line 533... Line 533...
533
            rr=rrold;      // Preruseni cary skoncilo, znovu jed Rozumnou Rychlosti
533
            rr=rrold;      // Preruseni cary skoncilo, znovu jed Rozumnou Rychlosti
534
         }
534
         }
535
         gap=0;
535
         gap=0;
536
      };
536
      };
537
 
537
 
538
      if(input(PROXIMITY) && ((stav==jizda)||(stav==cihla))) // Tunel
538
      if(!input(PROXIMITY) && ((stav==jizda)||(stav==cihla))) // Tunel
539
      {
539
      {
540
         if(last_log_odo<get_timer1()) // Aby nebyly zaznamy v logu prilis huste, musi se napred neco ujet od minuleho zaznamu
540
         if(last_log_odo<get_timer1()) // Aby nebyly zaznamy v logu prilis huste, musi se napred neco ujet od minuleho zaznamu
541
         {
541
         {
542
            LogLog(0,16);   // Priznak tunelu; dalsi mereni nejdrive po ujeti 48 cm
542
            LogLog(0xDD,16);   // Priznak tunelu; dalsi mereni nejdrive po ujeti 48 cm
543
            rr=rrold;      // Vjeli jsme do tunelu, znovu jed rychle
543
            rr=rrold;      // Vjeli jsme do tunelu, znovu jed rychle
544
         }
544
         }
545
      };
545
      };
546
 
546
 
547
//ODODO
547
//ODODO