inventor 0 24 апреля, 2012 Опубликовано 24 апреля, 2012 · Жалоба Делаю проект внутри AVR Studio что то мне говорит, что компилятор все выравнивает по 4 байта у меня есть структура, описаная примерно так: typedef struct { u8 len; /* Длина пакета без контрольной суммы */ u32 sec;/* Таймер - время первого измерения */ u16 msec;/* миллисекунда первого измерения в пакете */ struct { /* Акселерометр - три координаты ускорений */ u32 acc_x; u32 acc_y; u32 acc_z; } data[20]; u16 crc16; } acc_pack; не хочет он писать внутрь u16, гадит. другие подобные структуры, где вперемешку идут u8 u16 u32 так же гадятся. есть какое нибудь решение для этого компилятора, подобные #pragma pack(1)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jasper 0 25 апреля, 2012 Опубликовано 25 апреля, 2012 · Жалоба Компилятор все равно же GCC. Пишите #pragma pack( 1 ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
inventor 0 25 апреля, 2012 Опубликовано 25 апреля, 2012 · Жалоба Компилятор все равно же GCC. Пишите #pragma pack( 1 ) не работает pragma pack на avrfreaks.net подсказали: Declare your structs like this: Code: typedef struct { ... .... ... }__ attribute__ ((packed)) tstSomeStruct; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pyroman 2 27 октября, 2012 Опубликовано 27 октября, 2012 · Жалоба Столкнулся с похожей проблемой в IAR. Тоже выравнивает структуру по 4 байта. Выход такой: __packed typedef struct { ... }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pyroman 2 28 октября, 2012 Опубликовано 28 октября, 2012 · Жалоба Столкнулся с похожей проблемой в IAR. Тоже выравнивает структуру по 4 байта. Выход такой: __packed typedef struct { ... }; Не, вот так : typedef __packed struct { ... }; Или #pragma pack(1) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться