58#define BUF2INT(_buf,_idx) ((int16_t)((_buf[_idx+1]<<8) | _buf[_idx]))
59#define INT2BUF(_int,_buf,_idx) { _buf[_idx] = _int; _buf[_idx+1] = (_int>>8); }
61#ifndef PCA9685_I2C_DEV
62#define PCA9685_I2C_DEV i2c2
66#ifndef PCA9865_SRV_RESOLUTION
67#define PCA9865_SRV_RESOLUTION 1.
70#ifndef PCA9865_SRV_DEFAULT_VAL_US
71#define PCA9865_SRV_DEFAULT_VAL_US 1000.
74#ifndef PCA9865_SRV_NUMBER
75#define PCA9865_SRV_NUMBER 16
79#ifndef PCA9685_I2C_SLAVE_ADDR
80#define PCA9685_I2C_SLAVE_ADDR 0xE0
84#ifndef PCA9685_I2C_ALLCALL_ADDR
85#define PCA9685_I2C_ALLCALL_ADDR 0xE0
87#ifndef PCA9685_I2C_RESET_ADDR
88#define PCA9685_I2C_RESET_ADDR 0x06
90#ifndef PCA9685_I2C_GEN_CALL_ADDR
91#define PCA9685_I2C_GEN_CALL_ADDR 0x00
95#define PCA9685_MODE1_REG_ADDR 0x00
96#define PCA9685_MODE2_REG_ADDR 0x01
97#define PCA9685_ALLCALL_ADDR 0x05
99#define PCA9685_LED0_ON_L_REG_ADDR 0X06
100#define PCA9685_LED0_ON_H_REG_ADDR 0X07
101#define PCA9685_LED0_OFF_L_REG_ADDR 0X08
102#define PCA9685_LED0_OFF_H_REG_ADDR 0X09
104#define PCA9685_LED1_ON_L_REG_ADDR 0X0A
105#define PCA9685_LED1_ON_H_REG_ADDR 0X0B
106#define PCA9685_LED1_OFF_L_REG_ADDR 0X0C
107#define PCA9685_LED1_OFF_H_REG_ADDR 0X0D
109#define PCA9685_LED2_ON_L_REG_ADDR 0X0E
110#define PCA9685_LED2_ON_H_REG_ADDR 0X0F
111#define PCA9685_LED2_OFF_L_REG_ADDR 0X10
112#define PCA9685_LED2_OFF_H_REG_ADDR 0X11
114#define PCA9685_LED3_ON_L_REG_ADDR 0X12
115#define PCA9685_LED3_ON_H_REG_ADDR 0X13
116#define PCA9685_LED3_OFF_L_REG_ADDR 0X14
117#define PCA9685_LED3_OFF_H_REG_ADDR 0X15
119#define PCA9685_LED4_ON_L_REG_ADDR 0X16
120#define PCA9685_LED4_ON_H_REG_ADDR 0X17
121#define PCA9685_LED4_OFF_L_REG_ADDR 0X18
122#define PCA9685_LED4_OFF_H_REG_ADDR 0X19
124#define PCA9685_LED5_ON_L_REG_ADDR 0X1A
125#define PCA9685_LED5_ON_H_REG_ADDR 0X1B
126#define PCA9685_LED5_OFF_L_REG_ADDR 0X1C
127#define PCA9685_LED5_OFF_H_REG_ADDR 0X1D
129#define PCA9685_LED6_ON_L_REG_ADDR 0X1E
130#define PCA9685_LED6_ON_H_REG_ADDR 0X1F
131#define PCA9685_LED6_OFF_L_REG_ADDR 0X20
132#define PCA9685_LED6_OFF_H_REG_ADDR 0X21
134#define PCA9685_LED7_ON_L_REG_ADDR 0X22
135#define PCA9685_LED7_ON_H_REG_ADDR 0X23
136#define PCA9685_LED7_OFF_L_REG_ADDR 0X24
137#define PCA9685_LED7_OFF_H_REG_ADDR 0X25
140#define PCA9685_LED8_ON_L_REG_ADDR 0X26
141#define PCA9685_LED8_ON_H_REG_ADDR 0X27
142#define PCA9685_LED8_OFF_L_REG_ADDR 0X28
143#define PCA9685_LED8_OFF_H_REG_ADDR 0X29
145#define PCA9685_LED9_ON_L_REG_ADDR 0X2A
146#define PCA9685_LED9_ON_H_REG_ADDR 0X2B
147#define PCA9685_LED9_OFF_L_REG_ADDR 0X2C
148#define PCA9685_LED9_OFF_H_REG_ADDR 0X2D
150#define PCA9685_LED10_ON_L_REG_ADDR 0X2E
151#define PCA9685_LED10_ON_H_REG_ADDR 0X2F
152#define PCA9685_LED10_OFF_L_REG_ADDR 0X30
153#define PCA9685_LED10_OFF_H_REG_ADDR 0X31
155#define PCA9685_LED11_ON_L_REG_ADDR 0X32
156#define PCA9685_LED11_ON_H_REG_ADDR 0X33
157#define PCA9685_LED11_OFF_L_REG_ADDR 0X34
158#define PCA9685_LED11_OFF_H_REG_ADDR 0X35
160#define PCA9685_LED12_ON_L_REG_ADDR 0X36
161#define PCA9685_LED12_ON_H_REG_ADDR 0X37
162#define PCA9685_LED12_OFF_L_REG_ADDR 0X38
163#define PCA9685_LED12_OFF_H_REG_ADDR 0X39
165#define PCA9685_LED13_ON_L_REG_ADDR 0X3A
166#define PCA9685_LED13_ON_H_REG_ADDR 0X3B
167#define PCA9685_LED13_OFF_L_REG_ADDR 0X3C
168#define PCA9685_LED13_OFF_H_REG_ADDR 0X3D
170#define PCA9685_LED14_ON_L_REG_ADDR 0X3E
171#define PCA9685_LED14_ON_H_REG_ADDR 0X3F
172#define PCA9685_LED14_OFF_L_REG_ADDR 0X40
173#define PCA9685_LED14_OFF_H_REG_ADDR 0X41
175#define PCA9685_LED15_ON_L_REG_ADDR 0X42
176#define PCA9685_LED15_ON_H_REG_ADDR 0X43
177#define PCA9685_LED15_OFF_L_REG_ADDR 0X44
178#define PCA9685_LED15_OFF_H_REG_ADDR 0X45
180#define PCA9685_ALL_LED_ON_L_REG_ADDR 0XFA
181#define PCA9685_ALL_LED_ON_H_REG_ADDR 0XFB
182#define PCA9685_ALL_LED_OFF_L_REG_ADDR 0XFC
183#define PCA9685_ALL_LED_OFF_H_REG_ADDR 0XFD
185#define PCA9685_PRESCALER_REG_ADDR 0XFE
189#define PCA9865_RESTART_BIT 7
190#define PCA9865_AUTO_INCREMENT_BIT 5
191#define PCA9865_SLEEP_BIT 4
192#define PCA9865_ALLCALL_BIT 0
194#define PCA9865_OUTDRV_BIT 2
203#if defined(PCA9685_SEND_SERVO_VALUES) && PCA9685_SEND_SERVO_VALUES == 1
227#if defined(PCA9685_SEND_SERVO_VALUES) && PCA9685_SEND_SERVO_VALUES == 1
228PRINT_CONFIG_MSG(
"PCA9685 servo values can be found in the ""BARO_WORDS"" message")
239#if defined(PCA9685_SEND_SERVO_VALUES) && PCA9685_SEND_SERVO_VALUES == 1
288#if defined(PCA9685_SEND_SERVO_VALUES) && PCA9685_SEND_SERVO_VALUES == 1
359#if defined(PCA9685_SEND_SERVO_VALUES) && PCA9685_SEND_SERVO_VALUES == 1
436#if defined(PCA9685_SEND_SERVO_VALUES) && PCA9685_SEND_SERVO_VALUES == 1
Main include for ABI (AirBorneInterface).
volatile uint8_t buf[I2C_BUF_LEN]
Transaction buffer With I2C_BUF_LEN number of bytes.
enum I2CTransactionStatus status
Transaction status.
bool i2c_transmit(struct i2c_periph *p, struct i2c_transaction *t, uint8_t s_addr, uint8_t len)
Submit a write only transaction.
bool i2c_transceive(struct i2c_periph *p, struct i2c_transaction *t, uint8_t s_addr, uint8_t len_w, uint16_t len_r)
Submit a write/read transaction.
@ I2CTransSuccess
transaction successfully finished by I2C driver
@ I2CTransDone
transaction set to done by user level
@ I2CTransPending
transaction is pending in queue
I2C transaction structure.
Architecture independent I2C (Inter-Integrated Circuit Bus) API.
PRINT_CONFIG_MSG("USE_INS_NAV_INIT defaulting to TRUE")
PRINT_CONFIG_VAR(ONELOOP_ANDI_FILT_CUTOFF)
uint8_t pca9685_i2c_status
#define PCA9685_MODE1_REG_ADDR
uint8_t pca9865_reg_nb[16]
void pca9685_i2c_periodic(void)
#define PCA9865_SRV_RESOLUTION
void pca9685_i2c_init(void)
@ PCA9865_I2C_STATUS_CHANGE_LED_REG_FINISHED
@ PCA9685_I2C_STATUS_INITIALIZED
@ PCA9865_I2C_STATUS_READ_LED_REG_BUSY
@ PCA9865_I2C_STATUS_WRITE_LED_REG_READY
@ PCA9685_I2C_STATUS_UNINIT
@ PCA9865_I2C_STATUS_WRITE_LED_REG_BUSY
void pca9685_i2c_event(void)
bool pca9865_set_servo(uint8_t srv_nb, uint16_t srv_val)
#define PCA9865_ALLCALL_BIT
#define PCA9685_ALL_LED_ON_L_REG_ADDR
#define PCA9865_SLEEP_BIT
#define PCA9865_RESTART_BIT
#define PCA9685_I2C_GEN_CALL_ADDR
uint16_t pca9865_write_servo_vals[PCA9865_SRV_NUMBER]
struct i2c_transaction pca9685_i2c_trans
#define PCA9685_I2C_RESET_ADDR
#define PCA9865_SRV_NUMBER
#define PCA9685_I2C_ALLCALL_ADDR
#define PCA9865_SRV_DEFAULT_VAL_US
#define PCA9685_I2C_SLAVE_ADDR
#define BUF2INT(_buf, _idx)
#define PCA9685_PRESCALER_REG_ADDR
#define PCA9865_AUTO_INCREMENT_BIT
Paparazzi fixed point algebra.
Paparazzi atmospheric pressure conversion utilities.
static const struct usb_device_descriptor dev
Architecture independent timing functions.
volatile uint32_t nb_tick
SYS_TIME_TICKS since startup.
#define SYS_TIME_FREQUENCY
(Default) sys_time timer frequency in Hz.
int8_t register_periodic_telemetry(struct periodic_telemetry *_pt, uint8_t _id, telemetry_cb _cb)
Register a telemetry callback function.
Periodic telemetry system header (includes downlink utility and generated code).
#define DefaultPeriodic
Set default periodic telemetry.
arch independent UART (Universal Asynchronous Receiver/Transmitter) API
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.