Also;
Merkwürdigerweise erhalte ich wenn ich es EINFACH so schreibe:
Das "genauste" Ergebnis: 200....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;
wenn man rechnet: 1023/800 = 1,27875. mit uint16_t sind macht das: 1
also.... für nix.....
mit
kommt raus: 156... ??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;







Zitieren

Lesezeichen