Subversion Repositories svnkaklik

Rev

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

Rev 240 Rev 242
Line 1... Line 1...
1
// Program pro MiniSumo na R-Day 2006
1
// Program pro MiniSumo na R-Day 2006
2
//"$Id: cholerik.c 240 2007-04-19 06:14:36Z kakl $"
2
//"$Id: cholerik.c 242 2007-04-19 18:12:00Z kakl $"
3
 
3
 
4
#include "cholerik.h"
4
#include "cholerik.h"
5
 
5
 
6
#define THRESHOLD     0x8        // rozhodovaci uroven pro okraj areny 0-15 (od 0.25 do 0.75 Vdd)
6
#define THRESHOLD     0x8        // rozhodovaci uroven pro okraj areny 0-15 (od 0.25 do 0.75 Vdd)
7
 
7
 
Line 50... Line 50...
50
   if (((BACK && stav) || (!BACK && !stav))) {if (b<255) b++;} else {b=0;};
50
   if (((BACK && stav) || (!BACK && !stav))) {if (b<255) b++;} else {b=0;};
51
   if (((FRONT && stav) || (!FRONT && !stav))) {if (f<255) f++;} else {f=0;};
51
   if (((FRONT && stav) || (!FRONT && !stav))) {if (f<255) f++;} else {f=0;};
52
   majak++;
52
   majak++;
53
   stav = ((majak & 0b1) == 0b1);
53
   stav = ((majak & 0b1) == 0b1);
54
 
54
 
55
   if (C1OUT) arena_r=TRUE; else arena_r=FALSE;
55
   if (!C1OUT) arena_r=TRUE; else arena_r=FALSE;
56
   if (C2OUT) arena_l=TRUE; else arena_l=FALSE;
56
   if (!C2OUT) arena_l=TRUE; else arena_l=FALSE;
57
   
57
 
58
   if (stav)
58
   if (stav)
59
   {
59
   {
60
      set_pwm1_duty(27);      // 1:1
60
      set_pwm1_duty(27);      // 1:1
61
   }
61
   }
62
   else
62
   else
63
   {
63
   {
64
      set_pwm1_duty(55);      // 1:0
64
      set_pwm1_duty(55);      // 1:0
65
   };
65
   };
-
 
66
   setup_comparator(NC_NC_NC_NC);   // inicializace komparatoru
66
   if (GRAVITY) {if (g<255) g++;} else g=0;
67
   if (GRAVITY) {if (g<255) g++;} else g=0;
-
 
68
   setup_comparator(A3_VR_A2_VR);   // inicializace komparatoru
67
   if (g>3 && !diag) {FL; FR; while(TRUE);}; // kdyz nas preklopi, nedej se
69
   if (g>3 && !diag) {FL; FR; while(TRUE);}; // kdyz nas preklopi, nedej se
68
}
70
}
69
 
71
 
70
// Primitivni Pipani
72
// Primitivni Pipani
71
void beep(unsigned int16 period, unsigned int16 length)
73
void beep(unsigned int16 period, unsigned int16 length)
Line 86... Line 88...
86
/**** DIAG ********************************************************************/
88
/**** DIAG ********************************************************************/
87
inline void diagnostika()
89
inline void diagnostika()
88
{
90
{
89
   unsigned int16 n;
91
   unsigned int16 n;
90
 
92
 
-
 
93
   setup_comparator(NC_NC_NC_NC);   // inicializace komparatoru
91
   if (GRAVITY)
94
   if (GRAVITY)
92
   {
95
   {
-
 
96
      setup_comparator(A3_VR_A2_VR);   // inicializace komparatoru
93
      diag=TRUE;
97
      diag=TRUE;
94
      enable_interrupts(INT_TIMER0);
98
      enable_interrupts(INT_TIMER0);
95
      enable_interrupts(GLOBAL);
99
      enable_interrupts(GLOBAL);
96
      while (true)         // Diagnostika cidel
100
      while (true)         // Diagnostika cidel
97
      {
101
      {
Line 111... Line 115...
111
         if (b>10) beep(6000,600);
115
         if (b>10) beep(6000,600);
112
         Delay_ms(50);
116
         Delay_ms(50);
113
         if((g>100) && arena_l && arena_r) break;  // Preklopen na zada a bily papir na obou cidlech na okraj areny
117
         if((g>100) && arena_l && arena_r) break;  // Preklopen na zada a bily papir na obou cidlech na okraj areny
114
      };
118
      };
115
 
119
 
116
      while (TRUE)   // Diagnostika podvozku
120
      while(TRUE)   // Diagnostika podvozku
117
      {
121
      {
118
         for (n=500; n<800; n+=100)
122
         for (n=500; n<800; n+=100)
119
         {
123
         {
120
            beep(n,n); //beep UP
124
            beep(n,n); //beep UP
121
         };
125
         };
Line 152... Line 156...
152
   setup_timer_1(T1_DISABLED);
156
   setup_timer_1(T1_DISABLED);
153
   setup_timer_2(T2_DIV_BY_1,54,1); // Casovac pro PWM pro IR sensory cca 36kHz
157
   setup_timer_2(T2_DIV_BY_1,54,1); // Casovac pro PWM pro IR sensory cca 36kHz
154
   setup_ccp1(CCP_PWM);    // HW PWM ON
158
   setup_ccp1(CCP_PWM);    // HW PWM ON
155
   set_pwm1_duty(27);      // 1:1
159
   set_pwm1_duty(27);      // 1:1
156
   setup_comparator(A3_VR_A2_VR);   // inicializace komparatoru
160
   setup_comparator(A3_VR_A2_VR);   // inicializace komparatoru
-
 
161
   setup_comparator(NC_NC_NC_NC);   // inicializace komparatoru
157
   setup_vref(VREF_HIGH|THRESHOLD);        // 16 kroku od 0.25 do 0.75 Vdd
162
   setup_vref(VREF_HIGH|THRESHOLD);        // 16 kroku od 0.25 do 0.75 Vdd
158
 
163
 
159
   Beep(1000,200);     //double beep
164
   Beep(1000,200);     //double beep
160
   Delay_ms(50);
165
   Delay_ms(50);
161
   Beep(1000,200);
166
   Beep(1000,200);