5#define AMT22_SPI_CDIV SPIDiv256
15 amt->trans.slave_idx =
amt->config->slave_idx;
16 amt->trans.input_buf =
amt->spi_input_buf;
17 amt->trans.output_buf =
amt->spi_output_buf;
33 amt->trans.output_buf[0] = 0x00;
34 amt->trans.output_buf[1] = 0x00;
35 amt->trans.output_length = 2;
36 amt->trans.input_length = 2;
39 amt->trans.output_buf[0] = 0x00;
40 amt->trans.output_buf[1] = 0xA0;
41 amt->trans.output_buf[2] = 0x00;
42 amt->trans.output_buf[3] = 0x00;
43 amt->trans.output_length = 4;
44 amt->trans.input_length = 4;
70 uint16_t position = (p0 << 8 | p1) & 0x3fff;
81 turns = (
t0 << 8 |
t1);
85 amt->position = position;
104 if((
even == ((p0 & 0x40) >> 6)) && (
odd == ((p0 & 0x80) >> 7))) {
void amt22_periodic(amt22_t *amt)
void amt22_init(amt22_t *amt, amt22_config_t *conf)
static void amt22_thd(void *arg)
bool amt22_read(amt22_t *amt)
int16_t amt22_get_turns(amt22_t *amt)
uint16_t amt22_get_position(amt22_t *amt)
static bool amt22_checkbit(uint8_t p0, uint8_t p1)
@ AMT22_14_SINGLE
14-bits, single-turn
@ AMT22_14_MULTI
14-bits, multi-turn
@ AMT22_12_SINGLE
12-bits, single-turn
@ AMT22_12_MULTI
12-bits, multi-turn
int pprz_mtx_unlock(pprz_mutex_t *mtx)
void pprz_bsem_init(pprz_bsem_t *bsem, bool taken)
int pprz_thread_create(pprz_thread_t *thread, size_t size, const char *name, uint8_t prio, void(*pf)(void *), void *arg)
Creates a new thread whose stack is dynamically allocated.
int pprz_mtx_init(pprz_mutex_t *mtx)
int pprz_mtx_lock(pprz_mutex_t *mtx)
void pprz_bsem_signal(pprz_bsem_t *bsem)
void pprz_bsem_wait(pprz_bsem_t *bsem)
enum SPITransactionStatus spi_blocking_transceive(struct spi_periph *p, struct spi_transaction *t, float timeout)
Perform a spi transaction (blocking).
@ SPICpolIdleLow
CPOL = 0.
@ SPISelectUnselect
slave is selected before transaction and unselected after
unsigned short uint16_t
Typedef defining 16 bit unsigned short type.
short int16_t
Typedef defining 16 bit short type.
unsigned char uint8_t
Typedef defining 8 bit unsigned char type.