Paparazzi UAS
v5.18.0_stable
Paparazzi is a free software Unmanned Aircraft System.
Main Page
Related Pages
Modules
Data Structures
Data Structures
Data Structure Index
Data Fields
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Files
File List
Globals
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
b
c
d
e
f
g
h
i
j
m
n
p
r
s
t
u
v
w
Enumerations
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
z
Enumerator
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
r
s
t
u
v
w
x
y
z
Macros
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Modules
Pages
light_solar.c
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2011 Martin Mueller
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
*/
22
30
#include "
mcu_periph/adc.h
"
31
#include "
mcu_periph/uart.h
"
32
#include "pprzlink/messages.h"
33
#include "
subsystems/datalink/downlink.h
"
34
#include "
modules/meteo/light_solar.h
"
35
36
#ifndef ADC_CHANNEL_LIGHT_SOLAR_UP
37
#define ADC_CHANNEL_LIGHT_SOLAR_UP ADC_1
38
#endif
39
#ifndef ADC_CHANNEL_LIGHT_SOLAR_DN
40
#define ADC_CHANNEL_LIGHT_SOLAR_DN ADC_2
41
#endif
42
43
#ifndef ADC_CHANNEL_LIGHT_NB_SAMPLES
44
#define ADC_CHANNEL_LIGHT_NB_SAMPLES 16
45
#endif
46
47
48
uint16_t
up
[
LIGHT_NB
],
dn
[
LIGHT_NB
];
49
int32_t
light_cnt
;
50
51
static
struct
adc_buf
buf_light_sol_up
;
52
static
struct
adc_buf
buf_light_sol_dn
;
53
54
void
light_solar_init
(
void
)
55
{
56
adc_buf_channel
(
ADC_CHANNEL_LIGHT_SOLAR_UP
, &
buf_light_sol_up
,
ADC_CHANNEL_LIGHT_NB_SAMPLES
);
57
adc_buf_channel
(
ADC_CHANNEL_LIGHT_SOLAR_DN
, &
buf_light_sol_dn
,
ADC_CHANNEL_LIGHT_NB_SAMPLES
);
58
59
light_cnt
= 0;
60
}
61
62
void
light_solar_periodic
(
void
)
63
{
64
up
[
light_cnt
] =
buf_light_sol_up
.
sum
/
buf_light_sol_up
.
av_nb_sample
;
65
dn
[
light_cnt
] =
buf_light_sol_dn
.
sum
/
buf_light_sol_dn
.
av_nb_sample
;
66
67
/* 10k/10k voltage divider, 10 bits adc, 3.3V max */
68
69
if
(++
light_cnt
>=
LIGHT_NB
) {
70
DOWNLINK_SEND_SOLAR_RADIATION(
DefaultChannel
,
DefaultDevice
,
71
&
up
[0], &
dn
[0], &
up
[1], &
dn
[1], &
up
[2], &
dn
[2], &
up
[3], &
dn
[3],
72
&
up
[4], &
dn
[4], &
up
[5], &
dn
[5], &
up
[6], &
dn
[6], &
up
[7], &
dn
[7],
73
&
up
[8], &
dn
[8], &
up
[9], &
dn
[9]);
74
light_cnt
= 0;
75
}
76
}
77
uint16_t
unsigned short uint16_t
Definition:
types.h:16
buf_light_sol_dn
static struct adc_buf buf_light_sol_dn
Definition:
light_solar.c:52
LIGHT_NB
#define LIGHT_NB
Definition:
light_solar.h:6
adc_buf_channel
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:289
light_solar_periodic
void light_solar_periodic(void)
Definition:
light_solar.c:62
adc.h
arch independent ADC (Analog to Digital Converter) API
light_solar.h
adc_buf::sum
uint32_t sum
Definition:
adc.h:54
up
uint16_t up[LIGHT_NB]
Definition:
light_solar.c:48
ADC_CHANNEL_LIGHT_SOLAR_UP
#define ADC_CHANNEL_LIGHT_SOLAR_UP
Definition:
light_solar.c:37
uart.h
arch independent UART (Universal Asynchronous Receiver/Transmitter) API
adc_buf::av_nb_sample
uint8_t av_nb_sample
Definition:
adc.h:57
downlink.h
Common code for AP and FBW telemetry.
int32_t
signed long int32_t
Definition:
types.h:19
ADC_CHANNEL_LIGHT_SOLAR_DN
#define ADC_CHANNEL_LIGHT_SOLAR_DN
Definition:
light_solar.c:40
buf_light_sol_up
static struct adc_buf buf_light_sol_up
Definition:
light_solar.c:51
ADC_CHANNEL_LIGHT_NB_SAMPLES
#define ADC_CHANNEL_LIGHT_NB_SAMPLES
Definition:
light_solar.c:44
DefaultChannel
#define DefaultChannel
Definition:
downlink.h:42
DefaultDevice
#define DefaultDevice
Definition:
downlink.h:46
light_solar_init
void light_solar_init(void)
Definition:
light_solar.c:54
dn
uint16_t dn[LIGHT_NB]
Definition:
light_solar.c:48
light_cnt
int32_t light_cnt
Definition:
light_solar.c:49
adc_buf
Generic interface for all ADC hardware drivers, independent from microcontroller architecture.
Definition:
adc.h:53
sw
airborne
modules
meteo
light_solar.c
Generated on Tue Feb 1 2022 13:51:16 for Paparazzi UAS by
1.8.17