#pragma once #if BITS_BIG_ENDIAN == 1 #error Bit structures defined in this file is not portable to BE #endif #define LP5562_ADDRESS 0x60 typedef enum { EngExecHold=0b00, EngExecStep=0b01, EngExecRun=0b10, EngExecPC=0b11, } EngExec; typedef struct { EngExec ENG3_EXEC:2; EngExec ENG2_EXEC:2; EngExec ENG1_EXEC:2; bool CHIP_EN:1; bool LOG_EN:1; } Reg00_Enable; typedef enum { EngModeDisable=0b00, EngModeLoad=0b01, EngModeRun=0b10, EngModeDirect=0b11, } EngMode; typedef struct { EngMode ENG3_MODE:2; EngMode ENG2_MODE:2; EngMode ENG1_MODE:2; uint8_t reserved:2; } Reg01_OpMode; typedef struct { bool INT_CLK_EN:1; bool CLK_DET_EN:1; uint8_t reserved0:3; bool PS_EN:1; bool PWM_HF:1; uint8_t reserved1:1; } Reg08_Config; typedef struct { uint8_t pc:3; uint8_t reserved:5; } Reg09_Engine1PC; typedef struct { uint8_t pc:3; uint8_t reserved:5; } Reg0A_Engine2PC; typedef struct { uint8_t pc:3; uint8_t reserved:5; } Reg0B_Engine3PC; typedef struct { bool ENG3_INT:1; bool ENG2_INT:1; bool ENG1_INT:1; bool EXT_CLK_USED:1; uint8_t reserved:5; } Reg0C_Status; typedef struct { uint8_t value; } Reg0D_Reset; typedef enum { EngSelectI2C=0b00, EngSelectEngine1=0b01, EngSelectEngine2=0b10, EngSelectEngine3=0b11, } EngSelect; typedef struct { EngSelect blue:2; EngSelect green:2; EngSelect red:2; EngSelect white:2; } Reg70_LedMap;