Also;

Merkwürdigerweise erhalte ich wenn ich es EINFACH so schreibe:

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_neu;   // Aufbereitete Stellgröße 

	uint16_t way_akt;   // Rohe-Potistellung
	uint16_t way_nutz;
	uint16_t factor; 
	uint16_t x; 



	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; 
    
	way_nutz = (way_max - way_min);
    

	factor = 1023 / way_nutz; 
	x = way_akt / factor;
	
	
	way_neu = x; 
	way_neu = ((way_neu)>>2); 
    


	PORTC = way_neu;
Das "genauste" Ergebnis: 200....

wenn man rechnet: 1023/800 = 1,27875. mit uint16_t sind macht das: 1

also.... für nix.....



mit
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_neu;   // Aufbereitete Stellgröße 

	uint16_t way_akt;   // Rohe-Potistellung
	
	uint16_t way_nutz;
	
	double factor; 
	double x; 



	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; 
    
	way_nutz = (way_max - way_min);
    

	factor = 1023.0000 / way_nutz; 
	x = way_akt / factor;
	
	
	way_neu = x; 
	way_neu = ((way_neu)>>2); 
    


	PORTC = way_neu;
kommt raus: 156... ??