#ifndef AS5600L_H #define AS5600L_H #include "hardware/i2c.h" #include "pico/stdlib.h" #include "pico/time.h" #include #include #include #define I2C_TIMEOUT_US (100000) #define AS560x_STATUS_REG (0x0B) #define AS560x_RAW_ANGLE_REG (0x0C) #define AS5600L_ADDRESS 0x40 #define ENCODER_RESOLUTION 4096 typedef struct { i2c_inst_t *I2C_PORT; int FREQUENCE; int I2C_SDA_PIN; int I2C_SCL_PIN; } AS5600L_I2C; typedef struct { AS5600L_I2C serial_instance; int last_angle; int curr_angle ; int abs_pos ; int start_pos; } AS5600L; void as560x_init(AS5600L* as5600l, i2c_inst_t *I2C_ID, int frq , int sda, int scl); int update_pos(AS5600L* as5600l); int __bswap16(int value); void i2cError(); int as560xReadReg(AS5600L* as5600l,int addr, bool wide, int mask); void AS560x_print_reg16(AS5600L* as5600l,const char *formatStr, int addr, int mask); void AS560x_print_reg8(AS5600L* as5600l,const char *formatStr, int addr, uint8_t mask); int as560xReadAngle(AS5600L* as5600l); uint8_t as560xGetStatus(AS5600L* as5600l); void sensorData(AS5600L* as5600l); #endif /* AS5600L_H */