#ifndef AS5601_H #define AS5061_H typedef struct AS5601_Magnet { unsigned char magnet_status; unsigned char AGC; unsigned char MAGNITUDE_H4; unsigned char MAGNITUDE_L8; } AS5601_Magnet_t; typedef struct AS5601 { unsigned char id; unsigned char status; AS5601_Magnet_t magnet; unsigned short zero_pos; unsigned short angle; unsigned short raw_angle; } AS5601_t; typedef union AS5601_CONF { unsigned short conf; struct { unsigned char sf : 2; unsigned char FTH : 3; unsigned char WD : 1; unsigned char reserved1 : 2; unsigned char PM : 2; unsigned char HYST : 2; unsigned char reserved2 : 4; } bit; } AS5601_CONF_t; typedef struct AS5601_Config { unsigned short zero_pos; AS5601_CONF_t CONF; unsigned char ABN; unsigned char PUSHTHR; } AS5601_Config_t; typedef enum AS5601PowerMode { NOM = 0x0, LPM1 = 1, LPM2 = 2, LPM3 = 3 } AS5601PowerMode_t; typedef enum AS5601Hysteresis { OFF = 0x0, LSB1 = 0x1, LSB2 = 0x2, LSB3 = 0x3 } AS5601Hysteresis_t; typedef enum AS5601SlowFilter { SlowFilter_16x = 0x0, SlowFilter_8x = 0x1, SlowFilter_4x = 0x2, SlowFilter_2x = 0x3 } AS5601SlowFilter_t; typedef enum AS5601FastFilter { FastFilter_slow = 0x0, FastFilter_6LSB = 0x1, FastFilter_7LSB = 0x2, FastFilter_9LSB = 0x3, FastFilter_18LSB = 0x4, FastFilter_21LSB = 0x5, FastFilter_24LSB = 0x6, FastFilter_10LSB = 0x7 } AS5601FastFilter_t; typedef enum AS5601ABN { ABN_61Hz = 0x0, ABN_122Hz = 0x1, ABN_244Hz = 0x2, ABN_488Hz = 0x3, ABN_976Hz = 0x4, ABN_1k9Hz = 0x5, ABN_3k9Hz = 0x6, ABN_7k8Hz = 0x7, ABN_15k6Hz = 0x8 } AS5601ABN_t; extern uint16_t Hal_GetHallSensorRawValue(uint8_t channel); #endif