624 lines
22 KiB
C
624 lines
22 KiB
C
|
|
#include "includes.h"
|
|||
|
|
|
|||
|
|
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
#define SAMPLE_COUNT (20)
|
|||
|
|
|
|||
|
|
// ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC>ı<EFBFBD>־
|
|||
|
|
volatile uint8_t Config_Sample_Request = 0;
|
|||
|
|
volatile uint8_t Config_Vacuum_Request = 0;
|
|||
|
|
// <20>õ<EFBFBD><C3B5>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ݵ<EFBFBD>֪ͨ
|
|||
|
|
volatile uint8_t GPRS_semSampled = 0;
|
|||
|
|
|
|||
|
|
// ֪ͨ<CDA8>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD>
|
|||
|
|
SemaphoreHandle_t Sample_Semaphore = NULL; // <20><>ֵ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// ֪ͨ<CDA8><D6AA>װƥ<D7B0><C6A5><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD>
|
|||
|
|
SemaphoreHandle_t Match_Semaphore = NULL; // <20><>ֵ<EFBFBD>ź<EFBFBD><C5BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
uint16_t adDPress_tmp[5]= {0};
|
|||
|
|
uint8_t adDPress_cnt=0;
|
|||
|
|
// <20><>ǰ<EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>
|
|||
|
|
volatile uint8_t Sample_phase = 0;
|
|||
|
|
// <20>ɼ<EFBFBD><C9BC>Ƿ<EFBFBD>æ
|
|||
|
|
uint32_t Sample_Busy()
|
|||
|
|
{
|
|||
|
|
return (Sample_phase != 0);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ֪ͨ<CDA8>ɼ<EFBFBD>
|
|||
|
|
void Sample_Notify()
|
|||
|
|
{
|
|||
|
|
if(!Sample_Busy())
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
xSemaphoreGive(Sample_Semaphore);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ֪ͨ<CDA8>ɼ<EFBFBD>
|
|||
|
|
void Sample_NotifyFromISR()
|
|||
|
|
{
|
|||
|
|
BaseType_t xHigherPriorityTaskWoken;
|
|||
|
|
|
|||
|
|
if(!Sample_Busy())
|
|||
|
|
{
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
xSemaphoreGiveFromISR(Sample_Semaphore, &xHigherPriorityTaskWoken);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>й¶<D0B9><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
void Leak_Handler(void)
|
|||
|
|
{
|
|||
|
|
// if(Wakeup_Sleeping)
|
|||
|
|
// {
|
|||
|
|
// SysTick->CTRL |= (SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk);
|
|||
|
|
// delay_ms(10);
|
|||
|
|
//
|
|||
|
|
// Vcc_Enable();
|
|||
|
|
// delay_ms(40);
|
|||
|
|
// Wakeup_Sleeping = 0;
|
|||
|
|
|
|||
|
|
// printf("\n\nWake up by LEAK.\n\n");
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// // <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// Sample_NotifyFromISR();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20>ɼ<EFBFBD>һ<EFBFBD><D2BB>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ܹ<EFBFBD><DCB9>ɼ<EFBFBD>20<32>Σ<EFBFBD>ȡ<EFBFBD>м<EFBFBD>10<31>ε<EFBFBD>ƽ<EFBFBD><C6BD>ֵ
|
|||
|
|
uint32_t Sample_ChannelOne(uint32_t channel)
|
|||
|
|
{
|
|||
|
|
uint32_t i;
|
|||
|
|
uint32_t adc[SAMPLE_COUNT];
|
|||
|
|
|
|||
|
|
LL_ADC_REG_SetSequencerRanks(ADC1, LL_ADC_REG_RANK_1, channel);
|
|||
|
|
for(i = 0; i < SAMPLE_COUNT; i++)
|
|||
|
|
{
|
|||
|
|
LL_ADC_REG_StartConversion(ADC1);
|
|||
|
|
while(LL_ADC_REG_IsConversionOngoing(ADC1));
|
|||
|
|
adc[i] = LL_ADC_REG_ReadConversionData12(ADC1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
sort(adc, SAMPLE_COUNT);
|
|||
|
|
adc[0] = 0;
|
|||
|
|
for(i = 0; i < (SAMPLE_COUNT / 2); i++)
|
|||
|
|
adc[0] += adc[SAMPLE_COUNT / 4 + i];
|
|||
|
|
|
|||
|
|
i = adc[0] / (SAMPLE_COUNT / 2);
|
|||
|
|
printf("\nchannel %d adc: %d, volt: %dmV\n", channel, i, i * 3000 / 4095);
|
|||
|
|
return i;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void Sample_Init()
|
|||
|
|
{
|
|||
|
|
LL_GPIO_InitTypeDef GPIO_InitStruct = {0};
|
|||
|
|
// LL_EXTI_InitTypeDef EXTI_InitStruct = {0};
|
|||
|
|
|
|||
|
|
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOA);
|
|||
|
|
/**ADC1 GPIO Configuration
|
|||
|
|
PA0 ------> ADC1_IN5<EFBFBD><EFBFBD>AD5<EFBFBD><EFBFBD>
|
|||
|
|
PA1 ------> ADC1_IN6 (AD6)
|
|||
|
|
PA5 ------> ADC1_IN10 (AD10)
|
|||
|
|
PA6 ------> ADC1_IN11 (AD11)
|
|||
|
|
PA7 ------> ADC1_IN12 (AD12)
|
|||
|
|
*/
|
|||
|
|
// PA0 ------> ADC1_IN5<4E><35>AD5<44><35>
|
|||
|
|
// PA1 ------> ADC1_IN6 (AD6)
|
|||
|
|
// PA2 ------> ADC1_IN7 (AD7)
|
|||
|
|
// PA3 ------> ADC1_IN8 (AD8)
|
|||
|
|
GPIO_InitStruct.Pin = LL_GPIO_PIN_0|LL_GPIO_PIN_1
|
|||
|
|
|LL_GPIO_PIN_2|LL_GPIO_PIN_3;
|
|||
|
|
GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
|
|||
|
|
GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
|
|||
|
|
LL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
|||
|
|
|
|||
|
|
// LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOB);
|
|||
|
|
// /**ADC1 GPIO Configuration
|
|||
|
|
// PB0 ------> ADC1_IN15<31><35>AD_BAT)
|
|||
|
|
// */
|
|||
|
|
// GPIO_InitStruct.Pin = LL_GPIO_PIN_0;
|
|||
|
|
// GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
|
|||
|
|
// GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
|
|||
|
|
// LL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
|||
|
|
//
|
|||
|
|
// LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOC);
|
|||
|
|
// /**ADC1 GPIO Configuration
|
|||
|
|
// PC0 ------> ADC1_IN1<4E><31>AD1)
|
|||
|
|
// PC1 ------> ADC1_IN2<4E><32>AD2)
|
|||
|
|
// PC2 ------> ADC1_IN3<4E><33>AD3)
|
|||
|
|
// PC3 ------> ADC1_IN4<4E><34>AD4)
|
|||
|
|
// */
|
|||
|
|
// GPIO_InitStruct.Pin = LL_GPIO_PIN_0|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_3;
|
|||
|
|
// GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
|
|||
|
|
// GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
|
|||
|
|
// LL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
|||
|
|
|
|||
|
|
// // й¶<D0B9><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_GPIOE);
|
|||
|
|
|
|||
|
|
// /**/
|
|||
|
|
// LL_SYSCFG_SetEXTISource(LL_SYSCFG_EXTI_PORTE, LL_SYSCFG_EXTI_LINE8);
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD>ź<EFBFBD><C5BA><EFBFBD>
|
|||
|
|
if(Sample_Semaphore == NULL)
|
|||
|
|
Sample_Semaphore = xSemaphoreCreateBinary();
|
|||
|
|
if(Match_Semaphore == NULL)
|
|||
|
|
Match_Semaphore = xSemaphoreCreateBinary();
|
|||
|
|
|
|||
|
|
// /**/
|
|||
|
|
// EXTI_InitStruct.Line_0_31 = LL_EXTI_LINE_8;
|
|||
|
|
// EXTI_InitStruct.Line_32_63 = LL_EXTI_LINE_NONE;
|
|||
|
|
// EXTI_InitStruct.LineCommand = ENABLE;
|
|||
|
|
// EXTI_InitStruct.Mode = LL_EXTI_MODE_IT;
|
|||
|
|
// EXTI_InitStruct.Trigger = LL_EXTI_TRIGGER_RISING_FALLING;
|
|||
|
|
// LL_EXTI_Init(&EXTI_InitStruct);
|
|||
|
|
|
|||
|
|
// /**/
|
|||
|
|
// LL_GPIO_SetPinPull(GPIOE, LL_GPIO_PIN_8, LL_GPIO_PULL_DOWN);
|
|||
|
|
|
|||
|
|
// /**/
|
|||
|
|
// LL_GPIO_SetPinMode(GPIOE, LL_GPIO_PIN_8, LL_GPIO_MODE_INPUT);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void Sample_Open()
|
|||
|
|
{
|
|||
|
|
uint32_t vrefint_cal = *((volatile uint16_t *)(0x1fff75aa));
|
|||
|
|
|
|||
|
|
LL_ADC_InitTypeDef ADC_InitStruct = {0};
|
|||
|
|
LL_ADC_REG_InitTypeDef ADC_REG_InitStruct = {0};
|
|||
|
|
LL_ADC_CommonInitTypeDef ADC_CommonInitStruct = {0};
|
|||
|
|
|
|||
|
|
// // <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
// dcBuff.sampleData.vacuum[0].staVacuum = VACUUM_STATUS_COMM_FAULT;
|
|||
|
|
// dcBuff.sampleData.leak.staLeak = LEAK_STATUS_COMM_FAULT;
|
|||
|
|
//
|
|||
|
|
// NVIC_SetPriority(EXTI9_5_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),5, 0));
|
|||
|
|
// NVIC_EnableIRQ(EXTI9_5_IRQn);
|
|||
|
|
|
|||
|
|
/* Peripheral clock enable */
|
|||
|
|
LL_AHB2_GRP1_EnableClock(LL_AHB2_GRP1_PERIPH_ADC);
|
|||
|
|
|
|||
|
|
/** Common config
|
|||
|
|
*/
|
|||
|
|
ADC_InitStruct.Resolution = LL_ADC_RESOLUTION_12B;
|
|||
|
|
ADC_InitStruct.DataAlignment = LL_ADC_DATA_ALIGN_RIGHT;
|
|||
|
|
ADC_InitStruct.LowPowerMode = LL_ADC_LP_AUTOWAIT;
|
|||
|
|
LL_ADC_Init(ADC1, &ADC_InitStruct);
|
|||
|
|
ADC_REG_InitStruct.TriggerSource = LL_ADC_REG_TRIG_SOFTWARE;
|
|||
|
|
ADC_REG_InitStruct.SequencerLength = LL_ADC_REG_SEQ_SCAN_DISABLE;
|
|||
|
|
ADC_REG_InitStruct.SequencerDiscont = LL_ADC_REG_SEQ_DISCONT_DISABLE;
|
|||
|
|
ADC_REG_InitStruct.ContinuousMode = LL_ADC_REG_CONV_SINGLE;
|
|||
|
|
ADC_REG_InitStruct.DMATransfer = LL_ADC_REG_DMA_TRANSFER_NONE;
|
|||
|
|
ADC_REG_InitStruct.Overrun = LL_ADC_REG_OVR_DATA_PRESERVED;
|
|||
|
|
LL_ADC_REG_Init(ADC1, &ADC_REG_InitStruct);
|
|||
|
|
LL_ADC_ConfigOverSamplingRatioShift(ADC1, LL_ADC_OVS_RATIO_16, LL_ADC_OVS_SHIFT_RIGHT_4);
|
|||
|
|
LL_ADC_SetOverSamplingDiscont(ADC1, LL_ADC_OVS_REG_CONT);
|
|||
|
|
LL_ADC_DisableIT_EOC(ADC1);
|
|||
|
|
LL_ADC_DisableIT_EOS(ADC1);
|
|||
|
|
LL_ADC_DisableDeepPowerDown(ADC1);
|
|||
|
|
LL_ADC_EnableInternalRegulator(ADC1);
|
|||
|
|
ADC_CommonInitStruct.CommonClock = LL_ADC_CLOCK_SYNC_PCLK_DIV4;
|
|||
|
|
LL_ADC_CommonInit(__LL_ADC_COMMON_INSTANCE(ADC1), &ADC_CommonInitStruct);
|
|||
|
|
/** Configure Regular Channel
|
|||
|
|
*/
|
|||
|
|
// LL_ADC_SetChannelSamplingTime(ADC1, LL_ADC_CHANNEL_1, LL_ADC_SAMPLINGTIME_24CYCLES_5);
|
|||
|
|
// LL_ADC_SetChannelSingleDiff(ADC1, LL_ADC_CHANNEL_1, LL_ADC_SINGLE_ENDED);
|
|||
|
|
// LL_ADC_SetChannelSamplingTime(ADC1, LL_ADC_CHANNEL_2, LL_ADC_SAMPLINGTIME_24CYCLES_5);
|
|||
|
|
// LL_ADC_SetChannelSingleDiff(ADC1, LL_ADC_CHANNEL_2, LL_ADC_SINGLE_ENDED);
|
|||
|
|
// LL_ADC_SetChannelSamplingTime(ADC1, LL_ADC_CHANNEL_3, LL_ADC_SAMPLINGTIME_24CYCLES_5);
|
|||
|
|
// LL_ADC_SetChannelSingleDiff(ADC1, LL_ADC_CHANNEL_3, LL_ADC_SINGLE_ENDED);
|
|||
|
|
// LL_ADC_SetChannelSamplingTime(ADC1, LL_ADC_CHANNEL_4, LL_ADC_SAMPLINGTIME_24CYCLES_5);
|
|||
|
|
// LL_ADC_SetChannelSingleDiff(ADC1, LL_ADC_CHANNEL_4, LL_ADC_SINGLE_ENDED);
|
|||
|
|
|
|||
|
|
LL_ADC_SetChannelSamplingTime(ADC1, LL_ADC_CHANNEL_5, LL_ADC_SAMPLINGTIME_24CYCLES_5);
|
|||
|
|
LL_ADC_SetChannelSingleDiff(ADC1, LL_ADC_CHANNEL_5, LL_ADC_SINGLE_ENDED);
|
|||
|
|
LL_ADC_SetChannelSamplingTime(ADC1, LL_ADC_CHANNEL_6, LL_ADC_SAMPLINGTIME_24CYCLES_5);
|
|||
|
|
LL_ADC_SetChannelSingleDiff(ADC1, LL_ADC_CHANNEL_6, LL_ADC_SINGLE_ENDED);
|
|||
|
|
LL_ADC_SetChannelSamplingTime(ADC1, LL_ADC_CHANNEL_7, LL_ADC_SAMPLINGTIME_24CYCLES_5);
|
|||
|
|
LL_ADC_SetChannelSingleDiff(ADC1, LL_ADC_CHANNEL_7, LL_ADC_SINGLE_ENDED);
|
|||
|
|
LL_ADC_SetChannelSamplingTime(ADC1, LL_ADC_CHANNEL_8, LL_ADC_SAMPLINGTIME_24CYCLES_5);
|
|||
|
|
LL_ADC_SetChannelSingleDiff(ADC1, LL_ADC_CHANNEL_8, LL_ADC_SINGLE_ENDED);
|
|||
|
|
|
|||
|
|
// LL_ADC_SetChannelSamplingTime(ADC1, LL_ADC_CHANNEL_10, LL_ADC_SAMPLINGTIME_24CYCLES_5);
|
|||
|
|
// LL_ADC_SetChannelSingleDiff(ADC1, LL_ADC_CHANNEL_10, LL_ADC_SINGLE_ENDED);
|
|||
|
|
// LL_ADC_SetChannelSamplingTime(ADC1, LL_ADC_CHANNEL_11, LL_ADC_SAMPLINGTIME_24CYCLES_5);
|
|||
|
|
// LL_ADC_SetChannelSingleDiff(ADC1, LL_ADC_CHANNEL_11, LL_ADC_SINGLE_ENDED);
|
|||
|
|
// LL_ADC_SetChannelSamplingTime(ADC1, LL_ADC_CHANNEL_12, LL_ADC_SAMPLINGTIME_24CYCLES_5);
|
|||
|
|
// LL_ADC_SetChannelSingleDiff(ADC1, LL_ADC_CHANNEL_12, LL_ADC_SINGLE_ENDED);
|
|||
|
|
// LL_ADC_SetChannelSamplingTime(ADC1, LL_ADC_CHANNEL_15, LL_ADC_SAMPLINGTIME_24CYCLES_5);
|
|||
|
|
// LL_ADC_SetChannelSingleDiff(ADC1, LL_ADC_CHANNEL_15, LL_ADC_SINGLE_ENDED);
|
|||
|
|
|
|||
|
|
Sample_ReOpen();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><DFBB><EFBFBD><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>иú<D0B8><C3BA><EFBFBD>
|
|||
|
|
void Sample_ReOpen()
|
|||
|
|
{
|
|||
|
|
// ADCӲ<43><D3B2>У<EFBFBD><D0A3>
|
|||
|
|
VCC_SENSOR_5V_ON();
|
|||
|
|
delay_ms(50);
|
|||
|
|
LL_ADC_StartCalibration(ADC1, LL_ADC_SINGLE_ENDED);
|
|||
|
|
while(LL_ADC_IsCalibrationOnGoing(ADC1));
|
|||
|
|
VCC_SENSOR_5V_OFF();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void Sample_Task(void *p_arg)
|
|||
|
|
{
|
|||
|
|
uint16_t adc1, adc2;
|
|||
|
|
data_dtu_t dtuSample;
|
|||
|
|
data_sample_t sample;
|
|||
|
|
uint32_t sample_time;
|
|||
|
|
// ÿ<><C3BF>8Сʱ<D0A1><CAB1>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><D5A3>ϵ<EFBFBD><CFB5><EFBFBD>һ<EFBFBD>β<EFBFBD><CEB2>⣩
|
|||
|
|
uint32_t vacuum_seconds = 30, vaccuumTick = 0;
|
|||
|
|
uint8_t lastLeakWarning = 0;
|
|||
|
|
|
|||
|
|
int16_t i;
|
|||
|
|
uint32_t u32Sample;
|
|||
|
|
static uint8_t charging = 0; // <20><>¼<EFBFBD><C2BC>װ״̬
|
|||
|
|
static uint32_t lowest_Sample = 0xFFFFFFFFul; // <20><>¼Һλ<D2BA><CEBB><EFBFBD>͵㣺<CDB5><E3A3BA>ֵΪ<D6B5><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϳ<D0B6>װ<EFBFBD><D7B0>ʼ<EFBFBD><CABC>
|
|||
|
|
static uint32_t highest_Sample = 0; // <20><>¼Һλ<D2BA><CEBB><EFBFBD>ߵ㣺<DFB5><E3A3BA>ֵΪ<D6B5><CEAA>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϳ<D0B6>װ<EFBFBD><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
static uint8_t stopGrowCount = 0; // <20><>¼Һλֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
|
|||
|
|
static uint32_t last_SampleTime = 0; // <20><>¼<EFBFBD><C2BC>װ<EFBFBD>б<EFBFBD><D0B1><EFBFBD>ʱ<EFBFBD>䣨<EFBFBD><E4A3A8><EFBFBD><EFBFBD>ʱ<EFBFBD>䲻<EFBFBD>ܹ<EFBFBD><DCB9>̣<EFBFBD>
|
|||
|
|
uint32_t totalSeconds;
|
|||
|
|
static uint32_t last_volumePct = 0; // <20><>¼<EFBFBD>ϴε<CFB4>Һλ
|
|||
|
|
static uint16_t last_Press = 0;
|
|||
|
|
static int16_t last_Tempr = -300;
|
|||
|
|
static uint16_t last_Vacuum = 0;
|
|||
|
|
S_RTC_TIME_DATA_T sRTC;
|
|||
|
|
|
|||
|
|
// TTSЭ<53><D0AD>
|
|||
|
|
static uint32_t last_spanPct[20] = {0}; // <20><>¼<EFBFBD>ϴα仯<CEB1><E4BBAF><EFBFBD>İٷֱȻ<D6B1><C8BB><EFBFBD>
|
|||
|
|
static uint32_t last_spanTime[20] = {0}; // <20><>¼<EFBFBD>ϴα仯<CEB1><E4BBAF><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
static uint8_t last_spanCount = 0; // <20><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>
|
|||
|
|
uint32_t span;
|
|||
|
|
|
|||
|
|
static uint8_t first = 1;
|
|||
|
|
|
|||
|
|
// <20><>Զ<EFBFBD><D4B6><EFBFBD>壺<EFBFBD><E5A3BA><EFBFBD><EFBFBD><EFBFBD>жϷ<D0B6><CFB7>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD>: <20><><EFBFBD>ŷ<EFBFBD>Ĭ<EFBFBD>ϴ<EFBFBD><CFB4><EFBFBD>
|
|||
|
|
if(dcBuff.powerInfo.hardVer.major == 231)
|
|||
|
|
KZ_VALUE_ENABLE();
|
|||
|
|
|
|||
|
|
while(1)
|
|||
|
|
{
|
|||
|
|
// <20>ȴ<EFBFBD><C8B4>ɼ<EFBFBD><C9BC>ź<EFBFBD>
|
|||
|
|
xSemaphoreTake(Sample_Semaphore, portMAX_DELAY);
|
|||
|
|
|
|||
|
|
if(!IS_VCC_SENSOR_5V_ON())
|
|||
|
|
{
|
|||
|
|
VCC_SENSOR_5V_ON();
|
|||
|
|
// <20><>ʱ1s<31>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD>
|
|||
|
|
osDelay(1500);
|
|||
|
|
}
|
|||
|
|
// <20><>һ<EFBFBD>Σ<D7B6><CEA3>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Sample_phase = 1;
|
|||
|
|
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
|
|||
|
|
RTC_GetDateAndTime(&sRTC);
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴ<EFBFBD>gps<70><73>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
|||
|
|
sample_time = Calc_SecondsFromYear(INITIAL_YEAR, sRTC.u32Year, sRTC.u32Month, sRTC.u32Day,
|
|||
|
|
sRTC.u32Hour, sRTC.u32Minute, sRTC.u32Second);
|
|||
|
|
|
|||
|
|
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
memset(&sample, 0, sizeof(sample));
|
|||
|
|
memset(&dtuSample, 0, sizeof(dtuSample));
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ô<EFBFBD><C3B4><EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
sample.staExtPress[0].status = SENSOR_STATUS_NOCONNECT;
|
|||
|
|
sample.staExtPress[1].status = SENSOR_STATUS_NOCONNECT;
|
|||
|
|
sample.staExtPress[2].status = SENSOR_STATUS_NOCONNECT;
|
|||
|
|
sample.staExtTempr[0].status = SENSOR_STATUS_NOCONNECT;
|
|||
|
|
sample.staExtTempr[1].status = SENSOR_STATUS_NOCONNECT;
|
|||
|
|
sample.staExtTempr[2].status = SENSOR_STATUS_NOCONNECT;
|
|||
|
|
// Modbus<75><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
sample.vacuum[0] = dcBuff.sampleData.vacuum[0];
|
|||
|
|
sample.leak = dcBuff.sampleData.leak;
|
|||
|
|
sample.flow = dcBuff.sampleData.flow;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|||
|
|
Calculate_Theoretical_Params();
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ڲɼ<DAB2><C9BC><EFBFBD><EFBFBD>ռƵ<D5BC><C6B5><EFBFBD>ʱ
|
|||
|
|
vaccuumTick = GetDelayTick(15000);
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>ADC
|
|||
|
|
LL_ADC_Enable(ADC1);
|
|||
|
|
while(!LL_ADC_IsActiveFlag_ADRDY(ADC1));
|
|||
|
|
osDelay(10);
|
|||
|
|
|
|||
|
|
// <20>ɼ<EFBFBD><C9BC><EFBFBD>ѹͨ<D1B9><CDA8>
|
|||
|
|
|
|||
|
|
sample.adDPress = Sample_ChannelOne(LL_ADC_CHANNEL_5);
|
|||
|
|
|
|||
|
|
sample.adPress = Sample_ChannelOne(LL_ADC_CHANNEL_6);
|
|||
|
|
|
|||
|
|
sample.adWeight = Sample_ChannelOne(LL_ADC_CHANNEL_7);
|
|||
|
|
|
|||
|
|
VCC_SENSOR_5V_OFF();
|
|||
|
|
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD>ѹ
|
|||
|
|
if(DS2788_ReadBattery(&dtuSample))
|
|||
|
|
{
|
|||
|
|
dcBuff.dtuData.batLow = dtuSample.batLow;
|
|||
|
|
dcBuff.dtuData.batCurrent = dtuSample.batCurrent;
|
|||
|
|
dcBuff.dtuData.batPct = dtuSample.batPct;
|
|||
|
|
dcBuff.dtuData.batCapa = dtuSample.batCapa;
|
|||
|
|
dcBuff.dtuData.batMaxCapa = dtuSample.batMaxCapa;
|
|||
|
|
dcBuff.dtuData.batTempr = dtuSample.batTempr;
|
|||
|
|
dcBuff.dtuData.batVoltage = dtuSample.batVoltage;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
// if(!dcBuff.configDisplay.op_USE_CAPACITY_SENSOR)
|
|||
|
|
{
|
|||
|
|
// <20><>ѹֵ
|
|||
|
|
sample.staDPress.status = ADC_Validate(sample.adDPress,
|
|||
|
|
dcBuff.configSensor.sensorDPress.zeroValue, dcBuff.configSensor.sensorDPress.fullValue);
|
|||
|
|
if(sample.staDPress.status == SENSOR_STATUS_NORMAL)
|
|||
|
|
{
|
|||
|
|
sample.diff = ADC_Calculate(sample.adDPress,
|
|||
|
|
dcBuff.configSensor.sensorDPress.zeroValue, dcBuff.configSensor.sensorDPress.fullValue,
|
|||
|
|
dcBuff.configSensor.sensorDPress.lowRange, dcBuff.configSensor.sensorDPress.highRange);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
sample.staPress.status = ADC_Validate(sample.adPress,
|
|||
|
|
dcBuff.configSensor.sensorPress.zeroValue, dcBuff.configSensor.sensorPress.fullValue);
|
|||
|
|
if(sample.staPress.status == SENSOR_STATUS_NORMAL)
|
|||
|
|
{
|
|||
|
|
sample.pressure = ADC_Calculate(sample.adPress,
|
|||
|
|
dcBuff.configSensor.sensorPress.zeroValue, dcBuff.configSensor.sensorPress.fullValue,
|
|||
|
|
dcBuff.configSensor.sensorPress.lowRange, dcBuff.configSensor.sensorPress.highRange);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20>Ƿɼ<F1B5BDB2>ʱ<EFBFBD>䣨2<E4A3A8><32><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
if(Config_Vacuum_Request || sample_time + 2 >= vacuum_seconds)
|
|||
|
|
{
|
|||
|
|
if(!Config_Vacuum_Request)
|
|||
|
|
{
|
|||
|
|
// <20>´<EFBFBD><C2B4>ϴ<EFBFBD>ʱ<EFBFBD>ٲ<EFBFBD>
|
|||
|
|
vacuum_seconds = sample_time + dcBuff.configData.intervalTrans;
|
|||
|
|
}
|
|||
|
|
Config_Vacuum_Request = 0;
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
// // <20><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// if(dcBuff.configDisplay.op_USE_CAPACITY_SENSOR && sample.staDPress.status != SENSOR_STATUS_NOCONNECT)
|
|||
|
|
// {
|
|||
|
|
// if(sample.adDPress == 0xFFFF) // <20><>·
|
|||
|
|
// sample.staDPress.status = SENSOR_STATUS_OVERFLOW;
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// // <20><><EFBFBD>ݵ<DDB5><D7B5>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>״̬
|
|||
|
|
// sample.staDPress.status = ADC_Validate(sample.diff * 10,
|
|||
|
|
// dcBuff.configSensor.sensorCap.baseC, dcBuff.configSensor.sensorCap.baseC + dcBuff.configSensor.sensorCap.refC);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ݻ<EFBFBD>
|
|||
|
|
// sample.volumeTotal = Theoretical_Param.v;
|
|||
|
|
|
|||
|
|
// if(dcBuff.configBottle.measureType == MEASURE_DPRESS && sample.staDPress.status == SENSOR_STATUS_NORMAL)
|
|||
|
|
// {
|
|||
|
|
// if(!dcBuff.configDisplay.op_USE_CAPACITY_SENSOR)
|
|||
|
|
// {
|
|||
|
|
// // Һλ
|
|||
|
|
// if(!dcBuff.configDisplay.op_USE_HEIGHT_LEVEL && !dcBuff.configDisplay.op_USE_PCT_LEVEL)
|
|||
|
|
// sample.height = Diff2Level(sample.diff); // <20><>λmm
|
|||
|
|
// else if(!dcBuff.configDisplay.op_USE_PCT_LEVEL)
|
|||
|
|
// sample.height = sample.diff; // ֱ<>Ӳ<EFBFBD><D3B2><EFBFBD>Һλ<D2BA>߶ȣ<DFB6><C8A3><EFBFBD>λmm
|
|||
|
|
// else
|
|||
|
|
// sample.height = sample.diff * 100; // ֱ<>Ӳ<EFBFBD><D3B2><EFBFBD>Һλ<D2BA>ٷֱȣ<D6B1><C8A3><EFBFBD>λ0.01%
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// // <20><><EFBFBD>ݵ<DDB5><D7B5>ݡ<EFBFBD><DDA1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><DDBC><EFBFBD>Һλ<D2BA>߶<EFBFBD>
|
|||
|
|
// sample.height = Cap_Calculate(sample.diff * 10,
|
|||
|
|
// dcBuff.configSensor.sensorCap.baseC, dcBuff.configSensor.sensorCap.refC);
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
// if(!dcBuff.configDisplay.op_USE_PCT_LEVEL && dcBuff.configSensor.levelOutMMWC == 0)
|
|||
|
|
// {
|
|||
|
|
// // <20><><EFBFBD><EFBFBD>
|
|||
|
|
// sample.volume = Level2Vol(sample.height);
|
|||
|
|
// // <20><><EFBFBD><EFBFBD>
|
|||
|
|
// sample.weight = Vol2Quantity(sample.volume);
|
|||
|
|
// // <20><>װ<EFBFBD><D7B0>
|
|||
|
|
// if(sample.volume >= Theoretical_Param.ve)
|
|||
|
|
// sample.volumePct = dcBuff.configBottle.chargePct * 100;
|
|||
|
|
// else
|
|||
|
|
// sample.volumePct = (float) sample.volume / sample.volumeTotal * 10000;
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// if(dcBuff.configSensor.levelOutMMWC > 0)
|
|||
|
|
// {
|
|||
|
|
// // <20><>װ<EFBFBD><D7B0>
|
|||
|
|
// if(KPa2mmH2O(sample.diff) >= dcBuff.configSensor.levelOutMMWC)
|
|||
|
|
// sample.volumePct = dcBuff.configBottle.chargePct * 100;
|
|||
|
|
// else
|
|||
|
|
// sample.volumePct = KPa2mmH2O(sample.diff) / dcBuff.configSensor.levelOutMMWC * 10000;
|
|||
|
|
// }
|
|||
|
|
// else
|
|||
|
|
// {
|
|||
|
|
// // <20><>װ<EFBFBD><D7B0>
|
|||
|
|
// if(sample.diff >= dcBuff.configBottle.chargePct)
|
|||
|
|
// sample.volumePct = dcBuff.configBottle.chargePct * 100;
|
|||
|
|
// else
|
|||
|
|
// sample.volumePct = sample.diff * 100;
|
|||
|
|
// }
|
|||
|
|
// // <20><><EFBFBD><EFBFBD>
|
|||
|
|
// sample.volume = Theoretical_Param.ve * (sample.volumePct / 10000.0);
|
|||
|
|
// // <20><><EFBFBD><EFBFBD>
|
|||
|
|
// sample.weight = Vol2Quantity(sample.volume);
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD><EFBFBD>磬<EFBFBD><E7A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⱨ<EFBFBD><E2B1A8><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ʼ״̬
|
|||
|
|
if(!VCC_POWER_STATUS() || (dcBuff.configDisplay.op_USE_SOLAR && dcBuff.dtuData.batVoltage <= 4500))
|
|||
|
|
{
|
|||
|
|
KZ_ALARM_OFF();
|
|||
|
|
KZ_LOW_ALARM_OFF();
|
|||
|
|
|
|||
|
|
Alarm_Output = 0;
|
|||
|
|
Low_Alarm_Output = 0;
|
|||
|
|
Leak_Alarm_Output = 0;
|
|||
|
|
Press_Alarm_Output = 0;
|
|||
|
|
Low_Press_Alarm_Output = 0;
|
|||
|
|
ExtPress_Alarm_Output = 0;
|
|||
|
|
Low_ExtPress_Alarm_Output = 0;
|
|||
|
|
|
|||
|
|
Alarm_Enabled = 1;
|
|||
|
|
Low_Alarm_Enabled = 1;
|
|||
|
|
Leak_Alarm_Enabled = 1;
|
|||
|
|
Press_Alarm_Enabled = 1;
|
|||
|
|
Low_Press_Alarm_Enabled = 1;
|
|||
|
|
ExtPress_Alarm_Enabled = 1;
|
|||
|
|
Low_ExtPress_Alarm_Enabled = 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
if(dcBuff.configBottle.fullPct > dcBuff.configBottle.emptyPct)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
if( sample.diff>dcBuff.configBottle.fullPct)
|
|||
|
|
{
|
|||
|
|
sample.warnning |= 0x01;
|
|||
|
|
printf("\n*** fullPct warnning ***\n");
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
sample.warnning &= 0x0e;
|
|||
|
|
}
|
|||
|
|
if( sample.diff<dcBuff.configBottle.emptyPct)
|
|||
|
|
{
|
|||
|
|
sample.warnning |= 0x02;
|
|||
|
|
|
|||
|
|
printf("\n*** emptyPct warnning ***\n");
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
sample.warnning &= 0x0d;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
sample.warnning &= 0x0c;
|
|||
|
|
}
|
|||
|
|
if((sample.staPress.status == SENSOR_STATUS_NORMAL)&&(dcBuff.configBottle.warnPressH > dcBuff.configBottle.warnPress))
|
|||
|
|
{
|
|||
|
|
if(dcBuff.configBottle.warnPress > 0 && sample.pressure < dcBuff.configBottle.warnPress)
|
|||
|
|
{
|
|||
|
|
|
|||
|
|
sample.warnning |= 0x04;
|
|||
|
|
printf("\n*** warnPress warnning ***\n");
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
sample.warnning &= 0x0b;
|
|||
|
|
}
|
|||
|
|
if(dcBuff.configBottle.warnPressH > 0 && sample.pressure > dcBuff.configBottle.warnPressH)
|
|||
|
|
{
|
|||
|
|
sample.warnning |= 0x08;
|
|||
|
|
printf("\n*** warnPressH warnning ***\n");
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
sample.warnning &= 0x07;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
sample.warnning &= 0x03;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
// // <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>¶ȱ<C2B6><C8B1><EFBFBD>
|
|||
|
|
// if(dcBuff.configBottle.serverVer != 3 && !dcBuff.configDisplay.op_LEVEL_SENSOR_ONLY)
|
|||
|
|
// {
|
|||
|
|
// if(sample.staExtTempr[0].status == SENSOR_STATUS_NORMAL)
|
|||
|
|
// {
|
|||
|
|
// if(dcBuff.configBottle.warnTempr > -300 && last_Tempr > dcBuff.configBottle.warnTempr && sample.extTempr[0] <= dcBuff.configBottle.warnTempr)
|
|||
|
|
// sample.warnning = 1;
|
|||
|
|
// if(dcBuff.configBottle.warnTemprH > -300 && last_Tempr < dcBuff.configBottle.warnTemprH && sample.extTempr[0] >= dcBuff.configBottle.warnTemprH)
|
|||
|
|
// sample.warnning = 1;
|
|||
|
|
|
|||
|
|
// // <20><>¼<EFBFBD>ɼ<EFBFBD>ֵ
|
|||
|
|
// last_Tempr = sample.extTempr[0];
|
|||
|
|
// }
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
|
|||
|
|
// д<><D0B4>ȫ<EFBFBD>ֻ<EFBFBD><D6BB>壨<EFBFBD><E5A3A8><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// if(dcBuff.sampleData.warnning)
|
|||
|
|
// sample.warnning = 1;
|
|||
|
|
dcBuff.sampleData = sample;
|
|||
|
|
|
|||
|
|
// <20><>ֹADC
|
|||
|
|
LL_ADC_Disable(ADC1);
|
|||
|
|
|
|||
|
|
// ֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
GPRS_semSampled = 1;
|
|||
|
|
// ֪ͨ<CDA8><D6AA>ʾ<EFBFBD><CABE><EFBFBD>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Config_Sample_Request = 0;
|
|||
|
|
// ֪ͨ<CDA8><D6AA>ʾ<EFBFBD><CABE>: ˢ<><CBA2>
|
|||
|
|
xSemaphoreGive(Key_Semaphore); //Form_Refresh(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><CEB4><EFBFBD><EFBFBD><EFBFBD>⣬<EFBFBD>п<EFBFBD><D0BF>ܳ<EFBFBD>ͻ
|
|||
|
|
// ˢ<>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
// DAC7311_Refresh();
|
|||
|
|
|
|||
|
|
/* Get the conversion result */
|
|||
|
|
if(!dcBuff.configDisplay.op_USE_CAPACITY_SENSOR)
|
|||
|
|
printf("\nConversion result of diff: \t\t%02X, %.1f kPa", sample.staDPress.status, sample.diff);
|
|||
|
|
else
|
|||
|
|
printf("\nConversion result of capa: \t\t%02X, %.1f pF", sample.staDPress.status, sample.diff);
|
|||
|
|
// printf("\nConversion result of press: \t\t%02X, %.2f MPa", sample.staPress.status, (float) sample.pressure / 1000);
|
|||
|
|
// for(i = 0; i < 0; i++)
|
|||
|
|
// printf("\nConversion result of extPress[%d]: \t%02X, %.2f MPa", i, sample.staExtPress[i].status, (float) sample.extPressure[i] / 1000);
|
|||
|
|
// for(i = 0; i < 2; i++)
|
|||
|
|
// printf("\nConversion result of extTempr[%d]: \t%02X, %d <20><>", i, sample.staExtTempr[i].status, sample.extTempr[i]);
|
|||
|
|
|
|||
|
|
printf("\nConversion result of height: \t\t%.1f mm", sample.height);
|
|||
|
|
// printf("\nConversion result of volTol: \t\t%u L", sample.volumeTotal);
|
|||
|
|
// printf("\nConversion result of volume: \t\t%u L", sample.volume);
|
|||
|
|
printf("\nConversion result of volPct: \t\t%.2f %%", (float) sample.volumePct / 100);
|
|||
|
|
printf("\nConversion result of charging: \t\t%d", sample.charging);
|
|||
|
|
|
|||
|
|
// printf("\nConversion result of staVacuum: \t%u", sample.vacuum[0].staVacuum);
|
|||
|
|
// printf("\nConversion result of lifeVacuum: \t%u Months", sample.vacuum[0].lifeVacuum);
|
|||
|
|
printf("\nConversion result of vacuum: \t\t%.2f Pa", sample.vacuum[0].vacuum);
|
|||
|
|
// printf("\nConversion result of rateVacuum: \t%.2f Pa.M3/s", sample.vacuum[0].rateVacuum);
|
|||
|
|
// printf("\nConversion result of typeLeak: \t\t%u", sample.leak.typeLeak);
|
|||
|
|
// printf("\nConversion result of staLeak: \t\t%u", sample.leak.staLeak);
|
|||
|
|
printf("\nConversion result of concentrations: \t%u %%", sample.leak.concentrations);
|
|||
|
|
printf("\n");
|
|||
|
|
|
|||
|
|
if(first)
|
|||
|
|
{
|
|||
|
|
first = 0;
|
|||
|
|
|
|||
|
|
// <20><><EFBFBD>ϲɼ<CFB2><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Config_Vacuum_Request = 1;
|
|||
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
xSemaphoreGive(Sample_Semaphore);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// <20>ɼ<EFBFBD><C9BC><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
Sample_phase = 0;
|
|||
|
|
osDelay(1000);
|
|||
|
|
}
|
|||
|
|
}
|