kopia lustrzana https://github.com/SP8EBC/ParaTNC
52 wiersze
1.5 KiB
C
52 wiersze
1.5 KiB
C
/*
|
|
* analog_anemometer.h
|
|
*
|
|
* Created on: 25.12.2019
|
|
* Author: mateusz
|
|
*/
|
|
|
|
#ifndef INCLUDE_DRIVERS_ANALOG_ANEMOMETER_H_
|
|
#define INCLUDE_DRIVERS_ANALOG_ANEMOMETER_H_
|
|
|
|
#define ANALOG_ANEMOMETER_SPEED_PULSES_N 10
|
|
|
|
#include <stdint.h>
|
|
|
|
typedef enum analog_wind_qf {
|
|
AN_WIND_QF_FULL,
|
|
AN_WIND_QF_DEGRADED_DEBOUNCE,
|
|
AN_WIND_QF_DEGRADED_SLEW,
|
|
AN_WIND_QF_DEGRADED,
|
|
AN_WIND_QF_NOT_AVALIABLE,
|
|
AN_WIND_QF_UNKNOWN
|
|
} analog_wind_qf_t;
|
|
|
|
#define DIRECTION_REGULAR 1
|
|
#define DIRECTION_SPARKFUN 2
|
|
|
|
#if defined(_ANEMOMETER_ANALOGUE) || defined(_ANEMOMETER_ANALOGUE_SPARKFUN)
|
|
|
|
extern uint16_t analog_anemometer_windspeed_pulses_time[ANALOG_ANEMOMETER_SPEED_PULSES_N];
|
|
extern uint16_t analog_anemometer_time_between_pulses[ANALOG_ANEMOMETER_SPEED_PULSES_N];
|
|
extern uint16_t analog_anemometer_pulses_per_m_s_constant;
|
|
extern uint8_t analog_anemometer_timer_has_been_fired;
|
|
extern uint8_t analog_anemometer_slew_limit_fired;
|
|
extern uint8_t analog_anemometer_deboucing_fired;
|
|
|
|
void analog_anemometer_init( uint16_t pulses_per_meter_second,
|
|
uint8_t anemometer_lower_boundary,
|
|
uint8_t anemometer_upper_boundary,
|
|
uint8_t direction_polarity);
|
|
|
|
void analog_anemometer_timer_irq(void);
|
|
void analog_anemometer_dma_irq(void);
|
|
uint32_t analog_anemometer_get_ms_from_pulse(uint16_t inter_pulse_time);
|
|
int16_t analog_anemometer_direction_handler(void);
|
|
int16_t analog_anemometer_direction_sparkfun(uint32_t timer_value);
|
|
void analog_anemometer_direction_reset(void);
|
|
analog_wind_qf_t analog_anemometer_get_qf(void);
|
|
|
|
#endif
|
|
|
|
#endif /* INCLUDE_DRIVERS_ANALOG_ANEMOMETER_H_ */
|