Вы используете байты (множественное число), но uint16_t
состоит из двух байтов, поэтому я предполагаю, что вы имеете в виду наименее значимый байт (единственное).Если это так, вот один из способов получить его:
uint8_t lsb = ((uint8_t)(((uint32_t)(val)) & 0xFF))