Hallo
ich möchte auf meinem AVR folgende Rechnung durchführen.
Allerdings funktioniert das nicht richtig. Wenn z.b alle Elemente von line_values 0 sind und nur das 1 einen anderen Wert hat müsste line_estimate 1000 sein, es schwankt aber nur "wild" hin und her und erreicht zeitweise negative bzw. Werte kleiner 1000 die es niemals erreichen dürfte. Meine Vermutung ist das ich noch irgendwo "typecasten" muss, ich weiss aber nicht woCode:uint16_t line_estimate = 0; uint32_t wa_numerator = 0; uint16_t wa_denominator = 0; uint16_t line_values[8]; //Werte zwischen 0...1023 [...] //line values werden eingelesen und befüllt for(uint8_t i=0;i<8;i++) { wa_numerator += line_values[i] * (i+1) *1000; wa_denominator += line_values[i]; } line_estimate = wa_numerator/wa_denominator; //Ausgabe char buffer[20]; lcd_puts(itoa(line_estimate, buffer, 10));![]()
Hat irgendjemand eine Erklärung für dieses seltsame Verhalten bzw. kann mir sagen wo der Fehler liegt?







Zitieren

Lesezeichen