Revision 890
Changed some odometry stuff. Interrupt is called now.
Still some problem that is not updating x and y data.
odometry.c | ||
---|---|---|
25 | 25 |
void odometry_init(void){ |
26 | 26 |
encoder_init(); |
27 | 27 |
odometry_reset(); |
28 |
|
|
29 |
//CTC Mode. CLK / 1024 |
|
30 |
TCCR2 = 0; // (Fully disconnected) |
|
31 |
TCCR2 = _BV(WGM21) | _BV(CS22) | _BV(CS20); //CLK/1024 , CTC Mode. |
|
32 |
|
|
33 |
TIMSK |= _BV(OCIE2); |
|
34 |
|
|
35 |
OCR2 = ODOMETRY_CLK; |
|
28 | 36 |
} |
29 | 37 |
|
30 | 38 |
void odometry_reset(void){ |
31 | 39 |
diff_x = 0; |
32 | 40 |
diff_y = 0; |
33 | 41 |
angle = 0.0; |
34 |
|
|
35 |
//CTC Mode. CLK / 1024 |
|
36 |
TCCR2 = 0; // (Fully disconnected) |
|
37 |
TCCR2 = _BV(WGM32) | _BV(CS32) | _BV(CS30); //CLK/1024 , CTC Mode. |
|
38 |
|
|
39 |
OCR2 = ODOMETRY_CLK; |
|
40 | 42 |
} |
41 | 43 |
|
42 | 44 |
void odometry_run(void){ |
43 |
usb_puts("*"); |
|
44 | 45 |
int v_l, v_r; |
45 | 46 |
float omega; |
46 | 47 |
int encoder_left, encoder_right; |
Also available in: Unified diff