@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