... ret = (TempH * 1 + TempL /256); // <===Noch nicht gut! ...
Ja, sieht so aus. Es gibt sicher zahllose Beispiele um zwei Bytes zu einem Word zusammenzulöten.
(M)Eines wäre:
Code:
// ============================================================================== =
// ============================================================================== =
void I2CTST01 (void) // I2C-Testroutine
...
uint8_t btst1 = 0; // Read-back-Byte vom Slave
uint8_t btst2 = 0;
uint8_t btst3 = 0;
...
btst2 = i2c_read (ACK); //
btst3 = i2c_read (ACK); //
...
//#define uniq(LOW,HEIGHT) ((HEIGHT << 8)|LOW) // ###>>> Macro 2x 8Bit --> 16Bit
iword = uniq(btst3, btst4); // 2à 8Bit --> 16Bit
itoa(iword, zahlwort, 10); //
uart_puts("\tWert für Word4high3low\t"); // Ausgabe
uart_puts(zahlwort); //
...
// === Ende I2CTST01 (void) ============================
// ============================================================================== =
Die Makrodefiniton muss halt an irgendeiner Stelle deponiert werden - das ist Deine Freiheit. Ohne Makro gehts natürlich auch.
Lesezeichen