Subversion Repositories svnkaklik

Rev

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

Rev 188 Rev 189
Line -... Line 1...
-
 
1
//******** Mrakomer ******************************************
-
 
2
//"$Id: camerus.c 189 2007-03-16 16:01:25Z kakl $"
-
 
3
//************************************************************
-
 
4
 
1
#include ".\camerus.h"
5
#include ".\camerus.h"
2
 
6
 
3
#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
4
 
8
 
5
// A/D vstupy
9
// A/D vstupy
Line 330... Line 334...
330
 
334
 
331
   NightRider(1);    // Musi se dat cas kamere na AGC a AEC
335
   NightRider(1);    // Musi se dat cas kamere na AGC a AEC
332
 
336
 
333
   { // Mereni expozice
337
   { // Mereni expozice
334
      int8 t1,t2;
338
      int8 t1,t2;
335
   
339
 
336
      i2c_start();      // Brightness, zacni od uplne tmy
340
      i2c_start();      // Brightness, zacni od uplne tmy
337
      i2c_write(0xC0);
341
      i2c_write(0xC0);
338
      i2c_write(0x06);
342
      i2c_write(0x06);
339
      i2c_write(0);  // 80h default
343
      i2c_write(0);  // 80h default
340
      i2c_stop();
344
      i2c_stop();
341
      delay_ms(50);
345
      delay_ms(50);
342
   
346
 
343
      for(offset=0x60;offset<=254;offset+=0x04)   // Zacni od jasu 60h
347
      for(offset=0x60;offset<=254;offset+=0x04)   // Zacni od jasu 60h
344
      {
348
      {
345
         i2c_start();      // Brightness
349
         i2c_start();      // Brightness
346
         i2c_write(0xC0);
350
         i2c_write(0xC0);
347
         i2c_write(0x06);
351
         i2c_write(0x06);
348
         i2c_write(offset);  // 80h default
352
         i2c_write(offset);  // 80h default
349
         i2c_stop();
353
         i2c_stop();
350
         disp(offset);
354
         disp(offset);
351
         delay_ms(50);
355
         delay_ms(50);
352
   
356
 
353
         t1=0;
357
         t1=0;
354
         t2=0;
358
         t2=0;
355
         while(!input(HREF));    // Cekej nez se zacnou posilat pixely z radky
359
         while(!input(HREF));    // Cekej nez se zacnou posilat pixely z radky
356
         delay_ms(5);
360
         delay_ms(5);
357
         while(!input(HREF));    // Cekej nez se zacnou posilat pixely z radky
361
         while(!input(HREF));    // Cekej nez se zacnou posilat pixely z radky
Line 360... Line 364...
360
         while(input(PIX));
364
         while(input(PIX));
361
         t1=get_timer0();    // Precti cas z citace casu hrany
365
         t1=get_timer0();    // Precti cas z citace casu hrany
362
         set_timer0(0);          // Vynuluj pocitadlo casu
366
         set_timer0(0);          // Vynuluj pocitadlo casu
363
         while(!input(PIX));
367
         while(!input(PIX));
364
         t2=get_timer0();
368
         t2=get_timer0();
365
   
369
 
366
         if((t1>60) && (t1<140) && (t2>5) && (t2<=10)) break; // Vidis, co mas?
370
         if((t1>60) && (t1<140) && (t2>5) && (t2<=10)) break; // Vidis, co mas?
367
   
371
 
368
         delay_ms(2);   // Preskoc druhou radku z kamery
372
         delay_ms(2);   // Preskoc druhou radku z kamery
369
      };
373
      };
370
      delay_ms(1000);   // Nech chvili na displayi zmerenou hodnotu
374
      delay_ms(1000);   // Nech chvili na displayi zmerenou hodnotu
371
   }
375
   }
372
 
376
 
Line 379... Line 383...
379
   i2c_write(0xC0);
383
   i2c_write(0xC0);
380
   i2c_write(0x06);
384
   i2c_write(0x06);
381
   i2c_write(offset+0x70);  // 80h default
385
   i2c_write(offset+0x70);  // 80h default
382
   i2c_stop();
386
   i2c_stop();
383
   delay_ms(1000);   // Nech hodnotu chvili na displayi
387
   delay_ms(1000);   // Nech hodnotu chvili na displayi
384
   
388
 
385
   set_adc_channel(ZELENA);   // --- Kroutitko pro vykon motoru ---
389
   set_adc_channel(ZELENA);   // --- Kroutitko pro vykon motoru ---
386
   delay_ms(1);
390
   delay_ms(1);
387
   rr=read_adc()>>2; // 0-31  // Pokud by se zvetsil rozsah, tak zkontrolovat jakonasobeni !!!
391
   rr=read_adc()>>2; // 0-31  // Pokud by se zvetsil rozsah, tak zkontrolovat jakonasobeni !!!
388
 
392
 
389
   cas=CASAVR-CASMIN;  // Inicializace promenych, aby neslo servo za roh a aby se to rozjelo jeste dneska
393
   cas=CASAVR-CASMIN;  // Inicializace promenych, aby neslo servo za roh a aby se to rozjelo jeste dneska
Line 466... Line 470...
466
      if(stav==start)         // Snimkuje, toci servem a ceka na start
470
      if(stav==start)         // Snimkuje, toci servem a ceka na start
467
      if(read_adc()<128)
471
      if(read_adc()<128)
468
      {
472
      {
469
         disp(0x80);
473
         disp(0x80);
470
         while(read_adc()<128); // Cekej, dokud starter neda ruku pryc
474
         while(read_adc()<128); // Cekej, dokud starter neda ruku pryc
471
         set_pwm1_duty(255);    // Rychly rozjezd  !!! Zkontrolovat na oscyloskopu 
475
         set_pwm1_duty(255);    // Rychly rozjezd  !!! Zkontrolovat na oscyloskopu
472
         set_pwm2_duty(255);
476
         set_pwm2_duty(255);
473
         disp(0x1);
477
         disp(0x1);
474
         delay_ms(200);       
478
         delay_ms(200);
475
         stav=jizda;
479
         stav=jizda;
476
      }
480
      }
477
 
481
 
478
      pom=0x80;    // Zobrazeni pozice cary na displayi
482
      pom=0x80;    // Zobrazeni pozice cary na displayi
479
      for(n=CASMAX/8; n<cas; n+=CASMAX/8) pom>>=1;
483
      for(n=CASMAX/8; n<cas; n+=CASMAX/8) pom>>=1;