shuichan_new/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.h

79 lines
2.7 KiB
C
Raw Normal View History

#ifndef __FEED_SCALE_H
#define __FEED_SCALE_H
#include "main.h"
#include <stdint.h>
/* <20><><EFBFBD><EFBFBD>Ͷι<CDB6><CEB9><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>Χ: 0 ~ 500.0 KG, <20>ڲ<EFBFBD><DAB2><EFBFBD> 0.1 KG Ϊ<><CEAA>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> */
#define FEED_SCALE_ONCEWT_MIN 1 /* 0.1 KG */
#define FEED_SCALE_ONCEWT_MAX 5000 /* 500.0 KG */
#define FEED_SCALE_WEIGHT_MAX 5000 /* 500.0 KG */
/* <20><>Ʒ<EFBFBD><C6B7>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>л<EFBFBD><D0BB><EFBFBD>EEPROM(ƫ<><C6AB>172) <20><> 0/1<><31><EFBFBD>հ<EFBFBD>(0xFF) ʱ<><CAB1>
* main.h <EFBFBD><EFBFBD> PRODUCT_WITH_FEED_SCALE <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
* 1=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˮ<EFBFBD><EFBFBD>Ͷ<EFBFBD>ϻ<EFBFBD>)<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>Ͷι<EFBFBD><EFBFBD>
* 0=<EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>)<EFBFBD><EFBFBD>feeding ָ<EFBFBD><EFBFBD>ֱ<EFBFBD>ӿ<EFBFBD><EFBFBD>Ƽ̵<EFBFBD><EFBFBD><EFBFBD> 1<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SCALE <EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD>SCALE0/SCALE1 <EFBFBD>л<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD> */
extern uint8_t g_feed_scale_on;
void feed_scale_load_mode(void); /* app_init <20><><EFBFBD>ڵ<EFBFBD><DAB5>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>ز<EFBFBD>Ʒģʽ */
void feed_scale_set_mode(uint8_t on); /* д EEPROM <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB>Ч<EFBFBD><D0A7> */
#define FEED_SCALE_MODE_ADDR 172 /* EEPROM <20><>Ʒģʽ<C4A3>ֽڣ<D6BD>164~171 Ϊ<><CEAA><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD>壩 */
/* 485 <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>OLED <20><>ʾ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD>
* 0=<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1=һֱ<EFBFBD><EFBFBD>Ӧ<EFBFBD><EFBFBD> 2=֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3=CRC<EFBFBD><EFBFBD> 4=<EFBFBD><EFBFBD><EFBFBD>֡ 5=վ<EFBFBD><EFBFBD>/<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
int feedScaleGetLastErr(void);
uint32_t feedScaleGetLastOkTick(void); /* <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> */
/* Ͷι״̬ */
typedef enum {
FEED_IDLE = 0, /* <20><><EFBFBD><EFBFBD> */
FEED_RUNNING, /* Ͷι<CDB6><CEB9>: <20>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD>ڶ<EFBFBD>485 */
FEED_DONE, /* Ͷι<CDB6><CEB9><EFBFBD><EFBFBD> */
FEED_ERROR /* <20><EFBFBD><ECB3A3><EFBFBD><EFBFBD>(485ʧ<35><CAA7>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>) */
} FeedScaleState;
/* ι<>ϳ<EFBFBD>ģ<EFBFBD><C4A3> API */
void feedScaleInit(void);
void feedScaleProcess(void);
/* <20><><EFBFBD><EFBFBD>/ֹͣͶι */
void feedScaleStart(uint16_t once_wt_100g);
void feedScaleStop(void);
/* <20><><EFBFBD><EFBFBD>/<2F><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>Ͷι<CDB6><CEB9>(0.1KG <20><>λ)<29><><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA>־û<D6BE><C3BB><EFBFBD> EEPROM */
void feedScaleSetOnceWeight(uint16_t once_wt_100g);
uint16_t feedScaleGetOnceWeight(void);
/* <20><><EFBFBD>ó<EFBFBD>ȥƤ<C8A5><C6A4><EFBFBD><EFBFBD>(0.1KG <20><>λ)<29><><EFBFBD><EFBFBD><EFBFBD>־û<D6BE><C3BB><EFBFBD> EEPROM */
void feedScaleSetZero(uint16_t zero_100g);
/* <20><>ȡ<EFBFBD><C8A1>ǰ/<2F><><EFBFBD><EFBFBD>һ<EFBFBD>ν<EFBFBD><CEBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(0.1KG <20><>λ) */
uint16_t feedScaleGetWeight(void);
/* <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB> 485 ԭʼë<CABC>أ<EFBFBD>δȥƤ<C8A5><C6A4>0.1KG <20><>λ<EFBFBD><CEBB> */
uint16_t feedScaleGetRawWeight(void);
/* <20><>ȡ<EFBFBD><C8A1>ǰȥƤ<C8A5><C6A4><EFBFBD><EFBFBD>(0.1KG <20><>λ) */
uint16_t feedScaleGetZero(void);
/* <20><>ȡͶι״̬ */
FeedScaleState feedScaleGetState(void);
/* <20><>ȡ<EFBFBD>Ѽ<EFBFBD><D1BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(0.1KG <20><>λ)<29><>Ͷι<CDB6><CEB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч */
uint16_t feedScaleGetReduced(void);
/* 485 <20><>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD> 30s, Ͷι<CDB6><CEB9> 1s */
/*===== HR_IN ȱ<>ϼ<EFBFBD><CFBC><EFBFBD>(V1.7.0 <20>°<EFBFBD><C2B0><EFBFBD><EFBFBD><EFBFBD>): <20><><EFBFBD><EFBFBD><EFBFBD>Թܽ<D4B9> PA8, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> =====
* <EFBFBD>͵<EFBFBD>ƽ=<EFBFBD><EFBFBD><EFBFBD><EFBFBD>; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD>ǵ<EFBFBD>, <EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD>;
* <EFBFBD>ߵ<EFBFBD>ƽ=ȱ<EFBFBD><EFBFBD> -> ֹͣͶ<EFBFBD>ϲ<EFBFBD><EFBFBD>رռ̵<EFBFBD><EFBFBD><EFBFBD>1(ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>־, <EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>) */
#define HR_IN_PIN GPIO_PIN_8
#define HR_IN_PORT GPIOA
#define HR_EMPTY_LEVEL GPIO_PIN_SET /* ȱ<>ϵ<EFBFBD>ƽ=<3D><> */
#define HR_DEBOUNCE_CNT 50 /* app_task 10ms <20><><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>, <20><><EFBFBD><EFBFBD>50<35>θ<EFBFBD>(<28><>500ms)<29><><EFBFBD><EFBFBD>ȱ<EFBFBD><C8B1> */
#define FEED_SCALE_QUERY_IDLE_MS 30000u
#define FEED_SCALE_QUERY_RUN_MS 1000u
#endif /* __FEED_SCALE_H */