WTF.... Du hast Recht.
Er tut jetzt so wie es sein soll.
Ich verstehe es trotzdem nicht, warum die Variable diff, ohne cast, richtig ausgegeben wird.
Hier der vollständige code:
Die Variable liveData[...] ist als uint8_t liveData[30] definiert, die dann per usart rausgeschoben wird. Der Empfänger sieht den diff-Wert aber korrekt...Code:int16_t calculate_pump_current (uint16_t Ua, uint16_t Ua_cal) { float diff; diff = (int16_t)Ua - (int16_t)Ua_cal; liveData[26] = low(diff); liveData[27] = high(diff); return ((diff) / (SENSOR_SHUNT * 8.0) * 1000); }
Hab jetzt den ganzen Mist rausgeworfen und nun sieht es so aus:
und rechnet auch richtig.Code:int16_t calculate_pump_current (uint16_t Ua, uint16_t Ua_cal) { return (((int16_t)Ua - (int16_t)Ua_cal) / (SENSOR_SHUNT * 8.0) * 1000); }
Danke schön!







Zitieren

Lesezeichen