@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:
Gruß DirkCode:/** * 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]); }







Zitieren

Lesezeichen