/** * @file hx710a.c * * @param Project DEVICE_GENERAL_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 HX710A for C platform (Dev-style) * * @version * - 1_01_251112 > ATY * -# Add Dev-style interface aligned to LED_ATY; keep legacy APIs ******************************************************************************** */ #ifndef __HX710A_C #define __HX710A_C #include "hx710a.h" uint8_t HX710A_InitDev(struct HX710A_ATY_Dev* dev) { __ATY_LOCK(dev); if (dev->sckSet) dev->sckSet(__ATY_HL_H); if (dev->delay_ms) dev->delay_ms(2); if (dev->sckSet) dev->sckSet(__ATY_HL_L); if (dev->delay_ms) dev->delay_ms(2); if (dev->debugEnable == 1 && dev->LOG) dev->LOG("\r\nHX710A init done."); __ATY_UNLOCK(dev); return 0; } uint8_t HX710A_IsReadyDev(struct HX710A_ATY_Dev* dev) { return (dev->doutRead && dev->doutRead() == __ATY_HL_L) ? 1 : 0; } uint8_t HX710A_ReadRawDev(uint8_t p, uint32_t* raw, struct HX710A_ATY_Dev* dev) { __ATY_LOCK(dev); uint32_t data = 0; if (dev->sckSet) dev->sckSet(__ATY_HL_L); while (!HX710A_IsReadyDev(dev)) { /* wait ready */ } for (uint8_t i = 0; i < 24; i++) { if (dev->sckSet) dev->sckSet(__ATY_HL_H); data = (data << 1); if (dev->sckSet) dev->sckSet(__ATY_HL_L); if (dev->doutRead) data += dev->doutRead(); } if (dev->sckSet) dev->sckSet(__ATY_HL_H); data = data ^ 0x800000; // sign bit adjust if (dev->sckSet) dev->sckSet(__ATY_HL_L); if (p == 1 || p == 2) { // internal temp select pulse if (dev->sckSet) dev->sckSet(__ATY_HL_H); if (dev->sckSet) dev->sckSet(__ATY_HL_L); } if (p == 2) { // 40Hz out select pulse if (dev->sckSet) dev->sckSet(__ATY_HL_H); if (dev->sckSet) dev->sckSet(__ATY_HL_L); } *raw = data; if (dev->debugEnable == 1 && dev->LOG) dev->LOG("\r\nHX710A read raw."); __ATY_UNLOCK(dev); return 0; } // No legacy APIs retained; use Dev-style interfaces only. #endif /* __HX710A_C */ /******************************** End Of File *********************************/