Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
actuators_esc32.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2014 Freek van Tienen <freek.v.tienen@gmail.com>
3 *
4 * This file is part of paparazzi.
5 *
6 * paparazzi is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * paparazzi is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with paparazzi; see the file COPYING. If not, write to
18 * the Free Software Foundation, 59 Temple Place - Suite 330,
19 * Boston, MA 02111-1307, USA.
20 */
21
26#ifndef ACTUATORS_ESC32_H
27#define ACTUATORS_ESC32_H
28
29#include "std.h"
30#include "generated/airframe.h"
31
32#define ESC32_RESPONSE_CNT 12
33
34// Logical Communications Channel
35// 2 bits [28:27]
36#define ESC32_CAN_LCC_MASK ((uint32_t)0x3<<30)
37#define ESC32_CAN_LCC_EXCEPTION ((uint32_t)0x0<<30)
38#define ESC32_CAN_LCC_HIGH ((uint32_t)0x1<<30)
39#define ESC32_CAN_LCC_NORMAL ((uint32_t)0x2<<30)
40#define ESC32_CAN_LCC_INFO ((uint32_t)0x3<<30)
41
42// Target Type
43// 1 bit [26:26]
44#define ESC32_CAN_TT_MASK ((uint32_t)0x1<<29)
45#define ESC32_CAN_TT_GROUP ((uint32_t)0x0<<29)
46#define ESC32_CAN_TT_NODE ((uint32_t)0x1<<29)
47
48// Function ID
49// 4 bits [25:22]
50#define ESC32_CAN_FID_MASK ((uint32_t)0xf<<25)
51#define ESC32_CAN_FID_RESET_BUS ((uint32_t)0x0<<25)
52#define ESC32_CAN_FID_ACK ((uint32_t)0x1<<25)
53#define ESC32_CAN_FID_NACK ((uint32_t)0x2<<25)
54#define ESC32_CAN_FID_CMD ((uint32_t)0x3<<25)
55#define ESC32_CAN_FID_GET ((uint32_t)0x4<<25)
56#define ESC32_CAN_FID_SET ((uint32_t)0x5<<25)
57#define ESC32_CAN_FID_REPLY ((uint32_t)0x6<<25)
58#define ESC32_CAN_FID_REQ_ADDR ((uint32_t)0x7<<25)
59#define ESC32_CAN_FID_GRANT_ADDR ((uint32_t)0x8<<25)
60#define ESC32_CAN_FID_ERROR ((uint32_t)0x9<<25)
61#define ESC32_CAN_FID_PING ((uint32_t)0xa<<25)
62#define ESC32_CAN_FID_TELEM ((uint32_t)0xb<<25)
63
64// Data Object Code
65// 6 bits [21:16]
66#define ESC32_CAN_DOC_MASK ((uint32_t)0x3f<<19)
67
68// Source ID
69// 5 bits [15:11]
70#define ESC32_CAN_SID_MASK ((uint32_t)0x1f<<14)
71
72// Target ID
73// 5 bits [10:6]
74#define ESC32_CAN_TID_MASK ((uint32_t)0x1f<<9)
75
76// Sequence ID
77// 6 bits [5:0]
78#define ESC32_CAN_SEQ_MASK ((uint32_t)0x3f<<3)
79
80// types
81enum {
90};
91
92// commands
93enum {
115
116// data types
117enum {
131
132// telemetry values
133enum {
145
150
151// ESCs status
157
165
166// ESC status
173
174// ESC status
181
196
197
198extern struct ESC32 actuators_esc32;
199
200extern void actuators_esc32_init(void);
201extern void actuators_esc32_commit(void);
202extern void actuators_esc32_set(uint8_t i, uint16_t v);
204
205#define ActuatorESC32Set(_i, _v) { actuators_esc32_set(_i, _v); }
206#define ActuatorsESC32Init() actuators_esc32_init()
207#define ActuatorsESC32Commit() actuators_esc32_commit()
208
209
210#endif /* ACTUATORS_ESC32_H */
uint8_t config_idx
Selected ESC.
@ ESC32_CAN_TYPE_SENSOR
@ ESC32_CAN_TYPE_ESC
@ ESC32_CAN_TYPE_NUM
@ ESC32_CAN_TYPE_OSD
@ ESC32_CAN_TYPE_HUB
@ ESC32_CAN_TYPE_UART
@ ESC32_CAN_TYPE_SERVO
@ ESC32_CAN_TYPE_SWITCH
uint16_t cmds[SERVOS_ESC32_NB]
Commands which need to be committed.
struct ESC32_com escs[SERVOS_ESC32_NB]
The ESCs connected via CAN.
ESC32_status
@ ESC32_STATUS_INIT
@ ESC32_STATUS_MELODY
@ ESC32_STATUS_UNARMED
@ ESC32_STATUS_RUNNING
uint8_t type
The type of ESC.
@ ESC32_CAN_DATA_ID
@ ESC32_CAN_DATA_TYPE
@ ESC32_CAN_DATA_TELEM
@ ESC32_CAN_DATA_RUN_MODE
@ ESC32_CAN_DATA_PARAM_NAME2
@ ESC32_CAN_DATA_VERSION
@ ESC32_CAN_DATA_PARAM_NAME1
@ ESC32_CAN_DATA_GROUP
@ ESC32_CAN_DATA_STATE
@ ESC32_CAN_DATA_VALUE
@ ESC32_CAN_DATA_INPUT_MODE
@ ESC32_CAN_DATA_PARAM_ID
void actuators_esc32_commit(void)
Commits the commands and sends them to the ESCs.
#define ESC32_RESPONSE_CNT
struct ESC32 actuators_esc32
enum ESC32_esc_status status
The current status of the esc.
ESC32_config_cmd
@ ESC32_CONFIG_CMD_BEEP
@ ESC32_CONFIG_CMD_TURN
@ ESC32_CONFIG_CMD_DIR
@ ESC32_CONFIG_CMD_IDLE
uint8_t data[8]
The data of the response.
uint8_t network_id
Index in the array +1.
@ ESC32_CAN_CMD_OFF
@ ESC32_CAN_CMD_BEEP
@ ESC32_CAN_CMD_TELEM_VALUE
@ ESC32_CAN_CMD_CFG_READ
@ ESC32_CAN_CMD_SETPOINT12
@ ESC32_CAN_CMD_STREAM
@ ESC32_CAN_CMD_CFG_WRITE
@ ESC32_CAN_CMD_RESET
@ ESC32_CAN_CMD_RPM
@ ESC32_CAN_CMD_START
@ ESC32_CAN_CMD_ON
@ ESC32_CAN_CMD_CFG_DEFAULT
@ ESC32_CAN_CMD_DISARM
@ ESC32_CAN_CMD_SETPOINT16
@ ESC32_CAN_CMD_USER_DEFINED
@ ESC32_CAN_CMD_ARM
@ ESC32_CAN_CMD_POS
@ ESC32_CAN_CMD_SETPOINT10
@ ESC32_CAN_CMD_TELEM_RATE
@ ESC32_CAN_CMD_STOP
void actuators_esc32_config_cmd(uint8_t i)
When receiving a configuration setting command.
uint32_t uuid
The UUID of the ESC.
uint8_t can_seq_idx
CAN seq ID used for communicating.
@ ESC32_CAN_TELEM_STATE
@ ESC32_CAN_TELEM_ERRORS
@ ESC32_CAN_TELEM_TEMP
@ ESC32_CAN_TELEM_AMPS
@ ESC32_CAN_TELEM_VALUE
@ ESC32_CAN_TELEM_STATUS
@ ESC32_CAN_TELEM_NUM
@ ESC32_CAN_TELEM_VIN
@ ESC32_CAN_TELEM_NONE
@ ESC32_CAN_TELEM_RPM
enum ESC32_status status
The current status of all actuators.
uint8_t escs_sorted[SERVOS_ESC32_NB]
The ESCs sorted by uuid.
uint8_t can_id
The CAN identifier.
enum ESC32_config_cmd config_cmd
The command.
ESC32_esc_status
@ ESC32_STATUS_ESC_INIT
@ ESC32_STATUS_ESC_FREE
@ ESC32_STATUS_ESC_RDY
void actuators_esc32_init(void)
Initializes the ESCs.
struct ESC32_response responses[ESC32_RESPONSE_CNT]
Responses of CAN messages.
uint32_t melody_status
The status of the melody.
void actuators_esc32_set(uint8_t i, uint16_t v)
Set the commands (either RPM or duty cycle)
uint8_t fid
The FID of the response.
uint16_t foo
Definition main_demo5.c:58
unsigned short uint16_t
Typedef defining 16 bit unsigned short type.
unsigned int uint32_t
Typedef defining 32 bit unsigned int type.
unsigned char uint8_t
Typedef defining 8 bit unsigned char type.