pir3 2.2.0
Loading...
Searching...
No Matches
pir3.h
Go to the documentation of this file.
1/****************************************************************************
2** Copyright (C) 2020 MikroElektronika d.o.o.
3** Contact: https://www.mikroe.com/contact
4**
5** Permission is hereby granted, free of charge, to any person obtaining a copy
6** of this software and associated documentation files (the "Software"), to deal
7** in the Software without restriction, including without limitation the rights
8** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9** copies of the Software, and to permit persons to whom the Software is
10** furnished to do so, subject to the following conditions:
11** The above copyright notice and this permission notice shall be
12** included in all copies or substantial portions of the Software.
13**
14** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20** USE OR OTHER DEALINGS IN THE SOFTWARE.
21****************************************************************************/
22
27
28#ifndef PIR3_H
29#define PIR3_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
39#ifdef PREINIT_SUPPORTED
40#include "preinit.h"
41#endif
42
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
45 #include "delays.h"
46 #endif
47#endif
48
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_i2c_master.h"
52
58
63
68
73#define PIR3_CONFIG_DETLVL_MASK_MSB 0x7F
74#define PIR3_CONFIG_DETLVL_MASK_LSB 0x01
75#define PIR3_CONFIG_DETLVL_DEFAULT 0x1C
76#define PIR3_CONFIG_TRIGOM_DISABLED 0x00
77#define PIR3_CONFIG_TRIGOM_ENABLED 0x01
78#define PIR3_CONFIG_TRIGOM_MASK 0x01
79#define PIR3_CONFIG_TRIGOM_DEFAULT PIR3_CONFIG_TRIGOM_DISABLED
80#define PIR3_CONFIG_FSTEP_1 0x01
81#define PIR3_CONFIG_FSTEP_2 0x03
82#define PIR3_CONFIG_FSTEP_3 0x00
83#define PIR3_CONFIG_FSTEP_MASK 0x03
84#define PIR3_CONFIG_FSTEP_DEFAULT PIR3_CONFIG_FSTEP_2
85#define PIR3_CONFIG_FILSEL_TYPE_A 0x07
86#define PIR3_CONFIG_FILSEL_TYPE_B 0x00
87#define PIR3_CONFIG_FILSEL_TYPE_C 0x01
88#define PIR3_CONFIG_FILSEL_TYPE_D 0x02
89#define PIR3_CONFIG_FILSEL_DIRECT 0x03
90#define PIR3_CONFIG_FILSEL_MASK 0x07
91#define PIR3_CONFIG_FILSEL_DEFAULT PIR3_CONFIG_FILSEL_TYPE_B
92
98#define PIR3_DEVICE_ADDRESS 0x00
99 // pir3_set
101
106
111
116#define PIR3_MAP_MIKROBUS( cfg, mikrobus ) \
117 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
118 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
119 cfg.on = MIKROBUS( mikrobus, MIKROBUS_RST );
120 // pir3_map // pir3
123
128typedef struct
129{
130 uint8_t detlvl;
131 uint8_t trigom;
132 uint8_t fstep;
133 uint8_t filsel;
134
136
141typedef struct
142{
143 // Output pins
144 digital_out_t on;
145
146 // Modules
147 i2c_master_t i2c;
148
149 // I2C slave address
151
153
154} pir3_t;
155
160typedef struct
161{
162 pin_name_t scl;
163 pin_name_t sda;
164
165 pin_name_t on;
166
167 uint32_t i2c_speed;
168 uint8_t i2c_address;
169
170} pir3_cfg_t;
171
176typedef enum
177{
180
182
188
199
213err_t pir3_init ( pir3_t *ctx, pir3_cfg_t *cfg );
214
228
240
252err_t pir3_read_peak_hold ( pir3_t *ctx, int16_t *peak_hold );
253
263
273
283void pir3_set_detection_level ( pir3_t *ctx, uint8_t detlvl );
284
294void pir3_set_trigger_out ( pir3_t *ctx, uint8_t trigom );
295
305void pir3_set_filter_step ( pir3_t *ctx, uint8_t fstep );
306
316void pir3_set_filter_type ( pir3_t *ctx, uint8_t filsel );
317
318#ifdef __cplusplus
319}
320#endif
321#endif // PIR3_H
322 // pir3
324
325// ------------------------------------------------------------------------ END
void pir3_set_filter_type(pir3_t *ctx, uint8_t filsel)
PIR 3 set filter type function.
err_t pir3_default_cfg(pir3_t *ctx)
PIR 3 default configuration function.
err_t pir3_init(pir3_t *ctx, pir3_cfg_t *cfg)
PIR 3 initialization function.
void pir3_cfg_setup(pir3_cfg_t *cfg)
PIR 3 configuration object setup function.
void pir3_set_trigger_out(pir3_t *ctx, uint8_t trigom)
PIR 3 set trigger out function.
void pir3_set_filter_step(pir3_t *ctx, uint8_t fstep)
PIR 3 set filter step function.
err_t pir3_write_config(pir3_t *ctx)
PIR 3 write config function.
void pir3_disable_device(pir3_t *ctx)
PIR 3 disable device function.
err_t pir3_read_peak_hold(pir3_t *ctx, int16_t *peak_hold)
PIR 3 read peak hold function.
void pir3_enable_device(pir3_t *ctx)
PIR 3 enable device function.
void pir3_set_detection_level(pir3_t *ctx, uint8_t detlvl)
PIR 3 set detection level function.
pir3_return_value_t
PIR 3 Click return value data.
Definition pir3.h:177
@ PIR3_ERROR
Definition pir3.h:179
@ PIR3_OK
Definition pir3.h:178
PIR 3 Click configuration object.
Definition pir3.h:161
uint32_t i2c_speed
Definition pir3.h:167
pin_name_t on
Definition pir3.h:165
pin_name_t scl
Definition pir3.h:162
pin_name_t sda
Definition pir3.h:163
uint8_t i2c_address
Definition pir3.h:168
PIR 3 Click config object.
Definition pir3.h:129
uint8_t filsel
Definition pir3.h:133
uint8_t fstep
Definition pir3.h:132
uint8_t trigom
Definition pir3.h:131
uint8_t detlvl
Definition pir3.h:130
PIR 3 Click context object.
Definition pir3.h:142
pir3_config_t config
Definition pir3.h:152
digital_out_t on
Definition pir3.h:144
i2c_master_t i2c
Definition pir3.h:147
uint8_t slave_address
Definition pir3.h:150