Go to the documentation of this file.
42 #ifdef PREINIT_SUPPORTED
46 #ifdef MikroCCoreVersion
47 #if MikroCCoreVersion >= 1
52 #include "drv_digital_out.h"
53 #include "drv_digital_in.h"
54 #include "drv_i2c_master.h"
66 #define SERVO_MAP_MIKROBUS( cfg, mikrobus ) \
67 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
68 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
69 cfg.oe = MIKROBUS( mikrobus, MIKROBUS_CS )
76 #define SERVO_RETVAL uint8_t
79 #define SERVO_INIT_ERROR 0xFF
86 #define SERVO_REG_MODE_1 0x00
87 #define SERVO_REG_MODE_2 0x01
88 #define SERVO_REG_SUB_ADDRESS_1 0x02
89 #define SERVO_REG_SUB_ADDRESS_2 0x03
90 #define SERVO_REG_SUB_ADDRESS_3 0x04
91 #define SERVO_REG_ALL_CALL_ADR 0x05
93 #define SERVO_REG_MOTOR_1_ON_L 0x06
94 #define SERVO_REG_MOTOR_1_ON_H 0x07
95 #define SERVO_REG_MOTOR_1_OFF_L 0x08
96 #define SERVO_REG_MOTOR_1_OFF_H 0x09
97 #define SERVO_REG_MOTOR_2_ON_L 0x0A
98 #define SERVO_REG_MOTOR_2_ON_H 0x0B
99 #define SERVO_REG_MOTOR_2_OFF_L 0x0C
100 #define SERVO_REG_MOTOR_2_OFF_H 0x0D
101 #define SERVO_REG_MOTOR_3_ON_L 0x0E
102 #define SERVO_REG_MOTOR_3_ON_H 0x0F
103 #define SERVO_REG_MOTOR_3_OFF_L 0x10
104 #define SERVO_REG_MOTOR_3_OFF_H 0x11
105 #define SERVO_REG_MOTOR_4_ON_L 0x12
106 #define SERVO_REG_MOTOR_4_ON_H 0x13
107 #define SERVO_REG_MOTOR_4_OFF_L 0x14
108 #define SERVO_REG_MOTOR_4_OFF_H 0x15
109 #define SERVO_REG_MOTOR_5_ON_L 0x16
110 #define SERVO_REG_MOTOR_5_ON_H 0x17
111 #define SERVO_REG_MOTOR_5_OFF_L 0x18
112 #define SERVO_REG_MOTOR_5_OFF_H 0x19
113 #define SERVO_REG_MOTOR_6_ON_L 0x1A
114 #define SERVO_REG_MOTOR_6_ON_H 0x1B
115 #define SERVO_REG_MOTOR_6_OFF_L 0x1C
116 #define SERVO_REG_MOTOR_6_OFF_H 0x1D
117 #define SERVO_REG_MOTOR_7_ON_L 0x1E
118 #define SERVO_REG_MOTOR_7_ON_H 0x1F
119 #define SERVO_REG_MOTOR_7_OFF_L 0x20
120 #define SERVO_REG_MOTOR_7_OFF_H 0x21
121 #define SERVO_REG_MOTOR_8_ON_L 0x22
122 #define SERVO_REG_MOTOR_8_ON_H 0x23
123 #define SERVO_REG_MOTOR_8_OFF_L 0x24
124 #define SERVO_REG_MOTOR_8_OFF_H 0x25
125 #define SERVO_REG_MOTOR_9_ON_L 0x26
126 #define SERVO_REG_MOTOR_9_ON_H 0x27
127 #define SERVO_REG_MOTOR_9_OFF_L 0x28
128 #define SERVO_REG_MOTOR_9_OFF_H 0x29
129 #define SERVO_REG_MOTOR_10_ON_L 0x2A
130 #define SERVO_REG_MOTOR_10_ON_H 0x2B
131 #define SERVO_REG_MOTOR_10_OFF_L 0x2C
132 #define SERVO_REG_MOTOR_10_OFF_H 0x2D
133 #define SERVO_REG_MOTOR_11_ON_L 0x2E
134 #define SERVO_REG_MOTOR_11_ON_H 0x2F
135 #define SERVO_REG_MOTOR_11_OFF_L 0x30
136 #define SERVO_REG_MOTOR_11_OFF_H 0x31
137 #define SERVO_REG_MOTOR_12_ON_L 0x32
138 #define SERVO_REG_MOTOR_12_ON_H 0x33
139 #define SERVO_REG_MOTOR_12_OFF_L 0x34
140 #define SERVO_REG_MOTOR_12_OFF_H 0x35
141 #define SERVO_REG_MOTOR_13_ON_L 0x36
142 #define SERVO_REG_MOTOR_13_ON_H 0x37
143 #define SERVO_REG_MOTOR_13_OFF_L 0x38
144 #define SERVO_REG_MOTOR_13_OFF_H 0x39
145 #define SERVO_REG_MOTOR_14_ON_L 0x3A
146 #define SERVO_REG_MOTOR_14_ON_H 0x3B
147 #define SERVO_REG_MOTOR_14_OFF_L 0x3C
148 #define SERVO_REG_MOTOR_14_OFF_H 0x3D
149 #define SERVO_REG_MOTOR_15_ON_L 0x3E
150 #define SERVO_REG_MOTOR_15_ON_H 0x3F
151 #define SERVO_REG_MOTOR_15_OFF_L 0x40
152 #define SERVO_REG_MOTOR_15_OFF_H 0x41
153 #define SERVO_REG_MOTOR_16_ON_L 0x42
154 #define SERVO_REG_MOTOR_16_ON_H 0x43
155 #define SERVO_REG_MOTOR_16_OFF_L 0x44
156 #define SERVO_REG_MOTOR_16_OFF_H 0x45
158 #define SERVO_REG_ALL_MOTOR_ON_L 0xFA
159 #define SERVO_REG_ALL_MOTOR_ON_H 0xFB
160 #define SERVO_REG_ALL_MOTOR_OFF_L 0xFC
161 #define SERVO_REG_ALL_MOTOR_OFF_H 0xFD
162 #define SERVO_REG_PRE_SCALE 0xFE
163 #define SERVO_REG_TEST_MODE 0xFF
170 #define SERVO_MODE1_RESTART_ENABLE 0x01 << 7
171 #define SERVO_MODE1_RESTART_DISABLE 0x00 << 7
172 #define SERVO_MODE1_INTERNAL_CLOCK 0x00 << 6
173 #define SERVO_MODE1_EXTCLK_PIN_CLOCK 0x01 << 6
174 #define SERVO_MODE1_AUTO_INCREMENT_ENABLE 0x01 << 5
175 #define SERVO_MODE1_AUTO_INCREMENT_DISABLE 0x00 << 5
176 #define SERVO_MODE1_NORMAL_MODE 0x00 << 4
177 #define SERVO_MODE1_LOW_POWER_MODE 0x01 << 4
178 #define SERVO_MODE1_USE_SUBADR_1 0x01 << 3
179 #define SERVO_MODE1_NO_USE_SUBADR_1 0x00 << 3
180 #define SERVO_MODE1_USE_SUBADR_2 0x01 << 2
181 #define SERVO_MODE1_NO_USE_SUBADR_2 0x00 << 2
182 #define SERVO_MODE1_USE_SUBADR_3 0x01 << 1
183 #define SERVO_MODE1_NO_USE_SUBADR_3 0x00 << 1
184 #define SERVO_MODE1_USE_ALL_CALL_ADR 0x01
185 #define SERVO_MODE1_NO_USE_ALL_CALL_ADR 0x00
192 #define SERVO_MODE2_OUT_LOGIC_NOT_INVERTED 0x00 << 4
193 #define SERVO_MODE2_OUT_LOGIC_INVERTED 0x01 << 4
194 #define SERVO_MODE2_OUT_CHANGE_ON_STOP_CMD 0x00 << 3
195 #define SERVO_MODE2_OUT_CHANGE_ON_ACK_CMD 0x01 << 3
196 #define SERVO_MODE2_OPEN_DRAIN_STRUCTURE 0x00 << 2
197 #define SERVO_MODE2_TOTEM_POLE_STRUCTURE 0x01 << 2
204 #define SERVO_DEFAULT_LOW_RESOLUTION 0
205 #define SERVO_DEFAULT_HIGH_RESOLUTION 330
207 #define SERVO_GENERAL_CALL_ADR 0x00
208 #define SERVO_SOFT_RESET 0x06
210 #define SERVO_VREF_3300 3300
211 #define SERVO_VREF_5000 5000
218 #define SERVO_MOTOR_1 0x06
219 #define SERVO_MOTOR_2 0x0A
220 #define SERVO_MOTOR_3 0x0E
221 #define SERVO_MOTOR_4 0x12
222 #define SERVO_MOTOR_5 0x16
223 #define SERVO_MOTOR_6 0x1A
224 #define SERVO_MOTOR_7 0x1E
225 #define SERVO_MOTOR_8 0x22
226 #define SERVO_MOTOR_9 0x26
227 #define SERVO_MOTOR_10 0x2A
228 #define SERVO_MOTOR_11 0x2E
229 #define SERVO_MOTOR_12 0x32
230 #define SERVO_MOTOR_13 0x36
231 #define SERVO_MOTOR_14 0x3A
232 #define SERVO_MOTOR_15 0x3E
233 #define SERVO_MOTOR_16 0x42
235 #define SERVO_POSITIVE_CH0_NEGATIVE_CH1 0xA0
236 #define SERVO_POSITIVE_CH2_NEGATIVE_CH3 0xA1
237 #define SERVO_POSITIVE_CH4_NEGATIVE_CH5 0xA2
238 #define SERVO_POSITIVE_CH6_NEGATIVE_CH7 0xA3
239 #define SERVO_POSITIVE_CH8_NEGATIVE_CH9 0xA4
240 #define SERVO_POSITIVE_CH10_NEGATIVE_CH11 0xA5
241 #define SERVO_POSITIVE_CH12_NEGATIVE_CH13 0xA6
242 #define SERVO_POSITIVE_CH14_NEGATIVE_CH15 0xA7
243 #define SERVO_POSITIVE_CH1_NEGATIVE_CH0 0xA8
244 #define SERVO_POSITIVE_CH3_NEGATIVE_CH2 0xA9
245 #define SERVO_POSITIVE_CH5_NEGATIVE_CH4 0xAA
246 #define SERVO_POSITIVE_CH7_NEGATIVE_CH6 0xAB
247 #define SERVO_POSITIVE_CH9_NEGATIVE_CH8 0xAC
248 #define SERVO_POSITIVE_CH11_NEGATIVE_CH10 0xAD
249 #define SERVO_POSITIVE_CH13_NEGATIVE_CH12 0xAE
250 #define SERVO_POSITIVE_CH15_NEGATIVE_CH14 0xAF
252 #define SERVO_POSITIVE_CH0 0xB0
253 #define SERVO_POSITIVE_CH2 0xB1
254 #define SERVO_POSITIVE_CH4 0xB2
255 #define SERVO_POSITIVE_CH6 0xB3
256 #define SERVO_POSITIVE_CH8 0xB4
257 #define SERVO_POSITIVE_CH10 0xB5
258 #define SERVO_POSITIVE_CH12 0xB6
259 #define SERVO_POSITIVE_CH14 0xB7
260 #define SERVO_POSITIVE_CH1 0xB8
261 #define SERVO_POSITIVE_CH3 0xB9
262 #define SERVO_POSITIVE_CH5 0xBA
263 #define SERVO_POSITIVE_CH7 0xBB
264 #define SERVO_POSITIVE_CH9 0xBC
265 #define SERVO_POSITIVE_CH11 0xBD
266 #define SERVO_POSITIVE_CH13 0xBE
267 #define SERVO_POSITIVE_CH15 0xBF
uint8_t min_position
Definition: servo.h:279
void servo_generic_write_of_pca9685(servo_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic write function of pca9685.
uint16_t setvo_get_current(servo_t *ctx, uint8_t channel)
Functions for reading current in mA.
#define SERVO_RETVAL
Definition: servo.h:76
void servo_generic_write_of_of_ltc2497(servo_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic write function of ltc2497.
uint8_t in_max
Definition: servo.h:290
uint8_t max_pos
Definition: servo.h:315
servo_pos_and_res_t pos_and_res
Definition: servo.h:320
Click ctx object definition.
Definition: servo.h:300
i2c_master_t i2c
Definition: servo.h:307
void servo_generic_read_of_pca9685(servo_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic read function of pca9685.
void servo_cfg_setup(servo_cfg_t *cfg)
Config Object Initialization function.
void servo_setting(servo_t *ctx, servo_pos_and_res_t pos_and_res)
Setting function.
void servo_generic_read_of_ltc2497(servo_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic read function of ltc2497.
void servo_soft_reset(servo_t *ctx)
Soft reset function.
SERVO_RETVAL servo_init(servo_t *ctx, servo_cfg_t *cfg)
Initialization function.
digital_out_t oe
Definition: servo.h:303
void servo_stop(servo_t *ctx)
Stop function.
uint8_t slave_address_of_pca9685
Definition: servo.h:311
uint8_t max_position
Definition: servo.h:280
uint16_t out_max
Definition: servo.h:292
void servo_default_cfg(servo_t *ctx)
Click Default Configuration function.
void servo_set_mode(servo_t *ctx, uint8_t mode, uint8_t w_data)
Set mode function.
void servo_start(servo_t *ctx)
Start function.
pin_name_t oe
Definition: servo.h:336
uint16_t low_resolution
Definition: servo.h:281
void servo_set_freq(servo_t *ctx, uint16_t freq)
Set frequency function.
void servo_set_vref(servo_t *ctx, uint16_t v_ref)
Set Vref function.
uint32_t i2c_speed
Definition: servo.h:340
uint16_t low_res
Definition: servo.h:317
void servo_sleep(servo_t *ctx)
Sleep function.
uint16_t vref
Definition: servo.h:316
uint16_t high_resolution
Definition: servo.h:282
uint16_t high_res
Definition: servo.h:318
uint8_t x
Definition: servo.h:288
uint8_t min_pos
Definition: servo.h:314
pin_name_t scl
Definition: servo.h:331
uint8_t slave_address_of_ltc2497
Definition: servo.h:312
uint8_t i2c_address_of_pca9685
Definition: servo.h:341
uint16_t out_min
Definition: servo.h:291
Click configuration structure definition.
Definition: servo.h:328
uint32_t servo_get_channel(servo_t *ctx, uint8_t channel)
Functions for reading adc value of current.
pin_name_t sda
Definition: servo.h:332
void servo_set_position(servo_t *ctx, uint8_t motor, uint8_t position)
Set position function.
uint8_t in_min
Definition: servo.h:289
uint8_t i2c_address_of_ltc2497
Definition: servo.h:342