Доброго дня! Подскажите, как преобразовать/присвоить значение переменной типа unsigned long (uint32_t), переменной типа uint16_t. При этом значения 4 байтной переменной не превышают диапазон 2 байтной.
C++:
uint16_t curLSB, rSh, calValue;
uint32_t tmpVal = (uint32_t) rSh * curLSB; // curLSB = 203, rSh = 1773
Serial.print("tmpVal = "); Serial.println(tmpVal); // tmpVal = 359919 - тут правильно
tmpVal = 512000000 / tmpVal;
Serial.print("tmpVal = "); Serial.println(tmpVal); // tmpVal = 1422 - тут тоже
calValue = (uint16_t)(tmpVal));
Serial.print("calValue = "); Serial.println(calValue); // calValue = 72 - ошибка
