47 lines
785 B
C
47 lines
785 B
C
/*
|
|
* Angle_AS5600.c
|
|
*
|
|
* Created on: Jun 22, 2020
|
|
* Author: matth
|
|
*/
|
|
|
|
#include "Angle_AS5600.h"
|
|
|
|
bool Ang_AS5600_init(Ang_AS5600_t *ang, const char *name, I2C_DEV_t *dev)
|
|
{
|
|
ang->name = name;
|
|
ang->_dev = dev;
|
|
ang->angle = 0;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool Ang_AS5600_update(Ang_AS5600_t *ang)
|
|
{
|
|
bool rslt;
|
|
rslt = false;
|
|
uint8_t buff[4];
|
|
|
|
if (!I2C_DEV_begin(ang->_dev,1)) {
|
|
return rslt;
|
|
}
|
|
|
|
if (I2C_DEV_read_registers(ang->_dev, AS5600_STATUS, buff, 3))
|
|
{
|
|
ang->status = ((buff[0] & 0x38) >> 2);
|
|
if (ang->status == 0x8)
|
|
{
|
|
ang->status = 0u;
|
|
ang->angle = (((buff[1]&0x0F)<<8)+buff[2])*0.087890625f;
|
|
rslt = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
ang->status = 1u;
|
|
}
|
|
|
|
I2C_DEV_end(ang->_dev);
|
|
return rslt;
|
|
}
|