Files

62 lines
1.4 KiB
C
Executable File

#pragma once
#include <stdint.h>
typedef enum{
RELAY_AUX0 = 0,
RELAY_AUX1,
RELAY3,
RELAY_DC,
RELAY_AC,
RELAY_CP,
RELAY_CC,
RELAY_DC1,
//
RELAY_COUNT
} relay_t;
void RELAY_Write(relay_t num, uint8_t state);
uint8_t RELAY_Read(relay_t num);
void Init_Peripheral();
uint8_t GBT_LockGetState();
void GBT_Lock(uint8_t state);
uint8_t SW_GetAddr();
void ADC_Select_Channel(uint32_t ch);
uint8_t ADC_TryLock(void);
void ADC_LockBlocking(void);
void ADC_Unlock(void);
int16_t GBT_ReadTemp(uint8_t ch);
int16_t CONN_ReadTemp(uint8_t ch);
typedef enum{
IN_SW0 = 0,
IN_SW1,
IN0,
IN_ESTOP,
IN_FB1,
IN_CONT_FB_DC,
ISO_IN,
} inputNum_t;
uint8_t IN_ReadInput(inputNum_t input_n);
// Версия устройства
#define VERSION_OFFSET (0x1E4)
typedef struct __attribute__((packed)) {
uint32_t serialNumber; // Байты 0-3
uint8_t stationType; // Байт 4
uint8_t boardVersion; // Байт 5
uint8_t addrEdcan; // Байт 6
uint8_t maxPower; // Байт 7
uint8_t pad[7]; // bytes 8-14, see edcan.h
uint16_t connector1CurrentLimitA; // Байты 15-16, A; 0 = legacy PSU_MAX_CURRENT
uint8_t reserved[45]; // Байты 17-63
} InfoBlock_t;
extern InfoBlock_t *InfoBlock;
void Board_LoadInfoBlockLimits(void);
uint16_t Board_GetConnectorCurrentLimit_0p1A(void);
uint16_t Board_ClampCurrent_0p1A(uint16_t current_0p1A);