| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- #ifndef __WEIGHT_READ_H
- #define __WEIGHT_READ_H
- #include "gpio.h"
- #include "tim.h"
- #include "stdbool.h"
- #include "stdlib.h"
- #define ROUND_OFF 0.5f
- #define ALLOW_VALUE 15.0f
- #define VALUE_MID 2
- #define N 9
- #define MAX_ZERO 10.0f
- #define MIN_ZERO -5.0f
- #define SENSOR_NUM 3
- #define SAMPLE_NUM 5
- #define HALF_HOUR 1800000
- #define CREEP_VALUE 1.2f
- #define BASE_VALUE (uint32_t)0x800000
- #define OFF_VALUE (uint32_t)0x3000
- typedef union
- {
- float f;
- uint8_t i[4];
- } F32;
- typedef enum
- {
- higher = 0,
- equal = 1,
- lower = 2,
- } WARN_INIT;
- struct SENSOR
- {
- GPIO_TypeDef *SCK_GPIO_Port;
- GPIO_TypeDef *DOUT_GPIO_Port;
- uint16_t SCK_Pin;
- uint16_t DOUT_Pin;
- uint32_t GrossWeight;
- uint32_t Raw_Value;
- float Real_Variation;
- float Real_Weight;
- F32 K;
- float base_k;
- float Scale;
- uint32_t raw_init_value;
- WARN_INIT init_flag;
- bool licence_flag;
- bool err_flag;
- uint8_t Num;
- };
- // typedef struct __WEIGHING_DEVICE WEIGHING_DEVICE;
- typedef struct
- {
- float (*get_weight)(void);
- void (*get_allgrossweight)(void);
- void (*processing_data)(void);
- void (*filter_init)(void);
- } WEIGHING_OPS;
- typedef struct
- {
- struct SENSOR *sensor[SENSOR_NUM];
- // uint32_t creep_time;
- // float creep_snap;
- float Weight_last;
- float Weight_current;
- uint16_t rate;
- // uint8_t creep_count;
- bool check_self_flag;
- uint8_t sensor_num_mask;
- float correct_k;
- WEIGHING_OPS *_ops;
- } WEIGHING_DEVICE;
- WEIGHING_DEVICE *Get_Device_Handle(void);
- void Filter_Value(uint32_t* data);
- void Convert_Into_Weight(void);
- uint32_t Read_Value(struct SENSOR *sensor);
- static inline float constrain_float(float x, float low, float high)
- {
- if (x < low)
- return low;
- else if (x > high)
- return high;
- else
- return x;
- }
- #define Min(a, b) \
- ({ \
- typeof(a) _min1 = a; \
- typeof(b) _min2 = b; \
- (void)(&_min1 == &_min2); \
- _min1 < _min2 ? _min1 : _min2; \
- })
- #define Max(a, b) \
- ({ \
- typeof(a) _max1 = a; \
- typeof(b) _max2 = b; \
- (void)(&_max1 == &_max2); \
- _max1 > _max2 ? _max1 : _max2; \
- })
- #endif
|