Ich arbeite mit dem Atmel Studio 6.1.2674 - SP1
In der stdint.h
Code:#define INT32_MAX 0x7fffffffLL #define INT32_MIN (-INT32_MAX - 1LL) #define UINT32_MAX (__CONCAT(INT32_MAX, U) * 2ULL + 1ULL) #else /* !__USING_MINT8 */ #define INT32_MIN (-INT32_MAX - 1L)
Ich habe die 32bit Variable extra mit 65500 initialisiert und dann hochgezählt und musste feststellen, dass diese bei 65535 überläuft. Also nur 16bit.Ich habe die Regeln zur Typumwandlung nicht präsent, vermute aber folgendes: "Fester Wert" ist eine Konstante, damit int und 16-Bit breit. TCNT1 ist ebenfalls 16-Bit breit. Also bekommst du eine 16-Bit-Multiplikation, die läuft über und das Ergebnis landet in deiner 32-Bit-Variablen.
mfg
Lesezeichen