mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
86d751d4d3
In `dac_util_map(...)` the expression `((value - min) * UINT16_MAX)` was cast to a 16 bit unsigned, then divided by `(max - min)`. This means that anytime `(value - min) != 0` the numerator was truncated prior to being divided and then returned. This patch modifies the expression so that the downcast to 16 bits is performed as the last operation.
34 lines
713 B
C
34 lines
713 B
C
/*
|
|
* Copyright (C) 2015 Freie Universität Berlin
|
|
*
|
|
* This file is subject to the terms and conditions of the GNU Lesser
|
|
* General Public License v2.1. See the file LICENSE in the top level
|
|
* directory for more details.
|
|
*/
|
|
|
|
/**
|
|
* @ingroup sys_analog_util
|
|
* @{
|
|
*
|
|
* @file
|
|
* @brief DAC utility function implementation
|
|
*
|
|
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
|
|
*
|
|
* @}
|
|
*/
|
|
|
|
#include <limits.h>
|
|
|
|
#include "analog_util.h"
|
|
|
|
uint16_t dac_util_map(int value, int min, int max)
|
|
{
|
|
return (uint16_t)(((value - min) * UINT16_MAX) / (max - min));
|
|
}
|
|
|
|
uint16_t dac_util_mapf(float value, float min, float max)
|
|
{
|
|
return (uint16_t)(((value - min) * UINT16_MAX) / (max - min));
|
|
}
|