Project

General

Profile

Statistics
| Revision:

root / trunk / code / lib / include / libdragonfly / encoders.h @ 1461

History | View | Annotate | Download (2.04 KB)

1 888 justin
/**
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 1371 chihsiuh
        /** @brief Left wheel **/
24 888 justin
        #define LEFT 0
25
#endif
26
#ifndef RIGHT
27 1371 chihsiuh
        /** @brief Right wheel **/
28 888 justin
        #define RIGHT 1
29
#endif
30
31 1429 dsschult
/** @brief Max value of valid encoder reading. **/
32
#define ENCODER_MAX 1024
33
34 888 justin
/** @brief Magnet misaligned - likely distance from encoder problem. **/
35
#define ENCODER_MAGNET_FAILURE 1025
36
/** @brief Encoder misaligned - likely on XY plane. **/
37
#define ENCODER_MISALIGNED 1027
38
/** @brief Not enough time has passed - encoders not initialized in hardware. **/
39
#define ENCODER_DATA_NOT_READY 1026
40
41 1371 chihsiuh
/** @brief delay_ms argument after a full read is complete **/
42 888 justin
#define ENCODER_DELAY 20
43
44
//Data invalid flags (hardware failure):
45
#define OCF _BV(4)
46
#define COF _BV(3)
47
48
//Data invalid alarm (May be invalid):
49
#define LIN _BV(2)
50
51
#define MagINCn _BV(1)
52
#define MagDECn _BV(0)
53
54 1461 bneuman
#ifdef BUFFER_SIZE
55
#error BUFFER_SIZE already defined!
56
#endif
57
58 1371 chihsiuh
/** @brief Buffer size **/
59 1429 dsschult
#define BUFFER_SIZE 46
60 888 justin
61 1429 dsschult
#define ERR_VEL 1024
62
63 888 justin
/** @brief Initialize encoders. **/
64 1461 bneuman
int encoders_init(void);
65 888 justin
/** @brief Read instantaneous encoder value. **/
66
int encoder_read(char encoder);
67
68 1429 dsschult
/** @brief Get total distance traveled.
69
 *  @note  Simply calls encoder_get_dx.
70
 **/
71
int encoder_get_x(char encoder);
72
73
/** @brief Get instantaneous velocity. **/
74
int encoder_get_v(char encoder);
75
76 888 justin
/** @brief Get total distance traveled. **/
77
int encoder_get_dx(char encoder);
78
/** @brief Reset distance counter. **/
79 1461 bneuman
int encoder_rst_dx(char encoder);
80 888 justin
/** @brief Get time count: The number of encoder reads that have occurred. **/
81
int encoder_get_tc(void);
82
/** @brief Reset the time count. **/
83 1461 bneuman
int encoder_rst_tc(void);
84 888 justin
85
/** @brief Waits for the next n encoder reading, then returns. **/
86 1461 bneuman
int encoder_wait( int nReadings );
87 888 justin
88
/**@}**/ //end group
89
90
#endif