![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
interface to chr_6dm and Baro bmp085
chr.h@0:d07617f8ede9, 2011-10-17 (annotated)
- Committer:
- belloula
- Date:
- Mon Oct 17 19:43:06 2011 +0000
- Revision:
- 0:d07617f8ede9
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
belloula | 0:d07617f8ede9 | 1 | #include "mbed.h" |
belloula | 0:d07617f8ede9 | 2 | |
belloula | 0:d07617f8ede9 | 3 | |
belloula | 0:d07617f8ede9 | 4 | // Null packet |
belloula | 0:d07617f8ede9 | 5 | |
belloula | 0:d07617f8ede9 | 6 | #define NO_DATA = 0x00; |
belloula | 0:d07617f8ede9 | 7 | #define FAILED_CHECKSUM = 0x01; |
belloula | 0:d07617f8ede9 | 8 | |
belloula | 0:d07617f8ede9 | 9 | |
belloula | 0:d07617f8ede9 | 10 | int packet[100]; |
belloula | 0:d07617f8ede9 | 11 | int packet_length = 0; |
belloula | 0:d07617f8ede9 | 12 | |
belloula | 0:d07617f8ede9 | 13 | // Tx packet types (responses) |
belloula | 0:d07617f8ede9 | 14 | |
belloula | 0:d07617f8ede9 | 15 | |
belloula | 0:d07617f8ede9 | 16 | const int SET_ACTIVE_CHANNELS = 0x80; |
belloula | 0:d07617f8ede9 | 17 | const int SET_SILENT_MODE = 0x81; |
belloula | 0:d07617f8ede9 | 18 | const int SET_BROADCAST_MODE = 0x82; |
belloula | 0:d07617f8ede9 | 19 | const int SET_GYRO_BIAS = 0x83; |
belloula | 0:d07617f8ede9 | 20 | const int SET_ACCEL_BIAS = 0x84; |
belloula | 0:d07617f8ede9 | 21 | const int SET_ACCEL_REF_VECTOR = 0x85; |
belloula | 0:d07617f8ede9 | 22 | const int AUTO_SET_ACCEL_REF = 0x86; |
belloula | 0:d07617f8ede9 | 23 | const int ZERO_RATE_GYROS = 0x87; |
belloula | 0:d07617f8ede9 | 24 | const int SELF_TEST = 0x88; |
belloula | 0:d07617f8ede9 | 25 | const int SET_START_CAL = 0x89; |
belloula | 0:d07617f8ede9 | 26 | const int SET_PROCESS_COVARIANCE = 0x8A; |
belloula | 0:d07617f8ede9 | 27 | const int SET_MAG_COVARIANCE = 0x8B; |
belloula | 0:d07617f8ede9 | 28 | const int SET_ACCEL_COVARIANCE = 0x8C; |
belloula | 0:d07617f8ede9 | 29 | const int SET_EKF_CONFIG = 0x8D; |
belloula | 0:d07617f8ede9 | 30 | const int SET_GYRO_ALIGNMENT = 0x8E; |
belloula | 0:d07617f8ede9 | 31 | const int SET_ACCEL_ALIGNMENT = 0x8F; |
belloula | 0:d07617f8ede9 | 32 | const int SET_MAG_REF_VECTOR = 0x90; |
belloula | 0:d07617f8ede9 | 33 | const int AUTO_SET_MAG_REF = 0x91; |
belloula | 0:d07617f8ede9 | 34 | const int SET_MAG_CAL = 0x92; |
belloula | 0:d07617f8ede9 | 35 | const int SET_MAG_BIAS = 0x93; |
belloula | 0:d07617f8ede9 | 36 | const int SET_GYRO_SCALE = 0x94; |
belloula | 0:d07617f8ede9 | 37 | const int EKF_RESET = 0x95; |
belloula | 0:d07617f8ede9 | 38 | const int RESET_TO_FACTORY = 0x96; |
belloula | 0:d07617f8ede9 | 39 | const int WRITE_TO_FLASH = 0xA0; |
belloula | 0:d07617f8ede9 | 40 | const int GET_DATA = 0x01; |
belloula | 0:d07617f8ede9 | 41 | const int GET_ACTIVE_CHANNELS = 0x02; |
belloula | 0:d07617f8ede9 | 42 | const int GET_BROADCAST_MODE = 0x03; |
belloula | 0:d07617f8ede9 | 43 | const int GET_ACCEL_BIAS = 0x04; |
belloula | 0:d07617f8ede9 | 44 | const int GET_ACCEL_REF_VECTOR = 0x05; |
belloula | 0:d07617f8ede9 | 45 | const int GET_GYRO_BIAS = 0x06; |
belloula | 0:d07617f8ede9 | 46 | const int GET_GYRO_SCALE = 0x07; |
belloula | 0:d07617f8ede9 | 47 | const int GET_START_CAL = 0x08; |
belloula | 0:d07617f8ede9 | 48 | const int GET_EKF_CONFIG = 0x09; |
belloula | 0:d07617f8ede9 | 49 | const int GET_ACCEL_COVARIANCE = 0x0A; |
belloula | 0:d07617f8ede9 | 50 | const int GET_MAG_COVARIANCE = 0x0B; |
belloula | 0:d07617f8ede9 | 51 | const int GET_PROCESS_COVARIANCE = 0x0C; |
belloula | 0:d07617f8ede9 | 52 | const int GET_STATE_COVARIANCE = 0x0D; |
belloula | 0:d07617f8ede9 | 53 | const int GET_GYRO_ALIGNMENT = 0x0E; |
belloula | 0:d07617f8ede9 | 54 | const int GET_ACCEL_ALIGNMENT = 0x0F; |
belloula | 0:d07617f8ede9 | 55 | const int GET_MAG_REF_VECTOR = 0x10; |
belloula | 0:d07617f8ede9 | 56 | const int GET_MAG_CAL = 0x11; |
belloula | 0:d07617f8ede9 | 57 | const int GET_MAG_BIAS = 0x12; |
belloula | 0:d07617f8ede9 | 58 | |
belloula | 0:d07617f8ede9 | 59 | // Board status and data packets |
belloula | 0:d07617f8ede9 | 60 | #define PT_COMMAND_COMPLETE 0xB0 |
belloula | 0:d07617f8ede9 | 61 | #define PT_COMMAND_FAILED 0xB1 |
belloula | 0:d07617f8ede9 | 62 | #define PT_BAD_CHECKSUM 0xB2 |
belloula | 0:d07617f8ede9 | 63 | #define PT_BAD_DATA_LENGTH 0xB3 |
belloula | 0:d07617f8ede9 | 64 | #define PT_UNRECOGNIZED_PACKET 0xB4 |
belloula | 0:d07617f8ede9 | 65 | #define PT_BUFFER_OVERFLOW 0xB5 |
belloula | 0:d07617f8ede9 | 66 | #define PT_STATUS_REPORT 0xB6 |
belloula | 0:d07617f8ede9 | 67 | #define PT_SENSOR_DATA 0xB7 |
belloula | 0:d07617f8ede9 | 68 | #define PT_GYRO_BIAS_REPORT 0xB8 |
belloula | 0:d07617f8ede9 | 69 | #define PT_GYRO_SCALE_REPORT 0xB9 |
belloula | 0:d07617f8ede9 | 70 | #define PT_START_CAL_REPORT 0xBA |
belloula | 0:d07617f8ede9 | 71 | #define PT_ACCEL_BIAS_REPORT 0xBB |
belloula | 0:d07617f8ede9 | 72 | #define PT_ACCEL_REF_VECTOR_REPORT 0xBC |
belloula | 0:d07617f8ede9 | 73 | #define PT_ACTIVE_CHANNEL_REPORT 0xBD |
belloula | 0:d07617f8ede9 | 74 | #define PT_ACCEL_COVARIANCE_REPORT 0xBE |
belloula | 0:d07617f8ede9 | 75 | #define PT_MAG_COVARIANCE_REPORT 0xBF |
belloula | 0:d07617f8ede9 | 76 | #define PT_PROCESS_COVARIANCE_REPORT 0xC0 |
belloula | 0:d07617f8ede9 | 77 | #define PT_STATE_COVARIANCE_REPORT 0xC1 |
belloula | 0:d07617f8ede9 | 78 | #define PT_EKF_CONFIG_REPORT 0xC2 |
belloula | 0:d07617f8ede9 | 79 | #define PT_GYRO_ALIGNMENT_REPORT 0xC3 |
belloula | 0:d07617f8ede9 | 80 | #define PT_ACCEL_ALIGNMENT_REPORT 0xC4 |
belloula | 0:d07617f8ede9 | 81 | #define PT_MAG_REF_VECTOR_REPORT 0xC5 |
belloula | 0:d07617f8ede9 | 82 | #define PT_MAG_CAL_REPORT 0xC6 |
belloula | 0:d07617f8ede9 | 83 | #define PT_MAG_BIAS_REPORT 0xC7 |
belloula | 0:d07617f8ede9 | 84 | #define PT_BROADCAST_MODE_REPORT 0xC8 |
belloula | 0:d07617f8ede9 | 85 | |
belloula | 0:d07617f8ede9 | 86 | |
belloula | 0:d07617f8ede9 | 87 | /* D1 */ |
belloula | 0:d07617f8ede9 | 88 | #define YAW_FLAG 0x80 |
belloula | 0:d07617f8ede9 | 89 | #define PITCH_FLAG 0x40 |
belloula | 0:d07617f8ede9 | 90 | #define ROLL_FLAG 0x20 |
belloula | 0:d07617f8ede9 | 91 | #define YAW_RATE_FLAG 0x10 |
belloula | 0:d07617f8ede9 | 92 | #define PITCH_RATE_FLAG 0x08 |
belloula | 0:d07617f8ede9 | 93 | #define ROLL_RATE_FLAG 0x04 |
belloula | 0:d07617f8ede9 | 94 | #define MX_FLAG 0x02 |
belloula | 0:d07617f8ede9 | 95 | #define MY_FLAG 0x01 |
belloula | 0:d07617f8ede9 | 96 | /* D2 */ |
belloula | 0:d07617f8ede9 | 97 | #define MZ_FLAG 0x80 |
belloula | 0:d07617f8ede9 | 98 | #define GX_FLAG 0x40 |
belloula | 0:d07617f8ede9 | 99 | #define GY_FLAG 0x20 |
belloula | 0:d07617f8ede9 | 100 | #define GZ_FLAG 0x10 |
belloula | 0:d07617f8ede9 | 101 | #define AX_FLAG 0x08 |
belloula | 0:d07617f8ede9 | 102 | #define AY_FLAG 0x04 |
belloula | 0:d07617f8ede9 | 103 | #define AZ_FLAG 0x02 |
belloula | 0:d07617f8ede9 | 104 | #define ZERO_FLAG 0x01 |
belloula | 0:d07617f8ede9 | 105 | |
belloula | 0:d07617f8ede9 | 106 | |
belloula | 0:d07617f8ede9 | 107 | /* Scale factors |
belloula | 0:d07617f8ede9 | 108 | const double SCALE_YAW = 0.0109863; // �/LSB |
belloula | 0:d07617f8ede9 | 109 | const double SCALE_PITCH = 0.0109863; |
belloula | 0:d07617f8ede9 | 110 | const double SCALE_ROLL = 0.0109863; |
belloula | 0:d07617f8ede9 | 111 | const double SCALE_YAW_RATE = 0.0137329; // �/s/LSB |
belloula | 0:d07617f8ede9 | 112 | const double SCALE_PITCH_RATE = 0.0137329; |
belloula | 0:d07617f8ede9 | 113 | const double SCALE_ROLL_RATE = 0.0137329; |
belloula | 0:d07617f8ede9 | 114 | const double SCALE_MAG_X = 0.061035; // mGauss/LSB |
belloula | 0:d07617f8ede9 | 115 | const double SCALE_MAG_Y = 0.061035; |
belloula | 0:d07617f8ede9 | 116 | const double SCALE_MAG_Z = 0.061035; |
belloula | 0:d07617f8ede9 | 117 | const double SCALE_GYRO_X = 0.01812; // �/s/LSB |
belloula | 0:d07617f8ede9 | 118 | const double SCALE_GYRO_Y = 0.01812; |
belloula | 0:d07617f8ede9 | 119 | const double SCALE_GYRO_Z = 0.01812; |
belloula | 0:d07617f8ede9 | 120 | const double SCALE_ACCEL_X = 0.106812; // mg/LSB |
belloula | 0:d07617f8ede9 | 121 | const double SCALE_ACCEL_Y = 0.106812; |
belloula | 0:d07617f8ede9 | 122 | const double SCALE_ACCEL_Z = 0.106812;*/ |
belloula | 0:d07617f8ede9 | 123 | |
belloula | 0:d07617f8ede9 | 124 | const char PACKET_HEADER[] = {'s','n','p'}; |
belloula | 0:d07617f8ede9 | 125 | const int HEADER_CHECKSUM = 's'+'n'+'p'; |
belloula | 0:d07617f8ede9 | 126 | |
belloula | 0:d07617f8ede9 | 127 | |
belloula | 0:d07617f8ede9 | 128 | |
belloula | 0:d07617f8ede9 | 129 | |
belloula | 0:d07617f8ede9 | 130 | |
belloula | 0:d07617f8ede9 | 131 | #define MAX_BYTES 32 |
belloula | 0:d07617f8ede9 | 132 | enum _states { WAIT_s, WAIT_n, WAIT_p,PT, N, RX_PACKET, PROCESS_PACKET }; |
belloula | 0:d07617f8ede9 | 133 |