Esempio n. 1
0
static SUMMING_TYPE getAverage(AVERAGER * pAverager)
{
	SUMMING_TYPE sum = 0;
	uint8_t count = 0;
	if (pAverager)
	{
		if (pAverager->iWrite || pAverager->full)
		{
			uint8_t n = 0;
			count = pAverager->full ? pAverager->maxIndex : pAverager->iWrite - 1;
			for (n = 0; n <= count; n++)
			{
				sum += getData(pAverager, n);
			}
		}
		else
		{
			sum = 0;
		}
	}
	else
	{
		sum = 0;
	}
	sum = div_round(sum, count+1);
	return sum;
}
Esempio n. 2
0
uint16_t POTDIVIDER_GetADCFromResistance(POT_DIVIDER * pDivider, uint32_t resistance)
{
	uint64_t adc = 0UL;
	
	if (pDivider)
	{
		switch(pDivider->eDividerType)
		{
		case FIXED_PULLDOWN:
			adc = pDivider->maxAdcReading * pDivider->rDivider;
			adc = div_round(adc, pDivider->rDivider + resistance);
			break;
		case FIXED_PULLUP:
			adc = pDivider->maxAdcReading * (uint64_t)resistance;
			adc = div_round(adc, pDivider->rDivider + resistance);
			break;
		}
	}
	
	return (uint16_t)adc;
}
Esempio n. 3
0
static void show_voltage(void)
{
	uint32_t voltage;

	adc_init();
	voltage = adc_get(AIN_BATTERY);
	adc_stop();

	voltage = div_round(1100l * 1024, voltage);

	digits[0] = numbers[voltage / 10 / 10 / 10 % 10] | LCD_DOT;
	digits[1] = numbers[voltage / 10 / 10 % 10];
	digits[2] = numbers[voltage / 10 % 10];
	digits[3] = numbers[voltage % 10];
	if (usb_enabled)
		digits[3] |= LCD_DOT;
}
Esempio n. 4
0
static uint32_t getOtherResistanceWithFixedPulldown(POT_DIVIDER * pDivider, uint16_t adcReading)
{
	uint32_t resistance = 0UL;

	if (adcReading == 0)
	{
		resistance = POTDIVIDER_GetInfiniteResistance();
	}
	else
	{
		// D = U(M/A - 1) = UM/A - U -> avoid precision loss
		resistance = pDivider->rDivider * pDivider->maxAdcReading;
		resistance = div_round(resistance, adcReading);
		resistance -= pDivider->rDivider;
	}
	return resistance;
}
Esempio n. 5
0
static uint32_t getOtherResistanceWithFixedPullup(POT_DIVIDER * pDivider, uint16_t adcReading)
{
	uint32_t resistance = pDivider->rDivider * adcReading;
	resistance = div_round(resistance, (pDivider->maxAdcReading - adcReading));
	return resistance;
}