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... ??
Lesezeichen