Paparazzi UAS v7.0_unstable
Paparazzi is a free software Unmanned Aircraft System.
Loading...
Searching...
No Matches
actuators_pwm_arch.c
Go to the documentation of this file.
1/*
2 * Copyright (C) 2013 AggieAir, A Remote Sensing Unmanned Aerial System for Scientific Applications
3 * Utah State University, http://aggieair.usu.edu/
4 *
5 * Michal Podhradsky (michal.podhradsky@aggiemail.usu.edu)
6 * Calvin Coopmans (c.r.coopmans@ieee.org)
7 *
8 *
9 * This file is part of paparazzi.
10 *
11 * paparazzi is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2, or (at your option)
14 * any later version.
15 *
16 * paparazzi is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with paparazzi; see the file COPYING. If not, write to
23 * the Free Software Foundation, 59 Temple Place - Suite 330,
24 * Boston, MA 02111-1307, USA.
25 */
33#include "modules/actuators/actuators_pwm_arch.h"
35#include "mcu_periph/gpio.h"
36
37/* Default timer base frequency is 1MHz */
38#ifndef PWM_FREQUENCY
39#define PWM_FREQUENCY 1000000
40#endif
41
42/* Default servo update rate in Hz */
43#ifndef SERVO_HZ
44#define SERVO_HZ 40
45#endif
46
47/* For each timer the period van be configured differently */
48#ifndef TIM1_SERVO_HZ
49#define TIM1_SERVO_HZ SERVO_HZ
50#endif
51#ifndef TIM2_SERVO_HZ
52#define TIM2_SERVO_HZ SERVO_HZ
53#endif
54#ifndef TIM3_SERVO_HZ
55#define TIM3_SERVO_HZ SERVO_HZ
56#endif
57#ifndef TIM4_SERVO_HZ
58#define TIM4_SERVO_HZ SERVO_HZ
59#endif
60#ifndef TIM5_SERVO_HZ
61#define TIM5_SERVO_HZ SERVO_HZ
62#endif
63#ifndef TIM8_SERVO_HZ
64#define TIM8_SERVO_HZ SERVO_HZ
65#endif
66#ifndef TIM9_SERVO_HZ
67#define TIM9_SERVO_HZ SERVO_HZ
68#endif
69#ifndef TIM12_SERVO_HZ
70#define TIM12_SERVO_HZ SERVO_HZ
71#endif
72
79
80
88#ifndef PWM_CMD_TO_US
89#define PWM_CMD_TO_US(_t) (PWM_FREQUENCY * _t / 1000000)
90#endif
91
101 __attribute__((unused)) static void pwmpcb(PWMDriver *pwmp __attribute__((unused))) {}
102
103#if USE_PWM_TIM1
104static PWMConfig pwmcfg1 = {
105 .frequency = PWM_FREQUENCY,
107 .callback = NULL,
108 .channels = {
113 },
114 .cr2 = 0,
115 .bdtr = 0,
116 .dier = 0
117};
118#endif
119#if USE_PWM_TIM2
120static PWMConfig pwmcfg2 = {
121 .frequency = PWM_FREQUENCY,
123 .callback = NULL,
124 .channels = {
129 },
130 .cr2 = 0,
131 .bdtr = 0,
132 .dier = 0
133};
134#endif
135#if USE_PWM_TIM3
136static PWMConfig pwmcfg3 = {
137 .frequency = PWM_FREQUENCY,
139 .callback = NULL,
140 .channels = {
145 },
146 .cr2 = 0,
147 .bdtr = 0,
148 .dier = 0
149};
150#endif
151#if USE_PWM_TIM4
152static PWMConfig pwmcfg4 = {
153 .frequency = PWM_FREQUENCY,
155 .callback = NULL,
156 .channels = {
161 },
162 .cr2 = 0,
163 .bdtr = 0,
164 .dier = 0
165};
166#endif
167#if USE_PWM_TIM5
168static PWMConfig pwmcfg5 = {
169 .frequency = PWM_FREQUENCY,
171 .callback = NULL,
172 .channels = {
177 },
178 .cr2 = 0,
179 .bdtr = 0,
180 .dier = 0
181};
182#endif
183#if USE_PWM_TIM8
184static PWMConfig pwmcfg8 = {
185 .frequency = PWM_FREQUENCY,
187 .callback = NULL,
188 .channels = {
193 },
194 .cr2 = 0,
195 .bdtr = 0,
196 .dier = 0
197};
198#endif
199#if USE_PWM_TIM9
200static PWMConfig pwmcfg9 = {
201 .frequency = PWM_FREQUENCY,
203 .callback = NULL,
204 .channels = {
209 },
210 .cr2 = 0,
211 .bdtr = 0,
212 .dier = 0
213};
214#endif
215#if USE_PWM_TIM10
216static PWMConfig pwmcfg10 = {
217 .frequency = PWM_FREQUENCY,
219 .callback = NULL,
220 .channels = {
225 },
226 .cr2 = 0,
227 .bdtr = 0,
228 .dier = 0
229};
230#endif
231#if USE_PWM_TIM11
232static PWMConfig pwmcfg11 = {
233 .frequency = PWM_FREQUENCY,
235 .callback = NULL,
236 .channels = {
241 },
242 .cr2 = 0,
243 .bdtr = 0,
244 .dier = 0
245};
246#endif
247#if USE_PWM_TIM12
248static PWMConfig pwmcfg12 = {
249 .frequency = PWM_FREQUENCY,
251 .callback = NULL,
252 .channels = {
257 },
258 .cr2 = 0,
259 .bdtr = 0,
260 .dier = 0
261};
262#endif
263
264
266{
267 /*----------------
268 * Configure GPIO
269 *----------------*/
270#ifdef PWM_SERVO_0
273#endif
274#ifdef PWM_SERVO_1
277#endif
278#ifdef PWM_SERVO_2
281#endif
282#ifdef PWM_SERVO_3
285#endif
286#ifdef PWM_SERVO_4
289#endif
290#ifdef PWM_SERVO_5
293#endif
294#ifdef PWM_SERVO_6
297#endif
298#ifdef PWM_SERVO_7
301#endif
302#ifdef PWM_SERVO_8
305#endif
306#ifdef PWM_SERVO_9
309#endif
310#ifdef PWM_SERVO_10
313#endif
314#ifdef PWM_SERVO_11
317#endif
318#ifdef PWM_SERVO_12
321#endif
322#ifdef PWM_SERVO_13
325#endif
326#ifdef PWM_SERVO_14
329#endif
330#ifdef PWM_SERVO_15
333#endif
334#ifdef PWM_SERVO_16
337#endif
338
339 /*---------------
340 * Configure PWM
341 *---------------*/
342#if USE_PWM_TIM1
344#endif
345#if USE_PWM_TIM2
347#endif
348#if USE_PWM_TIM3
350#endif
351#if USE_PWM_TIM4
353#endif
354#if USE_PWM_TIM5
356#endif
357#if USE_PWM_TIM8
359#endif
360#if USE_PWM_TIM9
362#endif
363#if USE_PWM_TIM10
365#endif
366#if USE_PWM_TIM11
368#endif
369#if USE_PWM_TIM12
371#endif
372}
373
374
376{
377#ifdef PWM_SERVO_0
379#endif
380#ifdef PWM_SERVO_1
382#endif
383#ifdef PWM_SERVO_2
385#endif
386#ifdef PWM_SERVO_3
388#endif
389#ifdef PWM_SERVO_4
391#endif
392#ifdef PWM_SERVO_5
394#endif
395#ifdef PWM_SERVO_6
397#endif
398#ifdef PWM_SERVO_7
400#endif
401#ifdef PWM_SERVO_8
403#endif
404#ifdef PWM_SERVO_9
406#endif
407#ifdef PWM_SERVO_10
409#endif
410#ifdef PWM_SERVO_11
412#endif
413#ifdef PWM_SERVO_12
415#endif
416#ifdef PWM_SERVO_13
418#endif
419#ifdef PWM_SERVO_14
421#endif
422#ifdef PWM_SERVO_15
424#endif
425#ifdef PWM_SERVO_16
427#endif
428}
429
uint16_t actuators_pwm_values[ACTUATORS_ARDRONE_NB]
Definition actuators.c:69
#define ACTUATORS_PWM_NB
Definition cc3d.h:158
void gpio_setup_pin_af(ioportid_t port, uint16_t pin, uint8_t af, bool is_output)
Setup a gpio for input or output with alternate function.
Definition gpio_arch.c:65
#define TIM3_SERVO_HZ
#define TIM5_SERVO_HZ
#define PWM_CMD_TO_US(_t)
Print the configuration variables from the header.
static void pwmpcb(PWMDriver *pwmp)
PWM callback function.
#define TIM4_SERVO_HZ
#define SERVO_HZ
#define TIM8_SERVO_HZ
#define TIM9_SERVO_HZ
#define TIM12_SERVO_HZ
#define PWM_FREQUENCY
#define TIM1_SERVO_HZ
#define TIM2_SERVO_HZ
void actuators_pwm_arch_commit(void)
Arch dependent commit function.
void actuators_pwm_arch_init(void)
Arch dependent init function.
Some architecture independent helper functions for GPIOs.
uint16_t foo
Definition main_demo5.c:58
#define PWM_SERVO_6
#define PWM_SERVO_3
#define PWM_SERVO_4
#define PWM_SERVO_5
PRINT_CONFIG_VAR(ONELOOP_ANDI_FILT_CUTOFF)