struct base
{
u8 base_version;
u8 sndmsg_pause_s;
u8 snd_buzzer_s;
u8 reserve[20];
u16 id_obj;
u32 wav_start_byte;
u16 wav_lenght_pkt;
u16 crc16val;
};
и если передавать как (u16*)base (То есть кусок памяти это как N-ое количесво шестнадцатиразрядных ) то четные и нечетные u8 меняются местами из-за того что на МК u16 Little Endian а по протоколу Big Endian. Точнее из-за функции переворачивания. То есть либо эту функцию дефайном блокировать. Либо другие варианты