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

 
 
> Ох уж эти ENUM
inventor
сообщение Sep 10 2015, 14:24
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 524
Регистрация: 25-12-08
Из: Москва
Пользователь №: 42 748



Опять засада, правда почти разобрался

вобщем делаю в IAR определения для АЦП-ешки

CODE

typedef struct {
ADS131_ModeEn mode; /* режим работы */
ADS131_FreqEn sps; /* частота АЦП */
ADS131_PgaEn pga; /* PGA */
ADS131_MuxEn mux; /* Мультиплексор на входе */
ADS131_TestEn test_sign; /* Тестовый сигнал */
ADS131_TestFreqEn test_freq; /* Частота тестового сигнала */
u8 bitmap; /* Включенные каналы: 1 канал включен, 0 - выключен */
u8 file_len; /* Длина файла записи в часах */
} ADS131_Params;

//ADS131_XXX - определены как enum


Для того чтобы посмотреть, что там у меня получается -сделал прогу в С++ Builder
чтобы можно было настройки АЦП передавать своей DSP плате по посл. порту.
посмотрел в билдере sizeof(ADS131_Params)
опа - 28 байт
думаю, ну ладно, у меня объем буфера приема большой - не страшно
На приемной стороне нули, вместо адекватных значений.
Квырялся полдня - потом все же посмотрел, что IAR трактует енумы как байты
поэтому значения попадают на поле с нулем.
Надо исправить, но не знаю как как!
не хочу менять на u8 - так как названия ADS131_XXX более понятны
ищу опции у IAR "treat enum as int" или чего то подобное
не могу найти в опциях.
Как это правильно сделать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Sep 11 2015, 06:59
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (inventor @ Sep 10 2015, 17:24) *
//ADS131_XXX - определены как enum

Зачем вообще это ТАК сделано? В чем смысл наворачивания через enum типов, вместо описания нормальной структуры?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Sep 11 2015, 07:07
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(zltigo @ Sep 11 2015, 09:59) *
Зачем вообще это ТАК сделано? В чем смысл наворачивания через enum типов, вместо описания нормальной структуры?


смысл в том, что если мы в ХХХmode попытаемся засунуть константу ХХХfreq, то получим по рукам от компилятора (по крайней мере в плюсах, насчет голого си - не уверен)

Правда enum до с++11 проблематично использовать там, где нужен фиксированный размер. Но это уже другой вопрос sm.gif
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 13:03
Рейтинг@Mail.ru


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