512 lines
21 KiB
C
512 lines
21 KiB
C
|
|
#include "DpcTask.h"
|
||
|
|
#include "OutPutGpioTask.h"
|
||
|
|
#include "WatchdogTask.h"
|
||
|
|
#include "McuBspUart.h"
|
||
|
|
#include "FileSysTask.h"
|
||
|
|
#include "McuBspAdc.h"
|
||
|
|
|
||
|
|
#include <stdio.h>
|
||
|
|
#include <string.h>
|
||
|
|
#include <stdlib.h>
|
||
|
|
#include <math.h>
|
||
|
|
|
||
|
|
#include <cpu.h>
|
||
|
|
#include <os.h>
|
||
|
|
|
||
|
|
#define TASK_DPC_UART_ID MCU_BSP_UART3
|
||
|
|
#define TASK_DPC_UART_BANDRATE MCU_BSP_UART_BANDRATE_9600
|
||
|
|
#define TASK_DPC_UART_DATABIT MCU_BSP_UART_DATABIT_8
|
||
|
|
#define TASK_DPC_UART_STOPBIT MCU_BSP_UART_STOPBIT_ONE
|
||
|
|
#define TASK_DPC_UART_CHECKBIT MCU_BSP_UART_CHECKBIT_NONE
|
||
|
|
|
||
|
|
#define TASK_DPC_DATA_IDLING 0 // 空闲态
|
||
|
|
#define TASK_DPC_DATA_SORTING 1 // 分拣态
|
||
|
|
#define TASK_DPC_DATA_HANDLING 2 // 处理态
|
||
|
|
|
||
|
|
#define TASK_DPC_GND_CTRL_GPIO GPIO_PORTL_BASE
|
||
|
|
#define TASK_DPC_GND_CTRL_PIN GPIO_PIN_4
|
||
|
|
#define TASK_DPC_GND_CTRL_CLK SYSCTL_PERIPH_GPIOL
|
||
|
|
|
||
|
|
#define TASK_DPC_375GND1_CTRL_GPIO GPIO_PORTN_BASE
|
||
|
|
#define TASK_DPC_375GND1_CTRL_PIN GPIO_PIN_3
|
||
|
|
#define TASK_DPC_375GND1_CTRL_CLK SYSCTL_PERIPH_GPION
|
||
|
|
|
||
|
|
#define TASK_DPC_375GND2_CTRL_GPIO GPIO_PORTN_BASE
|
||
|
|
#define TASK_DPC_375GND2_CTRL_PIN GPIO_PIN_4
|
||
|
|
#define TASK_DPC_375GND2_CTRL_CLK SYSCTL_PERIPH_GPION
|
||
|
|
|
||
|
|
#define TASK_DPC_48GND1_CTRL_GPIO GPIO_PORTN_BASE
|
||
|
|
#define TASK_DPC_48GND1_CTRL_PIN GPIO_PIN_1
|
||
|
|
#define TASK_DPC_48GND1_CTRL_CLK SYSCTL_PERIPH_GPION
|
||
|
|
|
||
|
|
#define TASK_DPC_48GND2_CTRL_GPIO GPIO_PORTN_BASE
|
||
|
|
#define TASK_DPC_48GND2_CTRL_PIN GPIO_PIN_2
|
||
|
|
#define TASK_DPC_48GND2_CTRL_CLK SYSCTL_PERIPH_GPION
|
||
|
|
|
||
|
|
#define TASK_DPC_24GND1_CTRL_GPIO GPIO_PORTP_BASE
|
||
|
|
#define TASK_DPC_24GND1_CTRL_PIN GPIO_PIN_5
|
||
|
|
#define TASK_DPC_24GND1_CTRL_CLK SYSCTL_PERIPH_GPIOP
|
||
|
|
|
||
|
|
#define TASK_DPC_24GND2_CTRL_GPIO GPIO_PORTN_BASE
|
||
|
|
#define TASK_DPC_24GND2_CTRL_PIN GPIO_PIN_0
|
||
|
|
#define TASK_DPC_24GND2_CTRL_CLK SYSCTL_PERIPH_GPION
|
||
|
|
|
||
|
|
#define TASK_DPC_12GND1_CTRL_GPIO GPIO_PORTP_BASE
|
||
|
|
#define TASK_DPC_12GND1_CTRL_PIN GPIO_PIN_3
|
||
|
|
#define TASK_DPC_12GND1_CTRL_CLK SYSCTL_PERIPH_GPIOP
|
||
|
|
|
||
|
|
#define TASK_DPC_12GND2_CTRL_GPIO GPIO_PORTP_BASE
|
||
|
|
#define TASK_DPC_12GND2_CTRL_PIN GPIO_PIN_4
|
||
|
|
#define TASK_DPC_12GND2_CTRL_CLK SYSCTL_PERIPH_GPIOP
|
||
|
|
|
||
|
|
#define TASK_DPC_CO2_INPUT_GPIO GPIO_PORTM_BASE
|
||
|
|
#define TASK_DPC_CO2_INPUT_PIN GPIO_PIN_7
|
||
|
|
#define TASK_DPC_CO2_INPUT_CLK SYSCTL_PERIPH_GPIOM
|
||
|
|
|
||
|
|
#define TASK_DPC_CTD_INPUT_GPIO GPIO_PORTM_BASE
|
||
|
|
#define TASK_DPC_CTD_INPUT_PIN GPIO_PIN_6
|
||
|
|
#define TASK_DPC_CTD_INPUT_CLK SYSCTL_PERIPH_GPIOM
|
||
|
|
|
||
|
|
#define TASK_DPC_UV1_INPUT_GPIO GPIO_PORTM_BASE
|
||
|
|
#define TASK_DPC_UV1_INPUT_PIN GPIO_PIN_5
|
||
|
|
#define TASK_DPC_UV1_INPUT_CLK SYSCTL_PERIPH_GPIOM
|
||
|
|
|
||
|
|
#define TASK_DPC_UV2_INPUT_GPIO GPIO_PORTM_BASE
|
||
|
|
#define TASK_DPC_UV2_INPUT_PIN GPIO_PIN_4
|
||
|
|
#define TASK_DPC_UV2_INPUT_CLK SYSCTL_PERIPH_GPIOM
|
||
|
|
|
||
|
|
#define TASK_DPC_UV3_INPUT_GPIO GPIO_PORTB_BASE
|
||
|
|
#define TASK_DPC_UV3_INPUT_PIN GPIO_PIN_2
|
||
|
|
#define TASK_DPC_UV3_INPUT_CLK SYSCTL_PERIPH_GPIOB
|
||
|
|
|
||
|
|
#define TASK_DPC_UV4_INPUT_GPIO GPIO_PORTB_BASE
|
||
|
|
#define TASK_DPC_UV4_INPUT_PIN GPIO_PIN_3
|
||
|
|
#define TASK_DPC_UV4_INPUT_CLK SYSCTL_PERIPH_GPIOB
|
||
|
|
|
||
|
|
#define TASK_DPC_375GND1_ADC_ID MCU_BSP_ADC0
|
||
|
|
#define TASK_DPC_375GND2_ADC_ID MCU_BSP_ADC1
|
||
|
|
#define TASK_DPC_375V_VADC_ID MCU_BSP_ADC11
|
||
|
|
#define TASK_DPC_375V_IADC_ID MCU_BSP_ADC10
|
||
|
|
|
||
|
|
#define TASK_DPC_48GND1_ADC_ID MCU_BSP_ADC2
|
||
|
|
#define TASK_DPC_48GND2_ADC_ID MCU_BSP_ADC3
|
||
|
|
#define TASK_DPC_48V_VADC_ID MCU_BSP_ADC9
|
||
|
|
#define TASK_DPC_48V_IADC_ID MCU_BSP_ADC8
|
||
|
|
|
||
|
|
#define TASK_DPC_24GND1_ADC_ID MCU_BSP_ADC16
|
||
|
|
#define TASK_DPC_24GND2_ADC_ID MCU_BSP_ADC17
|
||
|
|
|
||
|
|
#define TASK_DPC_12GND1_ADC_ID MCU_BSP_ADC18
|
||
|
|
#define TASK_DPC_12GND2_ADC_ID MCU_BSP_ADC19
|
||
|
|
#define TASK_DPC_12V_VADC_ID MCU_BSP_ADC5
|
||
|
|
#define TASK_DPC_12V_IADC_ID MCU_BSP_ADC4
|
||
|
|
|
||
|
|
#define TASK_DPC_VEDIO_V_ID MCU_BSP_ADC7
|
||
|
|
#define TASK_DPC_VEDIO_I_ID MCU_BSP_ADC6
|
||
|
|
|
||
|
|
#define STATUS_RUN_ASK_CMD "AABB\n"
|
||
|
|
#define RESTART_ASK_CMD "CCDD\n"
|
||
|
|
#define STATUS_OUTPUT_ASK_CMD "EEFF\n"
|
||
|
|
|
||
|
|
#define TASK_DPC_375GND_ID 1
|
||
|
|
#define TASK_DPC_48GND_ID 2
|
||
|
|
#define TASK_DPC_24GND_ID 3
|
||
|
|
#define TASK_DPC_12GND_ID 4
|
||
|
|
|
||
|
|
typedef struct {
|
||
|
|
uint8_t RecvBuf[32];
|
||
|
|
uint16_t RecvCount;
|
||
|
|
uint16_t RecvStatus;
|
||
|
|
} DPC_RECVDATA;
|
||
|
|
|
||
|
|
typedef struct {
|
||
|
|
uint32_t Status;
|
||
|
|
float V375;
|
||
|
|
float I375;
|
||
|
|
float V48;
|
||
|
|
float I48;
|
||
|
|
float V12;
|
||
|
|
float I12;
|
||
|
|
float G375;
|
||
|
|
float G48;
|
||
|
|
float G24;
|
||
|
|
float G12;
|
||
|
|
uint8_t G375Sta;
|
||
|
|
uint8_t G48Sta;
|
||
|
|
uint8_t G24Sta;
|
||
|
|
uint8_t G12Sta;
|
||
|
|
} RUN_ASK_DATA;
|
||
|
|
|
||
|
|
typedef struct {
|
||
|
|
uint32_t Status;
|
||
|
|
uint8_t CO2In;
|
||
|
|
uint8_t CTDIn;
|
||
|
|
uint8_t UV1In;
|
||
|
|
uint8_t UV2In;
|
||
|
|
uint8_t UV3In;
|
||
|
|
uint8_t UV4In;
|
||
|
|
float VedioV;
|
||
|
|
float VedioI;
|
||
|
|
} OUTOUT_ASK_STATUS;
|
||
|
|
|
||
|
|
static int gTaskDpcId = -1; // 与下位机通信的看门狗事件ID
|
||
|
|
|
||
|
|
static DPC_RECVDATA gDpcUartBuf[10] = {{0}};
|
||
|
|
static RUN_ASK_DATA gDpcRunAskData = {0};
|
||
|
|
static OUTOUT_ASK_STATUS gDpcOutputAskData = {0};
|
||
|
|
|
||
|
|
static int gTaskDpcRunEnable = 0;
|
||
|
|
static int gTaskDpcOutputEnable = 0;
|
||
|
|
|
||
|
|
static char gTaskDpcSendBuf[1024] = {0};
|
||
|
|
|
||
|
|
static void TaskDpcUartRecvCallback(unsigned char rData);
|
||
|
|
/* 清除接收buf */
|
||
|
|
static void TaskUpcCommClearDataStatus(uint8_t CountId);
|
||
|
|
static void TaskDpcGndCtrl(int flag);
|
||
|
|
static void TaskDpcGndGet(uint8_t DpcGndId);
|
||
|
|
static void TaskDpcSend(void);
|
||
|
|
|
||
|
|
void TaskDpcInit(void)
|
||
|
|
{
|
||
|
|
McuBspAdcInit();
|
||
|
|
SysCtlPeripheralEnable(TASK_DPC_GND_CTRL_CLK);
|
||
|
|
GPIODirModeSet(TASK_DPC_GND_CTRL_GPIO, TASK_DPC_GND_CTRL_PIN, GPIO_DIR_MODE_OUT);
|
||
|
|
GPIOPadConfigSet(TASK_DPC_GND_CTRL_GPIO, TASK_DPC_GND_CTRL_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
|
||
|
|
GPIOPinWrite(TASK_DPC_GND_CTRL_GPIO, TASK_DPC_GND_CTRL_PIN, ~TASK_DPC_GND_CTRL_PIN);
|
||
|
|
|
||
|
|
SysCtlPeripheralEnable(TASK_DPC_375GND1_CTRL_CLK);
|
||
|
|
GPIODirModeSet(TASK_DPC_375GND1_CTRL_GPIO, TASK_DPC_375GND1_CTRL_PIN, GPIO_DIR_MODE_OUT);
|
||
|
|
GPIOPadConfigSet(TASK_DPC_375GND1_CTRL_GPIO, TASK_DPC_375GND1_CTRL_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
|
||
|
|
GPIOPinWrite(TASK_DPC_375GND1_CTRL_GPIO, TASK_DPC_375GND1_CTRL_PIN, ~TASK_DPC_375GND1_CTRL_PIN);
|
||
|
|
|
||
|
|
SysCtlPeripheralEnable(TASK_DPC_375GND2_CTRL_CLK);
|
||
|
|
GPIODirModeSet(TASK_DPC_375GND2_CTRL_GPIO, TASK_DPC_375GND2_CTRL_PIN, GPIO_DIR_MODE_OUT);
|
||
|
|
GPIOPadConfigSet(TASK_DPC_375GND2_CTRL_GPIO, TASK_DPC_375GND2_CTRL_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
|
||
|
|
GPIOPinWrite(TASK_DPC_375GND2_CTRL_GPIO, TASK_DPC_375GND2_CTRL_PIN, ~TASK_DPC_375GND2_CTRL_PIN);
|
||
|
|
|
||
|
|
SysCtlPeripheralEnable(TASK_DPC_48GND1_CTRL_CLK);
|
||
|
|
GPIODirModeSet(TASK_DPC_48GND1_CTRL_GPIO, TASK_DPC_48GND1_CTRL_PIN, GPIO_DIR_MODE_OUT);
|
||
|
|
GPIOPadConfigSet(TASK_DPC_48GND1_CTRL_GPIO, TASK_DPC_48GND1_CTRL_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
|
||
|
|
GPIOPinWrite(TASK_DPC_48GND1_CTRL_GPIO, TASK_DPC_48GND1_CTRL_PIN, ~TASK_DPC_48GND1_CTRL_PIN);
|
||
|
|
|
||
|
|
SysCtlPeripheralEnable(TASK_DPC_48GND2_CTRL_CLK);
|
||
|
|
GPIODirModeSet(TASK_DPC_48GND2_CTRL_GPIO, TASK_DPC_48GND2_CTRL_PIN, GPIO_DIR_MODE_OUT);
|
||
|
|
GPIOPadConfigSet(TASK_DPC_48GND2_CTRL_GPIO, TASK_DPC_48GND2_CTRL_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
|
||
|
|
GPIOPinWrite(TASK_DPC_48GND2_CTRL_GPIO, TASK_DPC_48GND2_CTRL_PIN, ~TASK_DPC_48GND2_CTRL_PIN);
|
||
|
|
|
||
|
|
SysCtlPeripheralEnable(TASK_DPC_24GND1_CTRL_CLK);
|
||
|
|
GPIODirModeSet(TASK_DPC_24GND1_CTRL_GPIO, TASK_DPC_24GND1_CTRL_PIN, GPIO_DIR_MODE_OUT);
|
||
|
|
GPIOPadConfigSet(TASK_DPC_24GND1_CTRL_GPIO, TASK_DPC_24GND1_CTRL_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
|
||
|
|
GPIOPinWrite(TASK_DPC_24GND1_CTRL_GPIO, TASK_DPC_24GND1_CTRL_PIN, ~TASK_DPC_24GND1_CTRL_PIN);
|
||
|
|
|
||
|
|
SysCtlPeripheralEnable(TASK_DPC_24GND2_CTRL_CLK);
|
||
|
|
GPIODirModeSet(TASK_DPC_24GND2_CTRL_GPIO, TASK_DPC_24GND2_CTRL_PIN, GPIO_DIR_MODE_OUT);
|
||
|
|
GPIOPadConfigSet(TASK_DPC_24GND2_CTRL_GPIO, TASK_DPC_24GND2_CTRL_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
|
||
|
|
GPIOPinWrite(TASK_DPC_24GND2_CTRL_GPIO, TASK_DPC_24GND2_CTRL_PIN, ~TASK_DPC_24GND2_CTRL_PIN);
|
||
|
|
|
||
|
|
SysCtlPeripheralEnable(TASK_DPC_12GND1_CTRL_CLK);
|
||
|
|
GPIODirModeSet(TASK_DPC_12GND1_CTRL_GPIO, TASK_DPC_12GND1_CTRL_PIN, GPIO_DIR_MODE_OUT);
|
||
|
|
GPIOPadConfigSet(TASK_DPC_12GND1_CTRL_GPIO, TASK_DPC_12GND1_CTRL_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
|
||
|
|
GPIOPinWrite(TASK_DPC_12GND1_CTRL_GPIO, TASK_DPC_12GND1_CTRL_PIN, ~TASK_DPC_12GND1_CTRL_PIN);
|
||
|
|
|
||
|
|
SysCtlPeripheralEnable(TASK_DPC_12GND2_CTRL_CLK);
|
||
|
|
GPIODirModeSet(TASK_DPC_12GND2_CTRL_GPIO, TASK_DPC_12GND2_CTRL_PIN, GPIO_DIR_MODE_OUT);
|
||
|
|
GPIOPadConfigSet(TASK_DPC_12GND2_CTRL_GPIO, TASK_DPC_12GND2_CTRL_PIN, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPD);
|
||
|
|
GPIOPinWrite(TASK_DPC_12GND2_CTRL_GPIO, TASK_DPC_12GND2_CTRL_PIN, ~TASK_DPC_12GND2_CTRL_PIN);
|
||
|
|
|
||
|
|
SysCtlPeripheralEnable(TASK_DPC_CO2_INPUT_CLK);
|
||
|
|
GPIODirModeSet(TASK_DPC_CO2_INPUT_GPIO, TASK_DPC_CO2_INPUT_PIN, GPIO_DIR_MODE_IN);
|
||
|
|
|
||
|
|
SysCtlPeripheralEnable(TASK_DPC_CTD_INPUT_CLK);
|
||
|
|
GPIODirModeSet(TASK_DPC_CTD_INPUT_GPIO, TASK_DPC_CTD_INPUT_PIN, GPIO_DIR_MODE_IN);
|
||
|
|
|
||
|
|
SysCtlPeripheralEnable(TASK_DPC_UV1_INPUT_CLK);
|
||
|
|
GPIODirModeSet(TASK_DPC_UV1_INPUT_GPIO, TASK_DPC_UV1_INPUT_PIN, GPIO_DIR_MODE_IN);
|
||
|
|
|
||
|
|
SysCtlPeripheralEnable(TASK_DPC_UV2_INPUT_CLK);
|
||
|
|
GPIODirModeSet(TASK_DPC_UV2_INPUT_GPIO, TASK_DPC_UV2_INPUT_PIN, GPIO_DIR_MODE_IN);
|
||
|
|
|
||
|
|
SysCtlPeripheralEnable(TASK_DPC_UV3_INPUT_CLK);
|
||
|
|
GPIODirModeSet(TASK_DPC_UV3_INPUT_GPIO, TASK_DPC_UV3_INPUT_PIN, GPIO_DIR_MODE_IN);
|
||
|
|
|
||
|
|
SysCtlPeripheralEnable(TASK_DPC_UV4_INPUT_CLK);
|
||
|
|
GPIODirModeSet(TASK_DPC_UV4_INPUT_GPIO, TASK_DPC_UV4_INPUT_PIN, GPIO_DIR_MODE_IN);
|
||
|
|
|
||
|
|
McuBspUartInit(TASK_DPC_UART_ID, TASK_DPC_UART_BANDRATE, TASK_DPC_UART_DATABIT,
|
||
|
|
TASK_DPC_UART_STOPBIT, TASK_DPC_UART_CHECKBIT);
|
||
|
|
McuBspUartStartRecv(TASK_DPC_UART_ID, TaskDpcUartRecvCallback);
|
||
|
|
gTaskDpcId = TaskWatchdogRegEvent("TaskDpc");
|
||
|
|
}
|
||
|
|
|
||
|
|
void TaskDpc(void *arg)
|
||
|
|
{
|
||
|
|
int i;
|
||
|
|
while (1) {
|
||
|
|
OSTimeDly(5);
|
||
|
|
TaskWatchdogFreed(gTaskDpcId);
|
||
|
|
for (i = 0; i < 10; i++) {
|
||
|
|
if (gDpcUartBuf[i].RecvStatus == TASK_DPC_DATA_HANDLING) {
|
||
|
|
if (NULL != strstr((char *)gDpcUartBuf[i].RecvBuf, STATUS_RUN_ASK_CMD)) {
|
||
|
|
gTaskDpcRunEnable = 1;
|
||
|
|
} else if (NULL != strstr((char *)gDpcUartBuf[i].RecvBuf, STATUS_OUTPUT_ASK_CMD)) {
|
||
|
|
gTaskDpcOutputEnable = 1;
|
||
|
|
} else if (NULL != strstr((char *)gDpcUartBuf[i].RecvBuf, RESTART_ASK_CMD)) {
|
||
|
|
SysCtlReset();
|
||
|
|
}
|
||
|
|
TaskUpcCommClearDataStatus(i);
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (gTaskDpcRunEnable == 1) {
|
||
|
|
/* 控制 */
|
||
|
|
TaskDpcGndCtrl(1);
|
||
|
|
TaskDpcGndGet(TASK_DPC_375GND_ID);
|
||
|
|
TaskDpcGndGet(TASK_DPC_48GND_ID);
|
||
|
|
TaskDpcGndGet(TASK_DPC_24GND_ID);
|
||
|
|
TaskDpcGndGet(TASK_DPC_12GND_ID);
|
||
|
|
TaskDpcGndCtrl(0);
|
||
|
|
McuBspAdcGetValue(TASK_DPC_375V_VADC_ID, &gDpcRunAskData.V375);
|
||
|
|
McuBspAdcGetValue(TASK_DPC_375V_IADC_ID, &gDpcRunAskData.I375);
|
||
|
|
McuBspAdcGetValue(TASK_DPC_48V_VADC_ID, &gDpcRunAskData.V48);
|
||
|
|
McuBspAdcGetValue(TASK_DPC_48V_IADC_ID, &gDpcRunAskData.I48);
|
||
|
|
McuBspAdcGetValue(TASK_DPC_12V_VADC_ID, &gDpcRunAskData.V12);
|
||
|
|
McuBspAdcGetValue(TASK_DPC_12V_IADC_ID, &gDpcRunAskData.I12);
|
||
|
|
gDpcRunAskData.Status = 1;
|
||
|
|
TaskDpcSend();
|
||
|
|
gTaskDpcRunEnable = 0;
|
||
|
|
}
|
||
|
|
if (gTaskDpcOutputEnable == 1) {
|
||
|
|
if (TASK_DPC_CO2_INPUT_PIN == GPIOPinRead(TASK_DPC_CO2_INPUT_GPIO, TASK_DPC_CO2_INPUT_PIN)) {
|
||
|
|
gDpcOutputAskData.CO2In = 1;
|
||
|
|
} else {
|
||
|
|
gDpcOutputAskData.CO2In = 0;
|
||
|
|
}
|
||
|
|
if (TASK_DPC_CTD_INPUT_PIN == GPIOPinRead(TASK_DPC_CTD_INPUT_GPIO, TASK_DPC_CTD_INPUT_PIN)) {
|
||
|
|
gDpcOutputAskData.CTDIn = 1;
|
||
|
|
} else {
|
||
|
|
gDpcOutputAskData.CTDIn = 0;
|
||
|
|
}
|
||
|
|
if (TASK_DPC_UV1_INPUT_PIN == GPIOPinRead(TASK_DPC_UV1_INPUT_GPIO, TASK_DPC_UV1_INPUT_PIN)) {
|
||
|
|
gDpcOutputAskData.UV1In = 1;
|
||
|
|
} else {
|
||
|
|
gDpcOutputAskData.UV1In = 0;
|
||
|
|
}
|
||
|
|
if (TASK_DPC_UV2_INPUT_PIN == GPIOPinRead(TASK_DPC_UV2_INPUT_GPIO, TASK_DPC_UV2_INPUT_PIN)) {
|
||
|
|
gDpcOutputAskData.UV2In = 1;
|
||
|
|
} else {
|
||
|
|
gDpcOutputAskData.UV2In = 0;
|
||
|
|
}
|
||
|
|
if (TASK_DPC_UV3_INPUT_PIN == GPIOPinRead(TASK_DPC_UV3_INPUT_GPIO, TASK_DPC_UV3_INPUT_PIN)) {
|
||
|
|
gDpcOutputAskData.UV3In = 1;
|
||
|
|
} else {
|
||
|
|
gDpcOutputAskData.UV3In = 0;
|
||
|
|
}
|
||
|
|
if (TASK_DPC_UV4_INPUT_PIN == GPIOPinRead(TASK_DPC_UV4_INPUT_GPIO, TASK_DPC_UV4_INPUT_PIN)) {
|
||
|
|
gDpcOutputAskData.UV4In = 1;
|
||
|
|
} else {
|
||
|
|
gDpcOutputAskData.UV4In = 0;
|
||
|
|
}
|
||
|
|
McuBspAdcGetValue(TASK_DPC_VEDIO_V_ID, &gDpcOutputAskData.VedioV);
|
||
|
|
McuBspAdcGetValue(TASK_DPC_VEDIO_I_ID, &gDpcOutputAskData.VedioI);
|
||
|
|
gDpcOutputAskData.Status = 1;
|
||
|
|
gTaskDpcOutputEnable = 0;
|
||
|
|
TaskDpcSend();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
static void TaskDpcGndGet(uint8_t DpcGndId)
|
||
|
|
{
|
||
|
|
float Value1;
|
||
|
|
float Value2;
|
||
|
|
float Value1All;
|
||
|
|
float Value2All;
|
||
|
|
int i = 0;
|
||
|
|
if (DpcGndId == TASK_DPC_375GND_ID) {
|
||
|
|
GPIOPinWrite(TASK_DPC_375GND1_CTRL_GPIO, TASK_DPC_375GND1_CTRL_PIN, TASK_DPC_375GND1_CTRL_PIN);
|
||
|
|
GPIOPinWrite(TASK_DPC_375GND2_CTRL_GPIO, TASK_DPC_375GND2_CTRL_PIN, TASK_DPC_375GND2_CTRL_PIN);
|
||
|
|
while(1) {
|
||
|
|
i++;
|
||
|
|
McuBspAdcGetValue(TASK_DPC_375GND1_ADC_ID, &Value1);
|
||
|
|
McuBspAdcGetValue(TASK_DPC_375GND2_ADC_ID, &Value2);
|
||
|
|
Value1All += Value1;
|
||
|
|
Value2All += Value2;
|
||
|
|
if (i > 1000) {
|
||
|
|
Value1All = Value1All / 1000.0f;
|
||
|
|
Value2All = Value2All / 1000.0f;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
OSTimeDly(1);
|
||
|
|
}
|
||
|
|
GPIOPinWrite(TASK_DPC_375GND1_CTRL_GPIO, TASK_DPC_375GND1_CTRL_PIN, ~TASK_DPC_375GND1_CTRL_PIN);
|
||
|
|
GPIOPinWrite(TASK_DPC_375GND2_CTRL_GPIO, TASK_DPC_375GND2_CTRL_PIN, ~TASK_DPC_375GND2_CTRL_PIN);
|
||
|
|
if (fabs(Value1All - Value2All) < 500) {
|
||
|
|
gDpcRunAskData.G375Sta = 0;
|
||
|
|
gDpcRunAskData.G375 = 0;
|
||
|
|
} else {
|
||
|
|
if ((Value1All - Value2All) > 0) {
|
||
|
|
gDpcRunAskData.G375 = (Value1All / Value2All) * 20.0f / 1000.0f;
|
||
|
|
gDpcRunAskData.G375Sta = 1;
|
||
|
|
} else {
|
||
|
|
gDpcRunAskData.G375 = (Value2All / Value1All) * 20.0f / 1000.0f;
|
||
|
|
gDpcRunAskData.G375Sta = 2;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
} else if (DpcGndId == TASK_DPC_48GND_ID) {
|
||
|
|
GPIOPinWrite(TASK_DPC_48GND1_CTRL_GPIO, TASK_DPC_48GND1_CTRL_PIN, TASK_DPC_48GND1_CTRL_PIN);
|
||
|
|
GPIOPinWrite(TASK_DPC_48GND2_CTRL_GPIO, TASK_DPC_48GND2_CTRL_PIN, TASK_DPC_48GND2_CTRL_PIN);
|
||
|
|
while(1) {
|
||
|
|
i++;
|
||
|
|
McuBspAdcGetValue(TASK_DPC_48GND1_ADC_ID, &Value1);
|
||
|
|
McuBspAdcGetValue(TASK_DPC_48GND2_ADC_ID, &Value2);
|
||
|
|
Value1All += Value1;
|
||
|
|
Value2All += Value2;
|
||
|
|
if (i > 1000) {
|
||
|
|
Value1All = Value1All / 1000.0f;
|
||
|
|
Value2All = Value2All / 1000.0f;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
OSTimeDly(1);
|
||
|
|
}
|
||
|
|
GPIOPinWrite(TASK_DPC_48GND1_CTRL_GPIO, TASK_DPC_48GND1_CTRL_PIN, ~TASK_DPC_48GND1_CTRL_PIN);
|
||
|
|
GPIOPinWrite(TASK_DPC_48GND2_CTRL_GPIO, TASK_DPC_48GND2_CTRL_PIN, ~TASK_DPC_48GND2_CTRL_PIN);
|
||
|
|
if (fabs(Value1All - Value2All) < 500) {
|
||
|
|
gDpcRunAskData.G48Sta = 0;
|
||
|
|
gDpcRunAskData.G48 = 0;
|
||
|
|
} else {
|
||
|
|
if ((Value1All - Value2All) > 0) {
|
||
|
|
gDpcRunAskData.G48 = (Value1 / Value2) * 10.5f / 1000.0f;
|
||
|
|
gDpcRunAskData.G48Sta = 1;
|
||
|
|
} else {
|
||
|
|
gDpcRunAskData.G48 = (Value2 / Value1) * 10.5f / 1000.0f;
|
||
|
|
gDpcRunAskData.G48Sta = 2;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
} else if (DpcGndId == TASK_DPC_24GND_ID) {
|
||
|
|
GPIOPinWrite(TASK_DPC_24GND1_CTRL_GPIO, TASK_DPC_24GND1_CTRL_PIN, TASK_DPC_24GND1_CTRL_PIN);
|
||
|
|
GPIOPinWrite(TASK_DPC_24GND2_CTRL_GPIO, TASK_DPC_24GND2_CTRL_PIN, TASK_DPC_24GND2_CTRL_PIN);
|
||
|
|
while(1) {
|
||
|
|
i++;
|
||
|
|
McuBspAdcGetValue(TASK_DPC_24GND1_ADC_ID, &Value1);
|
||
|
|
McuBspAdcGetValue(TASK_DPC_24GND2_ADC_ID, &Value2);
|
||
|
|
Value1All += Value1;
|
||
|
|
Value2All += Value2;
|
||
|
|
if (i > 1000) {
|
||
|
|
Value1All = Value1All / 1000.0f;
|
||
|
|
Value2All = Value2All / 1000.0f;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
OSTimeDly(1);
|
||
|
|
}
|
||
|
|
GPIOPinWrite(TASK_DPC_24GND1_CTRL_GPIO, TASK_DPC_24GND1_CTRL_PIN, ~TASK_DPC_24GND1_CTRL_PIN);
|
||
|
|
GPIOPinWrite(TASK_DPC_24GND2_CTRL_GPIO, TASK_DPC_24GND2_CTRL_PIN, ~TASK_DPC_24GND2_CTRL_PIN);
|
||
|
|
if (fabs(Value1All - Value2All) < 500) {
|
||
|
|
gDpcRunAskData.G24Sta = 0;
|
||
|
|
gDpcRunAskData.G24 = 0;
|
||
|
|
} else {
|
||
|
|
if ((Value1All - Value2All) > 0) {
|
||
|
|
gDpcRunAskData.G24 = (Value1 / Value2) * 11.0f / 1000.0f;
|
||
|
|
gDpcRunAskData.G24Sta = 1;
|
||
|
|
} else {
|
||
|
|
gDpcRunAskData.G24 = (Value2 / Value1) * 11.0f / 1000.0f;
|
||
|
|
gDpcRunAskData.G24Sta = 2;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
} else if (DpcGndId == TASK_DPC_12GND_ID) {
|
||
|
|
GPIOPinWrite(TASK_DPC_12GND1_CTRL_GPIO, TASK_DPC_12GND1_CTRL_PIN, TASK_DPC_12GND1_CTRL_PIN);
|
||
|
|
GPIOPinWrite(TASK_DPC_12GND2_CTRL_GPIO, TASK_DPC_12GND2_CTRL_PIN, TASK_DPC_12GND2_CTRL_PIN);
|
||
|
|
while(1) {
|
||
|
|
i++;
|
||
|
|
McuBspAdcGetValue(TASK_DPC_12GND1_ADC_ID, &Value1);
|
||
|
|
McuBspAdcGetValue(TASK_DPC_12GND2_ADC_ID, &Value2);
|
||
|
|
Value1All += Value1;
|
||
|
|
Value2All += Value2;
|
||
|
|
if (i > 1000) {
|
||
|
|
Value1All = Value1All / 1000.0f;
|
||
|
|
Value2All = Value2All / 1000.0f;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
OSTimeDly(1);
|
||
|
|
}
|
||
|
|
GPIOPinWrite(TASK_DPC_12GND1_CTRL_GPIO, TASK_DPC_12GND1_CTRL_PIN, ~TASK_DPC_12GND1_CTRL_PIN);
|
||
|
|
GPIOPinWrite(TASK_DPC_12GND2_CTRL_GPIO, TASK_DPC_12GND2_CTRL_PIN, ~TASK_DPC_12GND2_CTRL_PIN);
|
||
|
|
if (fabs(Value1All - Value2All) < 500) {
|
||
|
|
gDpcRunAskData.G12Sta = 0;
|
||
|
|
gDpcRunAskData.G12 = 0;
|
||
|
|
} else {
|
||
|
|
if ((Value1All - Value2All) > 0) {
|
||
|
|
gDpcRunAskData.G12 = (Value1 / Value2) * 12.0f / 1000.0f;
|
||
|
|
gDpcRunAskData.G12Sta = 1;
|
||
|
|
} else {
|
||
|
|
gDpcRunAskData.G12 = (Value2 / Value1) * 12.0f / 1000.0f;
|
||
|
|
gDpcRunAskData.G12Sta = 2;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
static void TaskDpcGndCtrl(int flag)
|
||
|
|
{
|
||
|
|
if (flag == 0) {
|
||
|
|
GPIOPinWrite(TASK_DPC_GND_CTRL_GPIO, TASK_DPC_GND_CTRL_PIN, ~TASK_DPC_GND_CTRL_PIN);
|
||
|
|
} else {
|
||
|
|
GPIOPinWrite(TASK_DPC_GND_CTRL_GPIO, TASK_DPC_GND_CTRL_PIN, TASK_DPC_GND_CTRL_PIN);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
static void TaskDpcSend(void)
|
||
|
|
{
|
||
|
|
if (gDpcRunAskData.Status == 1) {
|
||
|
|
sprintf(gTaskDpcSendBuf, "AABB,%0.2f,%0.2f,%0.2f,%0.2f,%0.2f,%0.2f,%0.2f,%0.2f,%0.2f,%0.2f,%d,%d,%d,%d\n",
|
||
|
|
gDpcRunAskData.V375, gDpcRunAskData.I375, gDpcRunAskData.V48, gDpcRunAskData.I48,
|
||
|
|
gDpcRunAskData.V12, gDpcRunAskData.I12, gDpcRunAskData.G375, gDpcRunAskData.G48,
|
||
|
|
gDpcRunAskData.G24, gDpcRunAskData.G12, gDpcRunAskData.G375Sta, gDpcRunAskData.G48Sta,
|
||
|
|
gDpcRunAskData.G24Sta, gDpcRunAskData.G12Sta);
|
||
|
|
McuBspUartSendData(TASK_DPC_UART_ID, (uint8_t*)gTaskDpcSendBuf, strlen(gTaskDpcSendBuf));
|
||
|
|
gDpcRunAskData.Status = 0;
|
||
|
|
}
|
||
|
|
if (gDpcOutputAskData.Status == 1) {
|
||
|
|
sprintf(gTaskDpcSendBuf, "EEFF,%d,%d,%d,%d,%d,%d,%0.2f,%0.2f\n", gDpcOutputAskData.CO2In,
|
||
|
|
gDpcOutputAskData.CTDIn, gDpcOutputAskData.UV1In, gDpcOutputAskData.UV2In, gDpcOutputAskData.UV3In,
|
||
|
|
gDpcOutputAskData.UV4In, gDpcOutputAskData.VedioV, gDpcOutputAskData.VedioI);
|
||
|
|
McuBspUartSendData(TASK_DPC_UART_ID, (uint8_t*)gTaskDpcSendBuf, strlen(gTaskDpcSendBuf));
|
||
|
|
gDpcOutputAskData.Status = 0;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
static void TaskDpcUartRecvCallback(unsigned char rData)
|
||
|
|
{
|
||
|
|
int i;
|
||
|
|
for (i = 0; i < 10; i++) {
|
||
|
|
if (gDpcUartBuf[i].RecvStatus == TASK_DPC_DATA_SORTING) {
|
||
|
|
gDpcUartBuf[i].RecvBuf[gDpcUartBuf[i].RecvCount] = rData;
|
||
|
|
gDpcUartBuf[i].RecvCount++;
|
||
|
|
gDpcUartBuf[i].RecvCount = gDpcUartBuf[i].RecvCount % 32;
|
||
|
|
if (rData == '\n') {
|
||
|
|
gDpcUartBuf[i].RecvStatus = TASK_DPC_DATA_HANDLING;
|
||
|
|
}
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
for (i = 0; i < 10; i++) {
|
||
|
|
if (gDpcUartBuf[i].RecvStatus == TASK_DPC_DATA_IDLING) {
|
||
|
|
gDpcUartBuf[i].RecvBuf[gDpcUartBuf[i].RecvCount] = rData;
|
||
|
|
gDpcUartBuf[i].RecvCount++;
|
||
|
|
gDpcUartBuf[i].RecvCount = gDpcUartBuf[i].RecvCount % 32;
|
||
|
|
if (rData == '\n') {
|
||
|
|
gDpcUartBuf[i].RecvStatus = TASK_DPC_DATA_HANDLING;
|
||
|
|
}
|
||
|
|
gDpcUartBuf[i].RecvStatus = TASK_DPC_DATA_SORTING;
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/* 清除接收buf */
|
||
|
|
static void TaskUpcCommClearDataStatus(uint8_t CountId)
|
||
|
|
{
|
||
|
|
gDpcUartBuf[CountId].RecvStatus = TASK_DPC_DATA_IDLING;
|
||
|
|
gDpcUartBuf[CountId].RecvCount = 0;
|
||
|
|
}
|