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
adc_generic.c
Go to the documentation of this file.
1/*
2 * Copyright (C) 2010 Martin Muller
3 * Copyright (C) 2016 Gautier Hattenberger
4 *
5 * This file is part of paparazzi.
6 *
7 * paparazzi is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2, or (at your option)
10 * any later version.
11 *
12 * paparazzi is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with paparazzi; see the file COPYING. If not, see
19 * <http://www.gnu.org/licenses/>.
20 */
21
32#include "adc_generic.h"
33#include "mcu_periph/adc.h"
34#include "mcu_periph/uart.h"
35#include "pprzlink/messages.h"
37
40
41#ifndef ADC_CHANNEL_GENERIC1
42#ifndef ADC_CHANNEL_GENERIC2
43#error "at least one ADC_CHANNEL_GENERIC1/2 needs to be defined to use the generic_adc module"
44#endif
45#endif
46
47#ifndef ADC_CHANNEL_GENERIC_NB_SAMPLES
48#define ADC_CHANNEL_GENERIC_NB_SAMPLES DEFAULT_AV_NB_SAMPLE
49#endif
50
51#if PERIODIC_TELEMETRY
53#endif
54
55#ifndef ADC_GENERIC_PERIODIC_SEND
56#define ADC_GENERIC_PERIODIC_SEND TRUE
57#endif
58
59#ifdef ADC_CHANNEL_GENERIC1
60static struct adc_buf buf_generic1;
61#endif
62
63#ifdef ADC_CHANNEL_GENERIC2
64static struct adc_buf buf_generic2;
65#endif
66
67static void adc_msg_send(struct transport_tx *trans, struct link_device *dev) {
68#ifdef ADC_CHANNEL_GENERIC1
70#endif
71#ifdef ADC_CHANNEL_GENERIC2
72 adc_generic_val2 = buf_generic2.sum / buf_generic2.av_nb_sample;
73#endif
75}
76
78{
81
82#ifdef ADC_CHANNEL_GENERIC1
84#endif
85#ifdef ADC_CHANNEL_GENERIC2
87#endif
88#if PERIODIC_TELEMETRY
90#endif
91
92}
93
95{
96#if ADC_GENERIC_PERIODIC_SEND
97 adc_msg_send(&(DefaultChannel).trans_tx, &(DefaultDevice).device);
98#endif
99}
100
arch independent ADC (Analog to Digital Converter) API
uint32_t sum
Definition adc.h:54
Generic interface for all ADC hardware drivers, independent from microcontroller architecture.
Definition adc.h:53
void adc_generic_periodic(void)
Definition adc_generic.c:94
void adc_generic_init(void)
Definition adc_generic.c:77
uint16_t adc_generic_val1
Definition adc_generic.c:38
#define ADC_CHANNEL_GENERIC_NB_SAMPLES
Definition adc_generic.c:48
static void adc_msg_send(struct transport_tx *trans, struct link_device *dev)
Definition adc_generic.c:67
uint16_t adc_generic_val2
Definition adc_generic.c:39
This module can be used to read one or two values from the ADC channels in a generic way.
void adc_buf_channel(uint8_t adc_channel, struct adc_buf *s, uint8_t av_nb_sample)
Link between ChibiOS ADC drivers and Paparazzi adc_buffers.
Definition adc_arch.c:312
uint16_t foo
Definition main_demo5.c:58
static const struct usb_device_descriptor dev
Definition usb_ser_hw.c:74
int8_t register_periodic_telemetry(struct periodic_telemetry *_pt, uint8_t _id, telemetry_cb _cb)
Register a telemetry callback function.
Definition telemetry.c:51
Periodic telemetry system header (includes downlink utility and generated code).
#define DefaultPeriodic
Set default periodic telemetry.
Definition telemetry.h:66
arch independent UART (Universal Asynchronous Receiver/Transmitter) API
unsigned short uint16_t
Typedef defining 16 bit unsigned short type.