datatypes.h
Go to the documentation of this file.
1 /*
2  Copyright 2012-2014 Benjamin Vedder benjamin@vedder.se
3 
4  This program is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 3 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 /*
19  * datatypes.h
20  *
21  * Created on: 14 sep 2014
22  * Author: benjamin
23  */
24 
25 #ifndef DATATYPES_H_
26 #define DATATYPES_H_
27 
28 #include <stdint.h>
29 #include <stdbool.h>
30 #include "ch.h"
31 
32 // Data types
33 typedef enum {
38 } mc_state;
39 
40 typedef enum {
41  PWM_MODE_NONSYNCHRONOUS_HISW = 0, // This mode is not recommended
42  PWM_MODE_SYNCHRONOUS, // The recommended and most tested mode
43  PWM_MODE_BIPOLAR // Some glitches occasionally, can kill MOSFETs
44 } mc_pwm_mode;
45 
46 typedef enum {
49 } mc_comm_mode;
50 
51 typedef enum {
56 
57 typedef enum {
61 
62 typedef enum {
71 
72 typedef enum {
80 
81 typedef struct {
87  int32_t comms;
88  uint32_t time_at_comm;
90 
91 typedef struct {
92  // Switching and drive
97  // Limits
103  float l_min_erpm;
104  float l_max_erpm;
107  float l_min_vin;
108  float l_max_vin;
117  float l_min_duty;
118  float l_max_duty;
119  // Overridden limits (Computed during runtime)
124  // Sensorless
125  float sl_min_erpm;
132  // Hall sensor
133  int8_t hall_table[8];
135  // Speed PID
136  float s_pid_kp;
137  float s_pid_ki;
138  float s_pid_kd;
140  // Pos PID
141  float p_pid_kp;
142  float p_pid_ki;
143  float p_pid_kd;
144  // Current controller
147  float cc_gain;
149  // Misc
155 
156 // Applications to use
157 typedef enum {
158  APP_NONE = 0,
167 } app_use;
168 
169 // PPM control types
170 typedef enum {
180 
181 typedef struct {
184  float hyst;
185  float pulse_start;
186  float pulse_end;
190  float rpm_lim_end;
191  bool multi_esc;
192  bool tc;
193  float tc_max_diff;
194 } ppm_config;
195 
196 // ADC control types
197 typedef enum {
208 
209 typedef struct {
211  float hyst;
213  float voltage_end;
220  float rpm_lim_end;
221  bool multi_esc;
222  bool tc;
223  float tc_max_diff;
224  uint32_t update_rate_hz;
225 } adc_config;
226 
227 // Nunchuk control types
228 typedef enum {
233 
234 typedef struct {
236  float hyst;
238  float rpm_lim_end;
241  bool multi_esc;
242  bool tc;
243  float tc_max_diff;
244 } chuk_config;
245 
246 typedef struct {
247  // Settings
248  uint8_t controller_id;
249  uint32_t timeout_msec;
253 
254  // Application to use
256 
257  // PPM application settings
259 
260  // ADC application settings
262 
263  // UART application settings
265 
266  // Nunchuk application settings
269 
270 // Communication commands
271 typedef enum {
301 
302 // CAN commands
303 typedef enum {
314 } CAN_PACKET_ID;
315 
316 // Logged fault data
317 typedef struct {
319  float current;
321  float voltage;
322  float duty;
323  float rpm;
324  int tacho;
329  int tim_top;
331  float temperature;
332 } fault_data;
333 
334 // External LED state
335 typedef enum {
344 } LED_EXT_STATE;
345 
346 typedef struct {
347  int js_x;
348  int js_y;
349  int acc_x;
350  int acc_y;
351  int acc_z;
352  bool bt_c;
353  bool bt_z;
354 } chuck_data;
355 
356 typedef struct {
357  int id;
358  systime_t rx_time;
359  float rpm;
360  float current;
361  float duty;
363 
364 typedef struct {
365  uint8_t js_x;
366  uint8_t js_y;
367  bool bt_c;
368  bool bt_z;
369  bool bt_push;
370  float vbat;
371 } mote_state;
372 
373 typedef enum {
377 } MOTE_PACKET;
378 
379 #endif /* DATATYPES_H_ */
Definition: datatypes.h:75
Definition: datatypes.h:229
Definition: datatypes.h:374
Definition: datatypes.h:310
float l_in_current_min
Definition: datatypes.h:101
Definition: datatypes.h:280
float l_max_erpm_fbrake_cc
Definition: datatypes.h:106
Definition: datatypes.h:292
Definition: datatypes.h:34
Definition: datatypes.h:277
Definition: datatypes.h:294
Definition: datatypes.h:205
float l_abs_current_max
Definition: datatypes.h:102
float p_pid_kd
Definition: datatypes.h:143
float cc_startup_boost_duty
Definition: datatypes.h:145
int tacho
Definition: datatypes.h:324
Definition: datatypes.h:54
Definition: datatypes.h:159
mc_sensor_mode sensor_mode
Definition: datatypes.h:96
float hyst
Definition: datatypes.h:236
adc_control_type
Definition: datatypes.h:197
int cycles_running
Definition: datatypes.h:325
Definition: datatypes.h:308
Definition: datatypes.h:337
float sl_cycle_int_limit
Definition: datatypes.h:128
Definition: datatypes.h:276
float l_battery_cut_end
Definition: datatypes.h:110
float hall_sl_erpm
Definition: datatypes.h:134
Definition: datatypes.h:342
float s_pid_kd
Definition: datatypes.h:138
adc_control_type ctrl_type
Definition: datatypes.h:210
Definition: datatypes.h:73
Definition: datatypes.h:47
uint8_t js_y
Definition: datatypes.h:366
Definition: datatypes.h:172
uint32_t time_at_comm
Definition: datatypes.h:88
float cycle_int_limit
Definition: datatypes.h:82
bool l_rpm_lim_neg_torque
Definition: datatypes.h:112
float rpm_lim_end
Definition: datatypes.h:220
Definition: datatypes.h:273
float sl_phase_advance_at_br
Definition: datatypes.h:129
float l_max_duty
Definition: datatypes.h:118
ppm_control_type ctrl_type
Definition: datatypes.h:182
Definition: datatypes.h:305
float s_pid_min_rpm
Definition: datatypes.h:139
Definition: datatypes.h:165
Definition: datatypes.h:290
Definition: datatypes.h:278
float l_max_erpm
Definition: datatypes.h:104
Definition: datatypes.h:356
Definition: datatypes.h:288
Definition: datatypes.h:343
Definition: datatypes.h:81
app_use
Definition: datatypes.h:157
Definition: datatypes.h:37
bool tc
Definition: datatypes.h:222
Definition: datatypes.h:199
Definition: datatypes.h:313
float rpm_lim_start
Definition: datatypes.h:189
Definition: datatypes.h:69
mc_comm_mode comm_mode
Definition: datatypes.h:94
int js_y
Definition: datatypes.h:348
Definition: datatypes.h:160
float tc_max_diff
Definition: datatypes.h:193
Definition: datatypes.h:161
float s_pid_kp
Definition: datatypes.h:136
Definition: datatypes.h:158
int tim_top
Definition: datatypes.h:329
float l_current_max
Definition: datatypes.h:98
app_use app_to_use
Definition: datatypes.h:255
mc_motor_type
Definition: datatypes.h:57
Definition: datatypes.h:209
Definition: datatypes.h:340
float ramp_time_neg
Definition: datatypes.h:240
Definition: datatypes.h:65
COMM_PACKET_ID
Definition: datatypes.h:271
Definition: datatypes.h:272
Definition: datatypes.h:293
float current_filtered
Definition: datatypes.h:320
Definition: datatypes.h:306
Definition: datatypes.h:74
Definition: datatypes.h:234
bool bt_z
Definition: datatypes.h:368
Definition: datatypes.h:307
Definition: datatypes.h:176
float lo_current_min
Definition: datatypes.h:121
float sl_bemf_coupling_k
Definition: datatypes.h:131
bool tc
Definition: datatypes.h:192
float rpm_lim_start
Definition: datatypes.h:219
int tim_current_samp
Definition: datatypes.h:328
int comm_step
Definition: datatypes.h:330
Definition: datatypes.h:246
mc_control_mode
Definition: datatypes.h:72
Definition: datatypes.h:173
float rpm_lim_end
Definition: datatypes.h:190
Definition: datatypes.h:171
Definition: datatypes.h:231
int acc_z
Definition: datatypes.h:351
float lo_current_max
Definition: datatypes.h:120
float voltage
Definition: datatypes.h:321
float lo_in_current_min
Definition: datatypes.h:123
Definition: datatypes.h:206
int acc_x
Definition: datatypes.h:349
uint8_t js_x
Definition: datatypes.h:365
uint32_t update_rate_hz
Definition: datatypes.h:224
float m_duty_ramp_step
Definition: datatypes.h:151
mc_sensor_mode
Definition: datatypes.h:51
Definition: datatypes.h:52
Definition: datatypes.h:202
float current
Definition: datatypes.h:360
chuk_control_type ctrl_type
Definition: datatypes.h:235
chuk_control_type
Definition: datatypes.h:228
bool bt_c
Definition: datatypes.h:352
Definition: datatypes.h:58
float temperature
Definition: datatypes.h:331
float rpm_lim_end
Definition: datatypes.h:238
int32_t comms
Definition: datatypes.h:87
Definition: datatypes.h:281
CAN_PACKET_ID
Definition: datatypes.h:303
Definition: datatypes.h:311
bool bt_push
Definition: datatypes.h:369
mc_motor_type motor_type
Definition: datatypes.h:95
Definition: datatypes.h:201
float pulse_end
Definition: datatypes.h:186
float hyst
Definition: datatypes.h:211
Definition: datatypes.h:181
bool send_can_status
Definition: datatypes.h:251
float voltage_end
Definition: datatypes.h:213
float cc_min_current
Definition: datatypes.h:146
float l_current_min
Definition: datatypes.h:99
mc_fault_code fault
Definition: datatypes.h:318
float pid_max_erpm
Definition: datatypes.h:183
Definition: datatypes.h:76
Definition: datatypes.h:282
bool use_filter
Definition: datatypes.h:214
Definition: datatypes.h:53
Definition: datatypes.h:42
float rpm_lim_start
Definition: datatypes.h:237
Definition: datatypes.h:296
bool multi_esc
Definition: datatypes.h:241
int pwm_cycles
Definition: datatypes.h:326
float comm_time_sum
Definition: datatypes.h:85
Definition: datatypes.h:375
Definition: datatypes.h:279
mc_comm_mode
Definition: datatypes.h:46
Definition: datatypes.h:78
float rpm
Definition: datatypes.h:359
systime_t rx_time
Definition: datatypes.h:358
bool rev_button_inverted
Definition: datatypes.h:217
mc_state
Definition: datatypes.h:33
float l_min_erpm
Definition: datatypes.h:103
int js_x
Definition: datatypes.h:347
float s_pid_ki
Definition: datatypes.h:137
Definition: datatypes.h:298
Definition: datatypes.h:286
Definition: datatypes.h:91
Definition: datatypes.h:341
Definition: datatypes.h:35
ppm_config app_ppm_conf
Definition: datatypes.h:258
float current
Definition: datatypes.h:319
Definition: datatypes.h:163
Definition: datatypes.h:177
Definition: datatypes.h:336
float voltage_start
Definition: datatypes.h:212
float l_battery_cut_start
Definition: datatypes.h:109
uint8_t controller_id
Definition: datatypes.h:248
Definition: datatypes.h:175
Definition: datatypes.h:230
Definition: datatypes.h:64
float cc_ramp_step_max
Definition: datatypes.h:148
int tim_val_samp
Definition: datatypes.h:327
Definition: datatypes.h:291
Definition: datatypes.h:178
bool voltage_inverted
Definition: datatypes.h:218
float duty
Definition: datatypes.h:322
float cycle_int_limit_max
Definition: datatypes.h:84
float l_temp_motor_end
Definition: datatypes.h:116
bool tc
Definition: datatypes.h:242
float hyst
Definition: datatypes.h:184
int32_t m_fault_stop_time_ms
Definition: datatypes.h:150
adc_config app_adc_conf
Definition: datatypes.h:261
float comm_time_sum_min_rpm
Definition: datatypes.h:86
chuk_config app_chuk_conf
Definition: datatypes.h:267
float l_max_erpm_fbrake
Definition: datatypes.h:105
Definition: datatypes.h:312
Definition: datatypes.h:317
Definition: datatypes.h:36
Definition: datatypes.h:198
float m_duty_ramp_step_rpm_lim
Definition: datatypes.h:152
float l_max_vin
Definition: datatypes.h:108
Definition: datatypes.h:77
Definition: datatypes.h:297
int acc_y
Definition: datatypes.h:350
float l_temp_motor_start
Definition: datatypes.h:115
Definition: datatypes.h:274
mc_fault_code
Definition: datatypes.h:62
bool safe_start
Definition: datatypes.h:188
Definition: datatypes.h:364
float m_current_backoff_gain
Definition: datatypes.h:153
bool median_filter
Definition: datatypes.h:187
float p_pid_ki
Definition: datatypes.h:142
float ramp_time_pos
Definition: datatypes.h:239
mc_pwm_mode
Definition: datatypes.h:40
MOTE_PACKET
Definition: datatypes.h:373
Definition: datatypes.h:59
Definition: datatypes.h:203
bool safe_start
Definition: datatypes.h:215
float l_in_current_max
Definition: datatypes.h:100
Definition: datatypes.h:304
float sl_min_erpm_cycle_int_limit
Definition: datatypes.h:126
Definition: datatypes.h:287
bool cc_button_inverted
Definition: datatypes.h:216
float cycle_int_limit_running
Definition: datatypes.h:83
float sl_cycle_int_rpm_br
Definition: datatypes.h:130
Definition: datatypes.h:66
float vbat
Definition: datatypes.h:370
Definition: datatypes.h:289
int id
Definition: datatypes.h:357
float timeout_brake_current
Definition: datatypes.h:250
uint32_t app_uart_baudrate
Definition: datatypes.h:264
bool multi_esc
Definition: datatypes.h:191
Definition: datatypes.h:63
Definition: datatypes.h:67
uint32_t timeout_msec
Definition: datatypes.h:249
Definition: datatypes.h:200
Definition: datatypes.h:48
float rpm
Definition: datatypes.h:323
float l_min_vin
Definition: datatypes.h:107
mc_pwm_mode pwm_mode
Definition: datatypes.h:93
float cc_gain
Definition: datatypes.h:147
float pulse_start
Definition: datatypes.h:185
float p_pid_kp
Definition: datatypes.h:141
Definition: datatypes.h:338
float tc_max_diff
Definition: datatypes.h:223
ppm_control_type
Definition: datatypes.h:170
float tc_max_diff
Definition: datatypes.h:243
Definition: datatypes.h:166
float sl_max_fullbreak_current_dir_change
Definition: datatypes.h:127
float l_temp_fet_start
Definition: datatypes.h:113
Definition: datatypes.h:43
Definition: datatypes.h:309
float lo_in_current_max
Definition: datatypes.h:122
LED_EXT_STATE
Definition: datatypes.h:335
bool l_slow_abs_current
Definition: datatypes.h:111
float l_min_duty
Definition: datatypes.h:117
Definition: datatypes.h:164
uint32_t send_can_status_rate_hz
Definition: datatypes.h:252
Definition: datatypes.h:284
bool bt_c
Definition: datatypes.h:367
Definition: datatypes.h:283
Definition: datatypes.h:162
Definition: datatypes.h:41
Definition: datatypes.h:339
float l_temp_fet_end
Definition: datatypes.h:114
Definition: datatypes.h:174
Definition: datatypes.h:376
float sl_min_erpm
Definition: datatypes.h:125
Definition: datatypes.h:346
Definition: datatypes.h:68
Definition: datatypes.h:295
Definition: datatypes.h:285
Definition: datatypes.h:204
float duty
Definition: datatypes.h:361
bool bt_z
Definition: datatypes.h:353
Definition: datatypes.h:299
Definition: datatypes.h:275
bool multi_esc
Definition: datatypes.h:221