/** * @file MT6816_ATY.h * * @param Project DEVICE_DRIVER_ATY_LIB * * @author ATY * * @copyright * - Copyright 2017 - 2026 MZ-ATY * - This code follows: * - MZ-ATY Various Contents Joint Statement - * * https://mengze.top/MZ-ATY_VCJS * - CC 4.0 BY-NC-SA - * * https://creativecommons.org/licenses/by-nc-sa/4.0/ * - Your use will be deemed to have accepted the terms of this statement. * * @brief functions of MT6816 magnetic encoder for C platform * * @version * - 1_01_251222 > ATY * -# Preliminary version, first Release ******************************************************************************** */ #ifndef __MT6816_ATY_H #define __MT6816_ATY_H #include "INCLUDE_ATY.h" /******************************* For user *************************************/ /******************************************************************************/ struct MT6816_ATY_Dev{ void (*nssSet)(uint8_t level); uint8_t (*spiProcess)(uint8_t* data_t, uint16_t len, uint8_t rw); uint16_t angleValue; float angle; float angleLast; float angleStart; float angleTotal; uint32_t turnCount; uint8_t start; uint8_t error; uint16_t zeroPoint; uint8_t angleReverseDir; uint8_t lock; }; // MT6816 Register Addresses #define MT6816_REG_ANGLE_13_6 0x03 #define MT6816_REG_ANGLE_5_0 0x04 #define MT6816_REG_ANGLE_OVER_SPEED 0x05 #define MT6816_PARITY_CHECK_MASK 0x01 #define MT6816_NO_MAG_WARNING_MASK 0x02 #define MT6816_OVER_SPEED_MASK 0x08 uint8_t MT6816_ParityCheck(struct MT6816_ATY_Dev* dev, uint16_t data); uint8_t MT6816_ErrorCheck(struct MT6816_ATY_Dev* dev, uint8_t* data); uint8_t MT6816_ReadAngleBase(struct MT6816_ATY_Dev* dev); uint8_t MT6816_ReadAngleFull(struct MT6816_ATY_Dev* dev); uint16_t MT6816_SetZeroPoint(struct MT6816_ATY_Dev* dev); float MT6816_CalculateAngle(struct MT6816_ATY_Dev* dev, uint16_t angle); float MT6816_CalculateAngleReal(struct MT6816_ATY_Dev* dev, uint16_t angle); uint32_t MT6816_TurnCount(struct MT6816_ATY_Dev* dev); uint32_t MT6816_TurnCountOffset(struct MT6816_ATY_Dev* dev); void MT6816_TurnCountOffsetStart(struct MT6816_ATY_Dev* dev, uint8_t dir); void MT6816_TurnCountOffsetStop(struct MT6816_ATY_Dev* dev); #endif /* __MT6816_ATY_H */ /******************************** End Of File *********************************/