реклама на сайте
подробности

 
 
> typedef union в NiosII, упаковка
torik
сообщение Feb 25 2011, 09:29
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Обявляем такой вот тип в ниосе:
Код
typedef union _CAN_ID
{
    struct {
        unsigned    r1        : 3;
        unsigned    prior    : 3;
        unsigned    sid        : 8;
        unsigned    did        : 8;
        unsigned     mes        : 10;
    } id;
    struct {
        unsigned int        d;
    } w;
    struct {
        unsigned char        d[4];
    } b;
} CAN_ID;


С полем mes, которое 10 бит, возникают проблемы. Вот результат с тестовым числом:
Код
id = 0x01000100

d0 = 0
d1 = 8
d2 = 0
d3 = 1

prior = 0
did = 0
sid = 20
mes = 4


Т.е. возникло смещение на 2 бита. Компилятор хочет выровнять все по 8-бит границе.
Нельзя это победить какими-нибудь директивами компилятора?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 17:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01338 секунд с 7
ELECTRONIX ©2004-2016