Hallo zusammen,

Ich komm mal gleich zur Sache:

Zunächst wird eine Hebelstellung per POTI über den ADC ausgelesen.

Dieser Wert liegt zwischen 0 und 1023. = way_akt

Ich nutze aber nicht den vollen weg des Potis, sondern nur
zB von 100 bis 900.

Diese Werte habe ich in way_min und way_max geschrieben.


Ich benötige am scholuss eine 8Bit-breite Zahl.

Also habe ich mir folgende umrechnung ausgedacht:

Code:
uint8_t way_rev;		// Reverse-Bits
uint16_t way_min = 100;	// Reverenz Minimalwert
uint16_t way_mid;	// Reverenz Mittelstellung
uint16_t way_max = 900;	// Reverenz Maximalwert

uint16_t way_akt;	// Rohe-Potistellung
uint16_t way_neu;	// Aufbereitete Stellgröße





	way_akt = ADC_wert(0);

	if( way_akt < way_min ){ way_akt = way_min; }
	if( way_akt > way_max ){ way_akt = way_max; }
	
	way_akt = way_akt - way_min;
	
	double factor;
	double x;
	
	factor = 1023 / (way_max - way_min);
	x = (way_akt / factor);
	
	way_neu = x;
	way_neu = ((way_neu)>>2);
	


PORTC = way_neu;

nunja, leider ist die berechnung nicht so genau.

Deshalb erreiche ich nie meine vollen 255!

Wie könnte ich das am dümmsten lösen? Ich habe schon sämtliche formeln und Co ausprobiert....

Für eure Hilfe wäre ich euch mehr als Dankbar!