@Dasive:
Der Typ int16_t reicht ja von -32768 bis +32767.
Das wird auch mit writeInteger so ausgegeben.
Wenn eine deiner Werte also > 32767 wird, wird er negativ dargestellt.
Alternative:
Den Typ uint16_t nehmen (0..65535).
Den unsigned int Wert müßtest du dann aber auch mit einer geeigneten Funktion ausgeben.
Ich hänge dir mal eine Funktion an, die (u)int16_t und int32_t darstellen kann:
Code:
/**
* Write a long number (with specified base) to the UART.
*
* Example:
*
* // Write a hexadecimal number to the UART:
* writeLong(0xAACC,16);
* // Instead of 16 you can also write "HEX" as this is defined in the
* // RP6uart.h :
* writeLong(0xAACC, HEX);
* // Other Formats:
* writeLong(1024,DEC); // Decimal
* writeLong(044,OCT); // Octal
* writeLong(0b11010111,BIN); // Binary
*/
void writeLong(int32_t number, uint8_t base)
{char buffer[33];
ltoa(number, &buffer[0], base);
writeString(&buffer[0]);
}
Gruß Dirk
Lesezeichen