Commit 7f78eb75 authored by Juraj Lieskovský's avatar Juraj Lieskovský Committed by Anas Nashif
Browse files

drivers: sensor: st: qdec_stm32: addition of fractional part



The fractional part of the qdec sensor readout is set to zero (val2 =
0).

Changed the format of the run time data to Q26.6 and adjusted the
assignment of val1 and val2 accordingly.

Signed-off-by: default avatarJuraj Lieskovský <lieskovsky.juraj@gmail.com>
parent 3f58d498
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@ struct qdec_stm32_dev_cfg {

/* Device run time data */
struct qdec_stm32_dev_data {
	int32_t position;
	uint32_t position;
};

static int qdec_stm32_fetch(const struct device *dev, enum sensor_channel chan)
@@ -56,7 +56,9 @@ static int qdec_stm32_fetch(const struct device *dev, enum sensor_channel chan)
	 * can be ignored
	 */
	counter_value = LL_TIM_GetCounter(dev_cfg->timer_inst) % dev_cfg->counts_per_revolution;
	dev_data->position = (counter_value * 360) / dev_cfg->counts_per_revolution;

	/* The angle calculated in the fixed-point format (Q26.6 format) */
	dev_data->position = (counter_value * 23040) / dev_cfg->counts_per_revolution;

	return 0;
}
@@ -67,8 +69,8 @@ static int qdec_stm32_get(const struct device *dev, enum sensor_channel chan,
	struct qdec_stm32_dev_data *const dev_data = dev->data;

	if (chan == SENSOR_CHAN_ROTATION) {
		val->val1 = dev_data->position;
		val->val2 = 0;
		val->val1 = dev_data->position >> 6;
		val->val2 = (dev_data->position & 0x3F) * 15625;
	} else {
		return -ENOTSUP;
	}