Project

General

Profile

Statistics
| Revision:

root / branches / encoders / code / behaviors / spline / server / encoders.h @ 1344

History | View | Annotate | Download (1.77 KB)

1 1238 ayeager
/**
2
 *
3
 * @file encoders.h
4
 * @brief Contains functions for reading encoder values.
5
 *
6
 * Contains high and low level functions for reading encoders
7
 * including reading out total distance covered, and
8
 * eventually velocity.
9
 *
10
 * @author Colony Project, CMU Robotics Club
11
*/
12
13
/**
14
 * @addtogroup encoders
15
 * @{
16
 **/
17
18
#ifndef __ENCODERS_H__
19
#define __ENCODERS_H__
20
21
22
#ifndef LEFT
23
        #define LEFT 0
24
#endif
25
#ifndef RIGHT
26
        #define RIGHT 1
27
#endif
28
29
/** @brief Magnet misaligned - likely distance from encoder problem. **/
30
#define ENCODER_MAGNET_FAILURE 1025
31
/** @brief Encoder misaligned - likely on XY plane. **/
32
#define ENCODER_MISALIGNED 1027
33
/** @brief Not enough time has passed - encoders not initialized in hardware. **/
34
#define ENCODER_DATA_NOT_READY 1026
35
36
//delay_ms argument after a full read is complete
37
#define ENCODER_DELAY 20
38
39
//Data invalid flags (hardware failure):
40
#define OCF _BV(4)
41
#define COF _BV(3)
42
43
//Data invalid alarm (May be invalid):
44
#define LIN _BV(2)
45
46
#define MagINCn _BV(1)
47
#define MagDECn _BV(0)
48
49
#define BUFFER_SIZE 23
50
51
/** @brief Initialize encoders. **/
52
void encoders_init(void);
53
/** @brief Read instantaneous encoder value. **/
54
int encoder_read(char);
55
/** @brief Currently a stub - DO NOT Use. **/
56
char encoder_direction(char encoder);
57
58
/** @brief Get total distance traveled. **/
59
int encoder_get_dx(char encoder);
60
/** @brief Reset distance counter. **/
61
void encoder_rst_dx(char encoder);
62
/** @brief Get time count: The number of encoder reads that have occurred. **/
63
int encoder_get_tc(void);
64
/** @brief Reset the time count. **/
65
void encoder_rst_tc(void);
66
67
/** @brief Still untested, so use at your own risk. **/
68
int encoder_get_v(char encoder);
69
70
/** @brief Waits for the next encoder reading, then returns. **/
71
void encoder_wait( int nReadings );
72
73
/**@}**/ //end group
74
75
#endif